@succinctlabs/react-native-zcam1 0.3.0 → 0.4.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Zcam1Sdk.podspec +2 -2
- package/android/CMakeLists.txt +114 -0
- package/android/build.gradle +213 -0
- package/android/cpp-adapter-proving.cpp +35 -0
- package/android/cpp-adapter.cpp +35 -0
- package/android/src/main/AndroidManifest.xml +5 -0
- package/android/src/main/java/com/succinctlabs/zcam1sdk/Zcam1CaptureModule.kt +156 -0
- package/android/src/main/java/com/succinctlabs/zcam1sdk/Zcam1CapturePackage.kt +38 -0
- package/android/src/main/java/com/succinctlabs/zcam1sdk/Zcam1ProvingModule.kt +43 -0
- package/android/src/main/java/com/succinctlabs/zcam1sdk/Zcam1ProvingPackage.kt +34 -0
- package/android/src/main/java/com/succinctlabs/zcam1sdk/Zcam1SdkModule.kt +43 -0
- package/android/src/main/java/com/succinctlabs/zcam1sdk/Zcam1SdkPackage.kt +34 -0
- package/android/src/main/java/com/succinctlabs/zcam1sdk/camera/CameraUtils.kt +80 -0
- package/android/src/main/java/com/succinctlabs/zcam1sdk/camera/Zcam1CameraService.kt +588 -0
- package/android/src/main/java/com/succinctlabs/zcam1sdk/camera/Zcam1CameraView.kt +107 -0
- package/android/src/main/java/com/succinctlabs/zcam1sdk/camera/Zcam1CameraViewManager.kt +33 -0
- package/android/src/main/java/com/succinctlabs/zcam1sdk/camera/Zcam1OrientationManager.kt +73 -0
- package/cpp/generated/zcam1_c2pa_utils.cpp +170 -365
- package/cpp/generated/zcam1_c2pa_utils.hpp +0 -4
- package/cpp/generated/zcam1_certs_utils.cpp +121 -250
- package/cpp/generated/zcam1_common.cpp +1871 -0
- package/cpp/generated/zcam1_common.hpp +52 -0
- package/cpp/generated/zcam1_verify_utils.cpp +138 -265
- package/cpp/generated/zcam1_verify_utils.hpp +2 -2
- package/cpp/proving/generated/zcam1_common.cpp +1871 -0
- package/cpp/proving/generated/zcam1_common.hpp +52 -0
- package/cpp/proving/generated/zcam1_proving_utils.cpp +355 -417
- package/cpp/proving/generated/zcam1_proving_utils.hpp +13 -17
- package/cpp/proving/zcam1-proving.cpp +2 -0
- package/cpp/zcam1-sdk.cpp +2 -0
- package/lib/module/bindings.js +4 -0
- package/lib/module/bindings.js.map +1 -1
- package/lib/module/camera.js +71 -13
- package/lib/module/camera.js.map +1 -1
- package/lib/module/capture.js +115 -38
- package/lib/module/capture.js.map +1 -1
- package/lib/module/common.js +18 -2
- package/lib/module/common.js.map +1 -1
- package/lib/module/generated/zcam1_c2pa_utils-ffi.js +4 -0
- package/lib/module/generated/zcam1_c2pa_utils-ffi.js.map +1 -1
- package/lib/module/generated/zcam1_c2pa_utils.js +117 -9
- package/lib/module/generated/zcam1_c2pa_utils.js.map +1 -1
- package/lib/module/generated/zcam1_certs_utils-ffi.js +4 -0
- package/lib/module/generated/zcam1_certs_utils-ffi.js.map +1 -1
- package/lib/module/generated/zcam1_certs_utils.js +6 -2
- package/lib/module/generated/zcam1_certs_utils.js.map +1 -1
- package/lib/module/generated/zcam1_common-ffi.js +47 -0
- package/lib/module/generated/zcam1_common-ffi.js.map +1 -0
- package/lib/module/generated/zcam1_common.js +60 -0
- package/lib/module/generated/zcam1_common.js.map +1 -0
- package/lib/module/generated/zcam1_proving_utils-ffi.js +4 -0
- package/lib/module/generated/zcam1_proving_utils-ffi.js.map +1 -1
- package/lib/module/generated/zcam1_proving_utils.js +53 -46
- package/lib/module/generated/zcam1_proving_utils.js.map +1 -1
- package/lib/module/generated/zcam1_verify_utils-ffi.js +4 -0
- package/lib/module/generated/zcam1_verify_utils-ffi.js.map +1 -1
- package/lib/module/generated/zcam1_verify_utils.js +70 -22
- package/lib/module/generated/zcam1_verify_utils.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/proving/NativeZcam1Proving.js +1 -1
- package/lib/module/proving/index.js +1 -1
- package/lib/module/proving/index.js.map +1 -1
- package/lib/module/proving/prove.js +14 -8
- package/lib/module/proving/prove.js.map +1 -1
- package/lib/module/utils.js +19 -14
- package/lib/module/utils.js.map +1 -1
- package/lib/module/verify.js +14 -22
- package/lib/module/verify.js.map +1 -1
- package/lib/typescript/src/bindings.d.ts +3 -0
- package/lib/typescript/src/bindings.d.ts.map +1 -1
- package/lib/typescript/src/camera.d.ts +15 -0
- package/lib/typescript/src/camera.d.ts.map +1 -1
- package/lib/typescript/src/capture.d.ts +40 -1
- package/lib/typescript/src/capture.d.ts.map +1 -1
- package/lib/typescript/src/common.d.ts.map +1 -1
- package/lib/typescript/src/generated/zcam1_c2pa_utils-ffi.d.ts +37 -46
- package/lib/typescript/src/generated/zcam1_c2pa_utils-ffi.d.ts.map +1 -1
- package/lib/typescript/src/generated/zcam1_c2pa_utils.d.ts +110 -8
- package/lib/typescript/src/generated/zcam1_c2pa_utils.d.ts.map +1 -1
- package/lib/typescript/src/generated/zcam1_certs_utils-ffi.d.ts +27 -32
- package/lib/typescript/src/generated/zcam1_certs_utils-ffi.d.ts.map +1 -1
- package/lib/typescript/src/generated/zcam1_certs_utils.d.ts.map +1 -1
- package/lib/typescript/src/generated/zcam1_common-ffi.d.ts +77 -0
- package/lib/typescript/src/generated/zcam1_common-ffi.d.ts.map +1 -0
- package/lib/typescript/src/generated/zcam1_common.d.ts +17 -0
- package/lib/typescript/src/generated/zcam1_common.d.ts.map +1 -0
- package/lib/typescript/src/generated/zcam1_proving_utils-ffi.d.ts +44 -51
- package/lib/typescript/src/generated/zcam1_proving_utils-ffi.d.ts.map +1 -1
- package/lib/typescript/src/generated/zcam1_proving_utils.d.ts +26 -26
- package/lib/typescript/src/generated/zcam1_proving_utils.d.ts.map +1 -1
- package/lib/typescript/src/generated/zcam1_verify_utils-ffi.d.ts +29 -34
- package/lib/typescript/src/generated/zcam1_verify_utils-ffi.d.ts.map +1 -1
- package/lib/typescript/src/generated/zcam1_verify_utils.d.ts +94 -14
- package/lib/typescript/src/generated/zcam1_verify_utils.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/proving/NativeZcam1Proving.d.ts +1 -1
- package/lib/typescript/src/proving/index.d.ts +1 -1
- package/lib/typescript/src/proving/index.d.ts.map +1 -1
- package/lib/typescript/src/proving/prove.d.ts +3 -3
- package/lib/typescript/src/proving/prove.d.ts.map +1 -1
- package/lib/typescript/src/utils.d.ts.map +1 -1
- package/lib/typescript/src/verify.d.ts +4 -3
- package/lib/typescript/src/verify.d.ts.map +1 -1
- package/package.json +13 -6
- package/react-native.config.js +11 -0
- package/src/bindings.tsx +4 -0
- package/src/camera.tsx +116 -11
- package/src/capture.tsx +150 -53
- package/src/common.tsx +22 -2
- package/src/generated/zcam1_c2pa_utils-ffi.ts +42 -56
- package/src/generated/zcam1_c2pa_utils.ts +224 -67
- package/src/generated/zcam1_certs_utils-ffi.ts +33 -36
- package/src/generated/zcam1_certs_utils.ts +27 -24
- package/src/generated/zcam1_common-ffi.ts +183 -0
- package/src/generated/zcam1_common.ts +116 -0
- package/src/generated/zcam1_proving_utils-ffi.ts +54 -67
- package/src/generated/zcam1_proving_utils.ts +133 -138
- package/src/generated/zcam1_verify_utils-ffi.ts +39 -40
- package/src/generated/zcam1_verify_utils.ts +109 -47
- package/src/index.ts +1 -1
- package/src/proving/NativeZcam1Proving.ts +2 -2
- package/src/proving/index.ts +1 -1
- package/src/proving/prove.tsx +22 -11
- package/src/utils.ts +26 -20
- package/src/verify.tsx +25 -42
|
@@ -21,13 +21,13 @@ class NativeZcam1ProvingUtils : public jsi::HostObject {
|
|
|
21
21
|
jsi::Value cpp_uniffi_internal_fn_func_ffi__string_to_byte_length(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
22
22
|
jsi::Value cpp_uniffi_internal_fn_func_ffi__string_to_arraybuffer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
23
23
|
jsi::Value cpp_uniffi_internal_fn_func_ffi__arraybuffer_to_string(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
24
|
-
jsi::Value
|
|
25
|
-
jsi::Value
|
|
26
|
-
jsi::Value
|
|
27
|
-
jsi::Value
|
|
28
|
-
jsi::Value
|
|
29
|
-
jsi::Value
|
|
30
|
-
jsi::Value
|
|
24
|
+
jsi::Value cpp_uniffi_zcam1_proving_utils_fn_clone_provingclient(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
25
|
+
jsi::Value cpp_uniffi_zcam1_proving_utils_fn_free_provingclient(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
26
|
+
jsi::Value cpp_uniffi_zcam1_proving_utils_fn_constructor_provingclient_new(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
27
|
+
jsi::Value cpp_uniffi_zcam1_proving_utils_fn_constructor_provingclient_simulator(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
28
|
+
jsi::Value cpp_uniffi_zcam1_proving_utils_fn_method_provingclient_get_proof_status(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
29
|
+
jsi::Value cpp_uniffi_zcam1_proving_utils_fn_method_provingclient_request_proof(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
30
|
+
jsi::Value cpp_uniffi_zcam1_proving_utils_fn_method_provingclient_vk_hash(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
31
31
|
jsi::Value cpp_uniffi_zcam1_proving_utils_fn_init_callback_vtable_initialized(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
32
32
|
jsi::Value cpp_ffi_zcam1_proving_utils_rust_future_poll_u8(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
33
33
|
jsi::Value cpp_ffi_zcam1_proving_utils_rust_future_cancel_u8(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
@@ -69,10 +69,6 @@ class NativeZcam1ProvingUtils : public jsi::HostObject {
|
|
|
69
69
|
jsi::Value cpp_ffi_zcam1_proving_utils_rust_future_cancel_f64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
70
70
|
jsi::Value cpp_ffi_zcam1_proving_utils_rust_future_free_f64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
71
71
|
jsi::Value cpp_ffi_zcam1_proving_utils_rust_future_complete_f64(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
72
|
-
jsi::Value cpp_ffi_zcam1_proving_utils_rust_future_poll_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
73
|
-
jsi::Value cpp_ffi_zcam1_proving_utils_rust_future_cancel_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
74
|
-
jsi::Value cpp_ffi_zcam1_proving_utils_rust_future_free_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
75
|
-
jsi::Value cpp_ffi_zcam1_proving_utils_rust_future_complete_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
76
72
|
jsi::Value cpp_ffi_zcam1_proving_utils_rust_future_poll_rust_buffer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
77
73
|
jsi::Value cpp_ffi_zcam1_proving_utils_rust_future_cancel_rust_buffer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
78
74
|
jsi::Value cpp_ffi_zcam1_proving_utils_rust_future_free_rust_buffer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
@@ -81,14 +77,14 @@ class NativeZcam1ProvingUtils : public jsi::HostObject {
|
|
|
81
77
|
jsi::Value cpp_ffi_zcam1_proving_utils_rust_future_cancel_void(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
82
78
|
jsi::Value cpp_ffi_zcam1_proving_utils_rust_future_free_void(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
83
79
|
jsi::Value cpp_ffi_zcam1_proving_utils_rust_future_complete_void(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
84
|
-
jsi::Value
|
|
85
|
-
jsi::Value
|
|
86
|
-
jsi::Value
|
|
87
|
-
jsi::Value
|
|
88
|
-
jsi::Value
|
|
80
|
+
jsi::Value cpp_uniffi_zcam1_proving_utils_checksum_method_provingclient_get_proof_status(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
81
|
+
jsi::Value cpp_uniffi_zcam1_proving_utils_checksum_method_provingclient_request_proof(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
82
|
+
jsi::Value cpp_uniffi_zcam1_proving_utils_checksum_method_provingclient_vk_hash(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
83
|
+
jsi::Value cpp_uniffi_zcam1_proving_utils_checksum_constructor_provingclient_new(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
84
|
+
jsi::Value cpp_uniffi_zcam1_proving_utils_checksum_constructor_provingclient_simulator(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
89
85
|
jsi::Value cpp_uniffi_zcam1_proving_utils_checksum_method_initialized_initialized(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
90
86
|
jsi::Value cpp_ffi_zcam1_proving_utils_uniffi_contract_version(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
91
|
-
jsi::Value
|
|
87
|
+
jsi::Value cpp_uniffi_internal_fn_method_provingclient_ffi__bless_pointer(jsi::Runtime& rt, const jsi::Value& thisVal, const jsi::Value* args, size_t count);
|
|
92
88
|
|
|
93
89
|
public:
|
|
94
90
|
NativeZcam1ProvingUtils(jsi::Runtime &rt, std::shared_ptr<uniffi_runtime::UniffiCallInvoker> callInvoker);
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
// Generated by uniffi-bindgen-react-native
|
|
2
2
|
#include "zcam1-proving.h"
|
|
3
|
+
#include "generated/zcam1_common.hpp"
|
|
3
4
|
#include "generated/zcam1_proving_utils.hpp"
|
|
4
5
|
|
|
5
6
|
namespace zcam1proving {
|
|
6
7
|
using namespace facebook;
|
|
7
8
|
|
|
8
9
|
uint8_t installRustCrate(jsi::Runtime &runtime, std::shared_ptr<react::CallInvoker> callInvoker) {
|
|
10
|
+
NativeZcam1Common::registerModule(runtime, callInvoker);
|
|
9
11
|
NativeZcam1ProvingUtils::registerModule(runtime, callInvoker);
|
|
10
12
|
return true;
|
|
11
13
|
}
|
package/cpp/zcam1-sdk.cpp
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
#include "zcam1-sdk.h"
|
|
3
3
|
#include "generated/zcam1_c2pa_utils.hpp"
|
|
4
4
|
#include "generated/zcam1_certs_utils.hpp"
|
|
5
|
+
#include "generated/zcam1_common.hpp"
|
|
5
6
|
#include "generated/zcam1_verify_utils.hpp"
|
|
6
7
|
|
|
7
8
|
namespace zcam1sdk {
|
|
@@ -10,6 +11,7 @@ namespace zcam1sdk {
|
|
|
10
11
|
uint8_t installRustCrate(jsi::Runtime &runtime, std::shared_ptr<react::CallInvoker> callInvoker) {
|
|
11
12
|
NativeZcam1C2paUtils::registerModule(runtime, callInvoker);
|
|
12
13
|
NativeZcam1CertsUtils::registerModule(runtime, callInvoker);
|
|
14
|
+
NativeZcam1Common::registerModule(runtime, callInvoker);
|
|
13
15
|
NativeZcam1VerifyUtils::registerModule(runtime, callInvoker);
|
|
14
16
|
return true;
|
|
15
17
|
}
|
package/lib/module/bindings.js
CHANGED
|
@@ -15,6 +15,7 @@ if (!rustInstalled) {
|
|
|
15
15
|
// Export the generated bindings to the app.
|
|
16
16
|
export * from "./generated/zcam1_c2pa_utils.js";
|
|
17
17
|
export * from "./generated/zcam1_certs_utils.js";
|
|
18
|
+
export * from "./generated/zcam1_common.js";
|
|
18
19
|
export * from "./generated/zcam1_verify_utils.js";
|
|
19
20
|
|
|
20
21
|
// Now import the bindings so we can:
|
|
@@ -22,6 +23,7 @@ export * from "./generated/zcam1_verify_utils.js";
|
|
|
22
23
|
// - export them as namespaced objects as the default export.
|
|
23
24
|
import * as zcam1_c2pa_utils from "./generated/zcam1_c2pa_utils.js";
|
|
24
25
|
import * as zcam1_certs_utils from "./generated/zcam1_certs_utils.js";
|
|
26
|
+
import * as zcam1_common from "./generated/zcam1_common.js";
|
|
25
27
|
import * as zcam1_verify_utils from "./generated/zcam1_verify_utils.js";
|
|
26
28
|
|
|
27
29
|
// Initialize the generated bindings: mostly checksums, but also callbacks.
|
|
@@ -31,6 +33,7 @@ let initialized = false;
|
|
|
31
33
|
if (!initialized) {
|
|
32
34
|
zcam1_c2pa_utils.default.initialize();
|
|
33
35
|
zcam1_certs_utils.default.initialize();
|
|
36
|
+
zcam1_common.default.initialize();
|
|
34
37
|
zcam1_verify_utils.default.initialize();
|
|
35
38
|
initialized = true;
|
|
36
39
|
}
|
|
@@ -46,6 +49,7 @@ export async function uniffiInitAsync() {
|
|
|
46
49
|
export default {
|
|
47
50
|
zcam1_c2pa_utils,
|
|
48
51
|
zcam1_certs_utils,
|
|
52
|
+
zcam1_common,
|
|
49
53
|
zcam1_verify_utils
|
|
50
54
|
};
|
|
51
55
|
//# sourceMappingURL=bindings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["installer","rustInstalled","installRustCrate","zcam1_c2pa_utils","zcam1_certs_utils","zcam1_verify_utils","initialized","default","initialize","uniffiInitAsync"],"sourceRoot":"../../src","sources":["bindings.tsx"],"mappings":";;AAAA;AACA,OAAOA,SAAS,MAAM,qBAAkB;;AAExC;AACA;AACA;AACA,IAAIC,aAAa,GAAG,KAAK;AACzB,IAAI,CAACA,aAAa,EAAE;EAClBD,SAAS,CAACE,gBAAgB,CAAC,CAAC;EAC5BD,aAAa,GAAG,IAAI;AACtB;;AAEA;AACA,cAAc,iCAA8B;AAC5C,cAAc,kCAA+B;AAC7C,cAAc,mCAAgC;;AAE9C;AACA;AACA;AACA,OAAO,KAAKE,gBAAgB,MAAM,iCAA8B;AAChE,OAAO,KAAKC,iBAAiB,MAAM,kCAA+B;AAClE,OAAO,KAAKC,kBAAkB,MAAM,mCAAgC;;AAEpE;AACA;AACA;AACA,IAAIC,WAAW,GAAG,KAAK;AACvB,IAAI,CAACA,WAAW,EAAE;
|
|
1
|
+
{"version":3,"names":["installer","rustInstalled","installRustCrate","zcam1_c2pa_utils","zcam1_certs_utils","zcam1_common","zcam1_verify_utils","initialized","default","initialize","uniffiInitAsync"],"sourceRoot":"../../src","sources":["bindings.tsx"],"mappings":";;AAAA;AACA,OAAOA,SAAS,MAAM,qBAAkB;;AAExC;AACA;AACA;AACA,IAAIC,aAAa,GAAG,KAAK;AACzB,IAAI,CAACA,aAAa,EAAE;EAClBD,SAAS,CAACE,gBAAgB,CAAC,CAAC;EAC5BD,aAAa,GAAG,IAAI;AACtB;;AAEA;AACA,cAAc,iCAA8B;AAC5C,cAAc,kCAA+B;AAC7C,cAAc,6BAA0B;AACxC,cAAc,mCAAgC;;AAE9C;AACA;AACA;AACA,OAAO,KAAKE,gBAAgB,MAAM,iCAA8B;AAChE,OAAO,KAAKC,iBAAiB,MAAM,kCAA+B;AAClE,OAAO,KAAKC,YAAY,MAAM,6BAA0B;AACxD,OAAO,KAAKC,kBAAkB,MAAM,mCAAgC;;AAEpE;AACA;AACA;AACA,IAAIC,WAAW,GAAG,KAAK;AACvB,IAAI,CAACA,WAAW,EAAE;EAChBJ,gBAAgB,CAACK,OAAO,CAACC,UAAU,CAAC,CAAC;EACrCL,iBAAiB,CAACI,OAAO,CAACC,UAAU,CAAC,CAAC;EACtCJ,YAAY,CAACG,OAAO,CAACC,UAAU,CAAC,CAAC;EACjCH,kBAAkB,CAACE,OAAO,CAACC,UAAU,CAAC,CAAC;EACvCF,WAAW,GAAG,IAAI;AACpB;;AAEA;AACA;AACA;AACA,OAAO,eAAeG,eAAeA,CAAA,EAAG;EACtC;AAAA;;AAGF;AACA,eAAe;EACbP,gBAAgB;EAChBC,iBAAiB;EACjBC,YAAY;EACZC;AACF,CAAC","ignoreList":[]}
|
package/lib/module/camera.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import Geolocation from "@react-native-community/geolocation";
|
|
3
4
|
import JailMonkey from "jail-monkey";
|
|
4
5
|
import React from "react";
|
|
5
|
-
import { requireNativeComponent } from "react-native";
|
|
6
|
+
import { Platform, requireNativeComponent } from "react-native";
|
|
7
|
+
import { isEmulator } from "react-native-device-info";
|
|
6
8
|
import { Dirs, Util } from "react-native-file-access";
|
|
7
9
|
import { buildSelfSignedCertificate, computeHash, formatFromPath, ManifestEditor } from "./bindings.js";
|
|
8
10
|
import { ZPhoto } from "./capture.js";
|
|
@@ -346,6 +348,13 @@ export class ZCamera extends React.PureComponent {
|
|
|
346
348
|
const when = new Date().toISOString().replace("T", " ").split(".")[0];
|
|
347
349
|
const isJailBroken = JailMonkey.isJailBroken();
|
|
348
350
|
const isLocationSpoofingAvailable = JailMonkey.canMockLocation();
|
|
351
|
+
const location = await retrieveLocationData(this.props.captureTimestampEnabled, this.props.captureLocationEnabled);
|
|
352
|
+
const authenticityData = {
|
|
353
|
+
isJailBroken,
|
|
354
|
+
isLocationSpoofingAvailable,
|
|
355
|
+
isLocationAvailable: location.isLocationAvailable,
|
|
356
|
+
locationRetrievalStatus: location.locationRetrievalStatus
|
|
357
|
+
};
|
|
349
358
|
result.filePath = await embedBindings(result.filePath, when, {
|
|
350
359
|
deviceMake: result.deviceMake,
|
|
351
360
|
deviceModel: result.deviceModel,
|
|
@@ -362,11 +371,10 @@ export class ZCamera extends React.PureComponent {
|
|
|
362
371
|
audioCodec: result.audioCodec,
|
|
363
372
|
audioSampleRate: result.audioSampleRate,
|
|
364
373
|
audioChannels: result.audioChannels,
|
|
365
|
-
authenticityData
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
filmStyle: this.resolveFilmStyleInfo()
|
|
374
|
+
authenticityData,
|
|
375
|
+
filmStyle: this.resolveFilmStyleInfo(),
|
|
376
|
+
trustedTimestamp: location.trustedTimestamp,
|
|
377
|
+
location: location.coords
|
|
370
378
|
}, this.props.captureInfo, this.certChainPem);
|
|
371
379
|
return result;
|
|
372
380
|
} finally {
|
|
@@ -404,11 +412,18 @@ export class ZCamera extends React.PureComponent {
|
|
|
404
412
|
const exif = metadata["{Exif}"] ?? {};
|
|
405
413
|
const tiff = metadata["{TIFF}"] ?? {};
|
|
406
414
|
const when = tiff.DateTime || new Date().toISOString().replace("T", " ").split(".")[0];
|
|
407
|
-
const deviceMake = tiff.Make || "Apple";
|
|
415
|
+
const deviceMake = tiff.Make || (Platform.OS === "android" ? "Android" : "Apple");
|
|
408
416
|
const deviceModel = tiff.Model || "Unknown";
|
|
409
417
|
const softwareVersion = tiff.Software || "Unknown";
|
|
410
418
|
const isJailBroken = JailMonkey.isJailBroken();
|
|
411
419
|
const isLocationSpoofingAvailable = JailMonkey.canMockLocation();
|
|
420
|
+
const location = await retrieveLocationData(this.props.captureTimestampEnabled, this.props.captureLocationEnabled);
|
|
421
|
+
const authenticityData = {
|
|
422
|
+
isJailBroken,
|
|
423
|
+
isLocationSpoofingAvailable,
|
|
424
|
+
isLocationAvailable: location.isLocationAvailable,
|
|
425
|
+
locationRetrievalStatus: location.locationRetrievalStatus
|
|
426
|
+
};
|
|
412
427
|
const destinationPath = await embedBindings(originalPath, when, {
|
|
413
428
|
deviceMake: deviceMake,
|
|
414
429
|
deviceModel: deviceModel,
|
|
@@ -420,12 +435,11 @@ export class ZCamera extends React.PureComponent {
|
|
|
420
435
|
exposureTime: exif.ExposureTime,
|
|
421
436
|
depthOfField: exif.FNumber,
|
|
422
437
|
focalLength: exif.FocalLength,
|
|
423
|
-
authenticityData
|
|
424
|
-
isJailBroken,
|
|
425
|
-
isLocationSpoofingAvailable
|
|
426
|
-
},
|
|
438
|
+
authenticityData,
|
|
427
439
|
depthData: result.depthData,
|
|
428
|
-
filmStyle: this.resolveFilmStyleInfo()
|
|
440
|
+
filmStyle: this.resolveFilmStyleInfo(),
|
|
441
|
+
trustedTimestamp: location.trustedTimestamp,
|
|
442
|
+
location: location.coords
|
|
429
443
|
}, this.props.captureInfo, this.certChainPem);
|
|
430
444
|
return new ZPhoto(originalPath, destinationPath);
|
|
431
445
|
}
|
|
@@ -487,7 +501,11 @@ async function embedBindings(originalPath, when, metadata, captureInfo, certChai
|
|
|
487
501
|
throw new Error(`Unsupported file format: ${originalPath}`);
|
|
488
502
|
}
|
|
489
503
|
const destinationPath = Dirs.CacheDir + `/zcam-${Date.now()}-${Math.random().toString(36).slice(2, 10)}.${ext}`;
|
|
490
|
-
|
|
504
|
+
|
|
505
|
+
// On Android, pass the KeyStore alias so Rust signs via JNI.
|
|
506
|
+
// On iOS, pass the contentKeyId (SHA1 of public key) so Rust signs via Secure Enclave.
|
|
507
|
+
const keyTag = Platform.OS === "android" ? new TextEncoder().encode((await isEmulator()) ? "ZCAM1_MOCK_CONTENT_KEY_TAG" : "ZCAM1_CONTENT_KEY_TAG") : captureInfo.contentKeyId;
|
|
508
|
+
const manifestEditor = new ManifestEditor(originalPath, keyTag.buffer, certChainPem);
|
|
491
509
|
|
|
492
510
|
// Add the "capture" action to the manifest.
|
|
493
511
|
let normalizedMetadata = undefined;
|
|
@@ -510,4 +528,44 @@ async function embedBindings(originalPath, when, metadata, captureInfo, certChai
|
|
|
510
528
|
await manifestEditor.embedManifestToFile(destinationPath, format);
|
|
511
529
|
return destinationPath;
|
|
512
530
|
}
|
|
531
|
+
function retrieveLocationData(captureTimestampEnabled, captureLocationEnabled) {
|
|
532
|
+
if (!captureTimestampEnabled && !captureLocationEnabled) {
|
|
533
|
+
return Promise.resolve({
|
|
534
|
+
coords: undefined,
|
|
535
|
+
trustedTimestamp: undefined,
|
|
536
|
+
isLocationAvailable: undefined,
|
|
537
|
+
locationRetrievalStatus: undefined
|
|
538
|
+
});
|
|
539
|
+
}
|
|
540
|
+
return new Promise(resolve => {
|
|
541
|
+
Geolocation.getCurrentPosition(position => {
|
|
542
|
+
resolve({
|
|
543
|
+
coords: captureLocationEnabled ? {
|
|
544
|
+
latitude: position.coords.latitude.toFixed(6),
|
|
545
|
+
longitude: position.coords.longitude.toFixed(6),
|
|
546
|
+
altitude: position.coords.altitude?.toFixed(6),
|
|
547
|
+
accuracy: position.coords.accuracy.toFixed(6),
|
|
548
|
+
altitudeAccuracy: position.coords.altitudeAccuracy?.toFixed(6)
|
|
549
|
+
} : undefined,
|
|
550
|
+
trustedTimestamp: captureTimestampEnabled ? BigInt(Math.trunc(position.timestamp)) : undefined,
|
|
551
|
+
isLocationAvailable: true,
|
|
552
|
+
locationRetrievalStatus: "success"
|
|
553
|
+
});
|
|
554
|
+
}, error => {
|
|
555
|
+
console.warn(`[ZCAM1] failed to retrieve GPS location data: ${error.message}`);
|
|
556
|
+
resolve({
|
|
557
|
+
coords: undefined,
|
|
558
|
+
trustedTimestamp: undefined,
|
|
559
|
+
isLocationAvailable: false,
|
|
560
|
+
locationRetrievalStatus: error.message
|
|
561
|
+
});
|
|
562
|
+
}, {
|
|
563
|
+
timeout: 1000,
|
|
564
|
+
// 1 second
|
|
565
|
+
maximumAge: 60 * 1000,
|
|
566
|
+
// 1 minute
|
|
567
|
+
enableHighAccuracy: true
|
|
568
|
+
});
|
|
569
|
+
});
|
|
570
|
+
}
|
|
513
571
|
//# sourceMappingURL=camera.js.map
|
package/lib/module/camera.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["JailMonkey","React","requireNativeComponent","Dirs","Util","buildSelfSignedCertificate","computeHash","formatFromPath","ManifestEditor","ZPhoto","NativeZcam1Sdk","generateAppAttestAssertion","stripFileProtocol","jsx","_jsx","CERT_KEY_TAG","DEFAULT_FILM_STYLE_RECIPES","normal","mellow","type","config","temperature","tint","value","highlights","shadows","nostalgic","bw","intensity","color","r","g","b","Zcam1CameraView","ZCamera","PureComponent","nativeRef","createRef","recordingInProgress","lastVideoStartResult","constructor","props","certChainPem","certChain","pem","console","warn","captureInfo","contentPublicKey","resolveFilmStyleInfo","filmStyle","filmStyleOverrides","customFilmStyles","isOverride","undefined","isCustom","source","recipe","name","JSON","stringify","getMinZoom","getMaxZoom","getSwitchOverZoomFactors","hasUltraWideCamera","getExposureRange","resetExposure","focusAtPoint","x","y","setZoomAnimated","factor","getDeviceDiagnostics","isDepthSupported","hasDepthZoomLimitations","getDepthSupportedZoomRanges","startVideoRecording","position","options","Error","result","startNativeVideoRecording","maxDurationSeconds","e","stopVideoRecording","stopNativeVideoRecording","when","Date","toISOString","replace","split","isJailBroken","isLocationSpoofingAvailable","canMockLocation","filePath","embedBindings","deviceMake","deviceModel","softwareVersion","format","hasAudio","durationSeconds","fileSizeBytes","width","height","rotationDegrees","frameRate","videoCodec","audioCodec","audioSampleRate","audioChannels","authenticityData","takePhoto","captureFormat","flash","includeDepthData","aspectRatio","orientation","takeNativePhoto","originalPath","metadata","exif","tiff","DateTime","Make","Model","Software","destinationPath","xResolution","PixelXDimension","yResolution","PixelYDimension","Orientation","iso","ISOSpeedRatings","toString","exposureTime","ExposureTime","depthOfField","FNumber","focalLength","FocalLength","depthData","render","isActive","zoom","torch","exposure","depthEnabled","onOrientationChange","style","mergedFilmStyleOverrides","ref","flex","event","nativeEvent","dataHash","ext","extname","CacheDir","now","Math","random","slice","manifestEditor","contentKeyId","buffer","normalizedMetadata","indexOf","addPhotoMetadataAction","addVideoMetadataAction","assertion","deviceKeyId","addAssertion","app_id","appId","device_key_id","attestation","embedManifestToFile"],"sourceRoot":"../../src","sources":["camera.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Geolocation","JailMonkey","React","Platform","requireNativeComponent","isEmulator","Dirs","Util","buildSelfSignedCertificate","computeHash","formatFromPath","ManifestEditor","ZPhoto","NativeZcam1Sdk","generateAppAttestAssertion","stripFileProtocol","jsx","_jsx","CERT_KEY_TAG","DEFAULT_FILM_STYLE_RECIPES","normal","mellow","type","config","temperature","tint","value","highlights","shadows","nostalgic","bw","intensity","color","r","g","b","Zcam1CameraView","ZCamera","PureComponent","nativeRef","createRef","recordingInProgress","lastVideoStartResult","constructor","props","certChainPem","certChain","pem","console","warn","captureInfo","contentPublicKey","resolveFilmStyleInfo","filmStyle","filmStyleOverrides","customFilmStyles","isOverride","undefined","isCustom","source","recipe","name","JSON","stringify","getMinZoom","getMaxZoom","getSwitchOverZoomFactors","hasUltraWideCamera","getExposureRange","resetExposure","focusAtPoint","x","y","setZoomAnimated","factor","getDeviceDiagnostics","isDepthSupported","hasDepthZoomLimitations","getDepthSupportedZoomRanges","startVideoRecording","position","options","Error","result","startNativeVideoRecording","maxDurationSeconds","e","stopVideoRecording","stopNativeVideoRecording","when","Date","toISOString","replace","split","isJailBroken","isLocationSpoofingAvailable","canMockLocation","location","retrieveLocationData","captureTimestampEnabled","captureLocationEnabled","authenticityData","isLocationAvailable","locationRetrievalStatus","filePath","embedBindings","deviceMake","deviceModel","softwareVersion","format","hasAudio","durationSeconds","fileSizeBytes","width","height","rotationDegrees","frameRate","videoCodec","audioCodec","audioSampleRate","audioChannels","trustedTimestamp","coords","takePhoto","captureFormat","flash","includeDepthData","aspectRatio","orientation","takeNativePhoto","originalPath","metadata","exif","tiff","DateTime","Make","OS","Model","Software","destinationPath","xResolution","PixelXDimension","yResolution","PixelYDimension","Orientation","iso","ISOSpeedRatings","toString","exposureTime","ExposureTime","depthOfField","FNumber","focalLength","FocalLength","depthData","render","isActive","zoom","torch","exposure","depthEnabled","onOrientationChange","style","mergedFilmStyleOverrides","ref","flex","event","nativeEvent","dataHash","ext","extname","CacheDir","now","Math","random","slice","keyTag","TextEncoder","encode","contentKeyId","manifestEditor","buffer","normalizedMetadata","indexOf","addPhotoMetadataAction","addVideoMetadataAction","assertion","deviceKeyId","addAssertion","app_id","appId","device_key_id","attestation","embedManifestToFile","Promise","resolve","getCurrentPosition","latitude","toFixed","longitude","altitude","accuracy","altitudeAccuracy","BigInt","trunc","timestamp","error","message","timeout","maximumAge","enableHighAccuracy"],"sourceRoot":"../../src","sources":["camera.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/capture.js
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { getPublicKeyFixed, isKeyStrongboxBacked, sign as cryptoSign } from "@pagopa/io-react-native-crypto";
|
|
4
|
+
import { generateHardwareKey, getAttestation, isPlayServicesAvailable } from "@pagopa/io-react-native-integrity";
|
|
5
|
+
import Geolocation from "@react-native-community/geolocation";
|
|
6
|
+
import { PermissionsAndroid, Platform } from "react-native";
|
|
7
|
+
import { getBundleId, isEmulator } from "react-native-device-info";
|
|
4
8
|
import EncryptedStorage from "react-native-encrypted-storage";
|
|
5
9
|
import { getContentPublicKey, getSecureEnclaveKeyId } from "./common.js";
|
|
6
10
|
export { buildSelfSignedCertificate, SelfSignedCertChain } from "./bindings.js";
|
|
7
11
|
|
|
8
12
|
/**
|
|
9
13
|
* Camera component for capturing photos with secure enclave integration.
|
|
14
|
+
* Lazy-loaded to avoid native module errors on platforms without camera support.
|
|
10
15
|
*/
|
|
11
|
-
|
|
16
|
+
|
|
12
17
|
import NativeZcam1Capture from "./NativeZcam1Capture.js";
|
|
13
18
|
|
|
14
19
|
/**
|
|
@@ -52,42 +57,59 @@ export class ZPhoto {
|
|
|
52
57
|
* @returns Device information including keys, certificate chain, and attestation
|
|
53
58
|
*/
|
|
54
59
|
export async function initCapture(settings) {
|
|
55
|
-
let deviceKeyId = await EncryptedStorage.getItem(`deviceKeyId-${settings.appId}`);
|
|
56
60
|
const contentPublicKey = await getContentPublicKey();
|
|
61
|
+
const isSimulator = await isEmulator();
|
|
62
|
+
|
|
63
|
+
// On Android, the appId is the package name.
|
|
64
|
+
const appId = Platform.OS == "android" ? getBundleId() : settings.appId;
|
|
57
65
|
if (contentPublicKey.kty !== "EC") {
|
|
58
66
|
throw new Error("Only EC public keys are supported");
|
|
59
67
|
}
|
|
60
68
|
const contentKeyId = getSecureEnclaveKeyId(contentPublicKey);
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
let deviceKeyId = await EncryptedStorage.getItem(`deviceKeyId-${settings.appId}`);
|
|
70
|
+
let attestation = deviceKeyId ? await EncryptedStorage.getItem(`attestation-${deviceKeyId}`) : null;
|
|
71
|
+
if (deviceKeyId == null || attestation == null) {
|
|
72
|
+
switch (Platform.OS) {
|
|
73
|
+
case "android":
|
|
74
|
+
// On Android, getAttestation() creates the key AND returns the attestation
|
|
75
|
+
// certificate chain in a single call. generateHardwareKey() is iOS-only.
|
|
76
|
+
deviceKeyId = `ZCAM1_ANDROID_DEVICE_${appId}`;
|
|
77
|
+
if (isSimulator) {
|
|
78
|
+
// Emulator or device without Play Integrity support — use mock attestation.
|
|
79
|
+
console.warn("[ZCAM] Play Integrity not available - using mock attestation. This is for development only.");
|
|
80
|
+
attestation = `SIMULATOR_MOCK_${deviceKeyId}_${Date.now()}`;
|
|
81
|
+
} else {
|
|
82
|
+
attestation = await getAttestation(deviceKeyId, deviceKeyId);
|
|
83
|
+
}
|
|
84
|
+
break;
|
|
85
|
+
case "ios":
|
|
86
|
+
case "macos":
|
|
87
|
+
// iOS: generate key first, then attest separately
|
|
88
|
+
if (deviceKeyId == null) {
|
|
89
|
+
if (isSimulator) {
|
|
90
|
+
console.warn("[ZCAM] Running in simulator - using mock device key. This is for development only.");
|
|
91
|
+
deviceKeyId = `SIMULATOR_DEVICE_KEY_${Date.now()}`;
|
|
92
|
+
} else {
|
|
93
|
+
deviceKeyId = await generateHardwareKey();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
attestation = await updateRegistration(deviceKeyId, settings);
|
|
97
|
+
break;
|
|
98
|
+
default:
|
|
99
|
+
throw new Error(`initCapture: ${Platform.OS} not supported`);
|
|
75
100
|
}
|
|
76
101
|
await EncryptedStorage.setItem(`deviceKeyId-${settings.appId}`, deviceKeyId);
|
|
102
|
+
await EncryptedStorage.setItem(`attestation-${deviceKeyId}`, attestation);
|
|
77
103
|
}
|
|
78
104
|
if (deviceKeyId == null) {
|
|
79
105
|
throw new Error("Failed to generate a device key");
|
|
80
106
|
}
|
|
81
|
-
let attestation = await EncryptedStorage.getItem(`attestation-${deviceKeyId}`);
|
|
82
|
-
if (attestation == null) {
|
|
83
|
-
attestation = await updateRegistration(deviceKeyId, settings);
|
|
84
|
-
}
|
|
85
107
|
return {
|
|
86
|
-
appId
|
|
108
|
+
appId,
|
|
87
109
|
deviceKeyId,
|
|
88
110
|
contentPublicKey,
|
|
89
111
|
contentKeyId,
|
|
90
|
-
attestation
|
|
112
|
+
attestation: attestation
|
|
91
113
|
};
|
|
92
114
|
}
|
|
93
115
|
|
|
@@ -98,23 +120,78 @@ export async function initCapture(settings) {
|
|
|
98
120
|
* @returns Attestation data and challenge
|
|
99
121
|
*/
|
|
100
122
|
export async function updateRegistration(keyId, _settings) {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
} catch (error) {
|
|
106
|
-
// If running in simulator, App Attest is not supported
|
|
107
|
-
const err = error;
|
|
108
|
-
if (err?.code === "-1" || err?.message?.includes("UNSUPPORTED_SERVICE")) {
|
|
109
|
-
console.warn("[ZCAM] Running in simulator - using mock attestation. This is for development only.");
|
|
110
|
-
// Use a mock attestation for simulator testing
|
|
111
|
-
// In production, this would need to be rejected by the backend
|
|
112
|
-
return `SIMULATOR_MOCK_${keyId}_${Date.now()}`;
|
|
113
|
-
} else {
|
|
114
|
-
throw error;
|
|
115
|
-
}
|
|
123
|
+
const isSimulator = await isEmulator();
|
|
124
|
+
if (isSimulator) {
|
|
125
|
+
console.warn("[ZCAM] Running in simulator - using mock attestation. This is for development only.");
|
|
126
|
+
return `SIMULATOR_MOCK_${keyId}_${Date.now()}`;
|
|
116
127
|
}
|
|
128
|
+
const attestation = await getAttestation(keyId, keyId);
|
|
117
129
|
await EncryptedStorage.setItem(`attestation-${keyId}`, attestation);
|
|
118
130
|
return attestation;
|
|
119
131
|
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Requests camera (and microphone) permissions on Android.
|
|
135
|
+
* No-op on iOS — the system prompts automatically when the camera is accessed.
|
|
136
|
+
*/
|
|
137
|
+
export async function requestCameraPermission() {
|
|
138
|
+
if (Platform.OS !== "android") return;
|
|
139
|
+
await PermissionsAndroid.requestMultiple([PermissionsAndroid.PERMISSIONS.CAMERA, PermissionsAndroid.PERMISSIONS.RECORD_AUDIO]);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Requests location permission from the user.
|
|
144
|
+
* This function triggers the native location authorization prompt on the device.
|
|
145
|
+
* @throws {string} Error message if permission request fails
|
|
146
|
+
*/
|
|
147
|
+
export function requestLocationPermission() {
|
|
148
|
+
Geolocation.requestAuthorization(() => {}, error => {
|
|
149
|
+
throw error.message;
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Sign a message with the device hardware key.
|
|
155
|
+
* Uses SHA256withECDSA on Android (Android KeyStore) or SecureEnclave on iOS.
|
|
156
|
+
* @param deviceKeyId - The key alias/tag from initCapture().deviceKeyId
|
|
157
|
+
* @param message - The UTF-8 string message to sign
|
|
158
|
+
* @returns Base64-encoded ECDSA signature
|
|
159
|
+
*/
|
|
160
|
+
export async function signWithDeviceKey(deviceKeyId, message) {
|
|
161
|
+
return cryptoSign(message, deviceKeyId);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Get the public key for a device key in JWK format.
|
|
166
|
+
* @param deviceKeyId - The key alias/tag from initCapture().deviceKeyId
|
|
167
|
+
* @returns The public key as an ECKey (JWK format with x, y coordinates)
|
|
168
|
+
*/
|
|
169
|
+
export async function getDevicePublicKey(deviceKeyId) {
|
|
170
|
+
const key = await getPublicKeyFixed(deviceKeyId);
|
|
171
|
+
if (key.kty !== "EC") {
|
|
172
|
+
throw new Error("Expected EC key, got " + key.kty);
|
|
173
|
+
}
|
|
174
|
+
return key;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Check if the device key is backed by StrongBox (highest hardware security level).
|
|
179
|
+
* Only meaningful on Android. Returns false on iOS.
|
|
180
|
+
* @param deviceKeyId - The key alias/tag from initCapture().deviceKeyId
|
|
181
|
+
* @returns true if StrongBox-backed, false if TEE-backed or unsupported
|
|
182
|
+
*/
|
|
183
|
+
export async function isDeviceKeyStrongboxBacked(deviceKeyId) {
|
|
184
|
+
if (Platform.OS !== "android") return false;
|
|
185
|
+
return isKeyStrongboxBacked(deviceKeyId);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Check if Google Play Services is available (Android only).
|
|
190
|
+
* Required for Play Integrity token requests.
|
|
191
|
+
* @returns true if Play Services available, false otherwise. Always false on iOS.
|
|
192
|
+
*/
|
|
193
|
+
export async function checkPlayServicesAvailable() {
|
|
194
|
+
if (Platform.OS !== "android") return false;
|
|
195
|
+
return isPlayServicesAvailable();
|
|
196
|
+
}
|
|
120
197
|
//# sourceMappingURL=capture.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["generateHardwareKey","getAttestation","EncryptedStorage","getContentPublicKey","getSecureEnclaveKeyId","buildSelfSignedCertificate","SelfSignedCertChain","
|
|
1
|
+
{"version":3,"names":["getPublicKeyFixed","isKeyStrongboxBacked","sign","cryptoSign","generateHardwareKey","getAttestation","isPlayServicesAvailable","Geolocation","PermissionsAndroid","Platform","getBundleId","isEmulator","EncryptedStorage","getContentPublicKey","getSecureEnclaveKeyId","buildSelfSignedCertificate","SelfSignedCertChain","NativeZcam1Capture","previewFile","filePath","ZPhoto","constructor","originalPath","path","initCapture","settings","contentPublicKey","isSimulator","appId","OS","kty","Error","contentKeyId","deviceKeyId","getItem","attestation","console","warn","Date","now","updateRegistration","setItem","keyId","_settings","requestCameraPermission","requestMultiple","PERMISSIONS","CAMERA","RECORD_AUDIO","requestLocationPermission","requestAuthorization","error","message","signWithDeviceKey","getDevicePublicKey","key","isDeviceKeyStrongboxBacked","checkPlayServicesAvailable"],"sourceRoot":"../../src","sources":["capture.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/common.js
CHANGED
|
@@ -3,7 +3,18 @@
|
|
|
3
3
|
import { sha1 } from "@noble/hashes/legacy.js";
|
|
4
4
|
import { generate, getPublicKeyFixed } from "@pagopa/io-react-native-crypto";
|
|
5
5
|
import { base64, base64nopad, base64url, base64urlnopad } from "@scure/base";
|
|
6
|
+
import { Platform } from "react-native";
|
|
7
|
+
import { isEmulator } from "react-native-device-info";
|
|
6
8
|
const CONTENT_KEY_TAG = "ZCAM1_CONTENT_KEY_TAG";
|
|
9
|
+
|
|
10
|
+
// Mock P-256 key used on emulators where hardware-backed key generation is unavailable.
|
|
11
|
+
// Public key coordinates correspond to MOCK_KEY in crates/c2pa-utils/src/manifest_editor.rs.
|
|
12
|
+
const MOCK_EMULATOR_CONTENT_KEY = {
|
|
13
|
+
kty: "EC",
|
|
14
|
+
crv: "P-256",
|
|
15
|
+
x: "hcUZSvoPr0QDDmC0CwMFLgGcHUTas1g4RXET2nFv_BA",
|
|
16
|
+
y: "v5WB7DJhhKed3SmZpO8hVJQXRUSOzNSxrfnQ9kv1zTg"
|
|
17
|
+
};
|
|
7
18
|
// Flexible base64 decoder that handles both standard and url-safe formats, with or without padding.
|
|
8
19
|
// iOS Secure Enclave returns keys in varying formats depending on the iOS version.
|
|
9
20
|
function flexibleBase64Decode(str) {
|
|
@@ -15,8 +26,13 @@ function flexibleBase64Decode(str) {
|
|
|
15
26
|
return hasPadding ? base64.decode(str) : base64nopad.decode(str);
|
|
16
27
|
}
|
|
17
28
|
export async function getContentPublicKey() {
|
|
18
|
-
|
|
19
|
-
|
|
29
|
+
const isAndroidEmulator = await isEmulator().then(isEmulator => isEmulator && Platform.OS === "android");
|
|
30
|
+
if (isAndroidEmulator) {
|
|
31
|
+
return MOCK_EMULATOR_CONTENT_KEY;
|
|
32
|
+
}
|
|
33
|
+
return await getPublicKeyFixed(CONTENT_KEY_TAG).catch(async () => {
|
|
34
|
+
await generate(CONTENT_KEY_TAG);
|
|
35
|
+
return getPublicKeyFixed(CONTENT_KEY_TAG);
|
|
20
36
|
});
|
|
21
37
|
}
|
|
22
38
|
export function getSecureEnclaveKeyId(publicKey) {
|
package/lib/module/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sha1","generate","getPublicKeyFixed","base64","base64nopad","base64url","base64urlnopad","CONTENT_KEY_TAG","flexibleBase64Decode","str","isUrlSafe","includes","hasPadding","decode","getContentPublicKey","
|
|
1
|
+
{"version":3,"names":["sha1","generate","getPublicKeyFixed","base64","base64nopad","base64url","base64urlnopad","Platform","isEmulator","CONTENT_KEY_TAG","MOCK_EMULATOR_CONTENT_KEY","kty","crv","x","y","flexibleBase64Decode","str","isUrlSafe","includes","hasPadding","decode","getContentPublicKey","isAndroidEmulator","then","OS","catch","getSecureEnclaveKeyId","publicKey","out","Uint8Array","length","set","Error"],"sourceRoot":"../../src","sources":["common.tsx"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,yBAAyB;AAC9C,SAASC,QAAQ,EAAEC,iBAAiB,QAAwB,gCAAgC;AAC5F,SAASC,MAAM,EAAEC,WAAW,EAAEC,SAAS,EAAEC,cAAc,QAAQ,aAAa;AAC5E,SAASC,QAAQ,QAAQ,cAAc;AACvC,SAASC,UAAU,QAAQ,0BAA0B;AAErD,MAAMC,eAAe,GAAG,uBAAuB;;AAE/C;AACA;AACA,MAAMC,yBAAyB,GAAG;EAChCC,GAAG,EAAE,IAAa;EAClBC,GAAG,EAAE,OAAO;EACZC,CAAC,EAAE,6CAA6C;EAChDC,CAAC,EAAE;AACL,CAAC;AASD;AACA;AACA,SAASC,oBAAoBA,CAACC,GAAW,EAAc;EACrD,MAAMC,SAAS,GAAGD,GAAG,CAACE,QAAQ,CAAC,GAAG,CAAC,IAAIF,GAAG,CAACE,QAAQ,CAAC,GAAG,CAAC;EACxD,MAAMC,UAAU,GAAGH,GAAG,CAACE,QAAQ,CAAC,GAAG,CAAC;EAEpC,IAAID,SAAS,EAAE;IACb,OAAOE,UAAU,GAAGd,SAAS,CAACe,MAAM,CAACJ,GAAG,CAAC,GAAGV,cAAc,CAACc,MAAM,CAACJ,GAAG,CAAC;EACxE;EACA,OAAOG,UAAU,GAAGhB,MAAM,CAACiB,MAAM,CAACJ,GAAG,CAAC,GAAGZ,WAAW,CAACgB,MAAM,CAACJ,GAAG,CAAC;AAClE;AAEA,OAAO,eAAeK,mBAAmBA,CAAA,EAAuB;EAC9D,MAAMC,iBAAiB,GAAG,MAAMd,UAAU,CAAC,CAAC,CAACe,IAAI,CAC9Cf,UAAU,IAAKA,UAAU,IAAID,QAAQ,CAACiB,EAAE,KAAK,SAChD,CAAC;EAED,IAAIF,iBAAiB,EAAE;IACrB,OAAOZ,yBAAyB;EAClC;EAEA,OAAO,MAAMR,iBAAiB,CAACO,eAAe,CAAC,CAACgB,KAAK,CAAC,YAAY;IAChE,MAAMxB,QAAQ,CAACQ,eAAe,CAAC;IAC/B,OAAOP,iBAAiB,CAACO,eAAe,CAAC;EAC3C,CAAC,CAAC;AACJ;AAEA,OAAO,SAASiB,qBAAqBA,CAACC,SAAgB,EAAc;EAClE,IAAIA,SAAS,CAAChB,GAAG,KAAK,IAAI,EAAE;IAC1B,MAAME,CAAC,GAAGE,oBAAoB,CAACY,SAAS,CAACd,CAAC,CAAC;IAC3C,MAAMC,CAAC,GAAGC,oBAAoB,CAACY,SAAS,CAACb,CAAC,CAAC;IAE3C,MAAMc,GAAG,GAAG,IAAIC,UAAU,CAAC,CAAC,GAAGhB,CAAC,CAACiB,MAAM,GAAGhB,CAAC,CAACgB,MAAM,CAAC;IACnDF,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACfA,GAAG,CAACG,GAAG,CAAClB,CAAC,EAAE,CAAC,CAAC;IACbe,GAAG,CAACG,GAAG,CAACjB,CAAC,EAAE,CAAC,GAAGD,CAAC,CAACiB,MAAM,CAAC;IAExB,OAAO9B,IAAI,CAAC4B,GAAG,CAAC;EAClB,CAAC,MAAM;IACL,MAAM,IAAII,KAAK,CAAC,kBAAkB,CAAC;EACrC;AACF","ignoreList":[]}
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
// This file was autogenerated by some hot garbage in the `uniffi-bindgen-react-native` crate.
|
|
4
4
|
// Trust me, you don't want to mess with it!
|
|
5
5
|
|
|
6
|
+
/* tslint:disable */
|
|
7
|
+
/* eslint-disable */
|
|
8
|
+
// @ts-nocheck
|
|
9
|
+
|
|
6
10
|
// Casting globalThis to any allows us to look for `NativeZcam1C2paUtils`
|
|
7
11
|
// if it was added via JSI.
|
|
8
12
|
//
|