feat: 增加二维码前缀
diff --git a/.gitignore b/.gitignore
index ff0cd5c..4559f36 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,5 @@
.gradle
build
.idea
+dist
+*.tgz
diff --git a/Makefile b/Makefile
index 9ecdece..9972be8 100644
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,11 @@
CARGO ?=cargo
RM ?=rm
-NDK ?= $(ANDROID_NDK)
+TAR ?=tar
+NDK ?=$(ANDROID_NDK)
ANDROID_ARM64_STRIP ?= $(shell $(NDK)/ndk-which --abi arm64-v8a strip)
ANDROID_ARM_STRIP ?= $(shell $(NDK)/ndk-which --abi armeabi-v7a strip)
-.PHONY: clean
+.PHONY: clean dist
build:
@@ -15,8 +16,16 @@
$(ANDROID_ARM64_STRIP) target/aarch64-linux-android/release/libdlsmk.so
$(CARGO) build --target armv7-linux-androideabi --release
$(ANDROID_ARM_STRIP) target/armv7-linux-androideabi/release/libdlsmk.so
+ $(CARGO) build --target i686-linux-android --release
-
+dist:
+ mkdir -p dist/src/main/jniLibs/arm64-v8a
+ mkdir -p dist/src/main/jniLibs/armv7
+ cp target/aarch64-linux-android/release/libdlsmk.so dist/src/main/jniLibs/arm64-v8a/
+ cp target/armv7-linux-androideabi/release/libdlsmk.so dist/src/main/jniLibs/armv7/
+ cp -r java/src/main/java dist/src/main/
+ cp -r java/build.gradle java/setting.gradle java/gradle java/gradlew* dist/
+ $(TAR) cfvz dlqrcode-android.tgz dist/*
clean:
- $(RM) -rf target
+ $(CARGO) clean
diff --git a/dlqrcode/src/lib.rs b/dlqrcode/src/lib.rs
index 12dc747..a82b170 100644
--- a/dlqrcode/src/lib.rs
+++ b/dlqrcode/src/lib.rs
@@ -349,6 +349,7 @@
Ok(tac)
}
+#[allow(dead_code)]
fn vec_split_once(data: Vec<u8>, delimiter: u8) -> (Option<Vec<u8>>, Option<Vec<u8>>) {
let mut pos = 0;
while pos < data.len() && data[pos] != delimiter {
diff --git a/dlsmk/src/lib.rs b/dlsmk/src/lib.rs
index c8b6cba..9a0c320 100644
--- a/dlsmk/src/lib.rs
+++ b/dlsmk/src/lib.rs
@@ -48,6 +48,8 @@
use dlqrcode::DaliQrCode;
+ static QR_PREFIX : &str = "DLSMK_";
+
fn put_data(env: &JNIEnv, map: &JMap, key: &str, value: &str) {
map.put(
*env.new_string(key).unwrap(),
@@ -105,6 +107,18 @@
}
};
+ if !qrcode.starts_with(QR_PREFIX) {
+ put_data(&env, &qrdata, "error", "qrcode prefix error");
+ return JNI_FALSE;
+ }
+ let qrcode = match qrcode.strip_prefix(QR_PREFIX) {
+ Some(q) => String::from(q),
+ None => {
+ put_data(&env, &qrdata, "error", "qrcode prefix error");
+ return JNI_FALSE;
+ }
+ };
+
debug!("TOTP step <{}> , skew <{}>", step, skew);
let decoder = match DaliQrCode::new(key, None, Some(step), Some(skew), None) {
Ok(d) => d,
diff --git a/java/src/main/java/com/supwisdom/dlsmk/DLSMK.java b/java/src/main/java/com/supwisdom/dlsmk/DLSMK.java
index 916d7b2..d168587 100644
--- a/java/src/main/java/com/supwisdom/dlsmk/DLSMK.java
+++ b/java/src/main/java/com/supwisdom/dlsmk/DLSMK.java
@@ -36,7 +36,7 @@
String key = "wDp3_3NPEi-R0peokVv010GkDk1mRTp3tUB_lCEVRAAABQo=";
long systimeMillis = 1604469519L * 1000;
- String qrcode = "Szgp1QkGFy0DJ6mPVg4wMuOE5XuSe7eZrocdPDAs_iq_H7xzb10vQJwRfk6hn6-_fa6SRKRKd00gExbAShJOTgAj2urAPuQm_NxATJs26I4u6khR74iK7oubHjY1Z6qg";
+ String qrcode = "DLSMK_Szgp1QkGFy0DJ6mPVg4wMuOE5XuSe7eZrocdPDAs_iq_H7xzb10vQJwRfk6hn6-_fa6SRKRKd00gExbAShJOTgAj2urAPuQm_NxATJs26I4u6khR74iK7oubHjY1Z6qg";
Map<Object, Object> result = new HashMap();
long curr = System.currentTimeMillis();