react-native-quick-crypto 1.0.0-beta.3 → 1.0.0-beta.5
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/QuickCrypto.podspec +4 -0
- package/README.md +2 -0
- package/android/CMakeLists.txt +26 -13
- package/android/build.gradle +4 -0
- package/android/src/main/cpp/cpp-adapter.cpp +3 -10
- package/android/src/main/java/com/margelo/nitro/quickcrypto/QuickCryptoPackage.java +15 -10
- package/cpp/pbkdf2/HybridPbkdf2.cpp +71 -0
- package/cpp/pbkdf2/HybridPbkdf2.hpp +35 -0
- package/cpp/random/HybridRandom.cpp +42 -18
- package/cpp/random/HybridRandom.hpp +13 -28
- package/cpp/utils/Utils.hpp +12 -1
- package/deps/fastpbkdf2/fastpbkdf2.c +352 -0
- package/deps/fastpbkdf2/fastpbkdf2.h +68 -0
- package/lib/commonjs/index.js +24 -5
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/keys/index.js +86 -0
- package/lib/commonjs/keys/index.js.map +1 -0
- package/lib/commonjs/pbkdf2.js +89 -0
- package/lib/commonjs/pbkdf2.js.map +1 -0
- package/lib/commonjs/random.js +3 -3
- package/lib/commonjs/random.js.map +1 -1
- package/lib/commonjs/specs/keyObjectHandle.nitro.js +6 -0
- package/lib/commonjs/specs/keyObjectHandle.nitro.js.map +1 -0
- package/lib/commonjs/specs/pbkdf2.nitro.js +6 -0
- package/lib/commonjs/specs/pbkdf2.nitro.js.map +1 -0
- package/lib/commonjs/utils/conversion.js +74 -0
- package/lib/commonjs/utils/conversion.js.map +1 -1
- package/lib/commonjs/utils/errors.js +14 -0
- package/lib/commonjs/utils/errors.js.map +1 -0
- package/lib/commonjs/utils/hashnames.js +90 -0
- package/lib/commonjs/utils/hashnames.js.map +1 -0
- package/lib/commonjs/utils/index.js +43 -5
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/commonjs/utils/types.js +27 -0
- package/lib/commonjs/utils/types.js.map +1 -1
- package/lib/module/index.js +9 -4
- package/lib/module/index.js.map +1 -1
- package/lib/module/keys/index.js +81 -0
- package/lib/module/keys/index.js.map +1 -0
- package/lib/module/pbkdf2.js +83 -0
- package/lib/module/pbkdf2.js.map +1 -0
- package/lib/module/random.js +1 -1
- package/lib/module/random.js.map +1 -1
- package/lib/module/specs/keyObjectHandle.nitro.js +4 -0
- package/lib/module/specs/keyObjectHandle.nitro.js.map +1 -0
- package/lib/module/specs/pbkdf2.nitro.js +4 -0
- package/lib/module/specs/pbkdf2.nitro.js.map +1 -0
- package/lib/module/utils/conversion.js +71 -0
- package/lib/module/utils/conversion.js.map +1 -1
- package/lib/module/utils/errors.js +10 -0
- package/lib/module/utils/errors.js.map +1 -0
- package/lib/module/utils/hashnames.js +88 -0
- package/lib/module/utils/hashnames.js.map +1 -0
- package/lib/module/utils/index.js +4 -5
- package/lib/module/utils/index.js.map +1 -1
- package/lib/module/utils/types.js +26 -0
- package/lib/module/utils/types.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/typescript/index.d.ts +26 -9
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/keys/index.d.ts +22 -0
- package/lib/typescript/keys/index.d.ts.map +1 -0
- package/lib/typescript/pbkdf2.d.ts +12 -0
- package/lib/typescript/pbkdf2.d.ts.map +1 -0
- package/lib/typescript/random.d.ts +1 -1
- package/lib/typescript/random.d.ts.map +1 -1
- package/lib/typescript/specs/keyObjectHandle.nitro.d.ts +15 -0
- package/lib/typescript/specs/keyObjectHandle.nitro.d.ts.map +1 -0
- package/lib/typescript/specs/pbkdf2.nitro.d.ts +9 -0
- package/lib/typescript/specs/pbkdf2.nitro.d.ts.map +1 -0
- package/lib/typescript/utils/conversion.d.ts +7 -1
- package/lib/typescript/utils/conversion.d.ts.map +1 -1
- package/lib/typescript/utils/errors.d.ts +7 -0
- package/lib/typescript/utils/errors.d.ts.map +1 -0
- package/lib/typescript/utils/hashnames.d.ts +11 -0
- package/lib/typescript/utils/hashnames.d.ts.map +1 -0
- package/lib/typescript/utils/index.d.ts +4 -5
- package/lib/typescript/utils/index.d.ts.map +1 -1
- package/lib/typescript/utils/types.d.ts +101 -0
- package/lib/typescript/utils/types.d.ts.map +1 -1
- package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +19 -3
- package/nitrogen/generated/android/QuickCrypto+autolinking.gradle +1 -2
- package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +50 -0
- package/nitrogen/generated/android/QuickCryptoOnLoad.hpp +25 -0
- package/nitrogen/generated/android/QuickCryptoOnLoad.kt +1 -0
- package/nitrogen/generated/ios/QuickCrypto+autolinking.rb +7 -6
- package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.cpp +10 -2
- package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.hpp +4 -2
- package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Umbrella.hpp +12 -6
- package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +45 -0
- package/nitrogen/generated/ios/QuickCryptoAutolinking.swift +12 -0
- package/nitrogen/generated/shared/c++/AsymmetricKeyType.hpp +86 -0
- package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.cpp +27 -0
- package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.hpp +93 -0
- package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.cpp +22 -0
- package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.hpp +66 -0
- package/nitrogen/generated/shared/c++/HybridRandomSpec.cpp +1 -2
- package/nitrogen/generated/shared/c++/HybridRandomSpec.hpp +7 -4
- package/nitrogen/generated/shared/c++/JWK.hpp +162 -0
- package/nitrogen/generated/shared/c++/JWKkty.hpp +86 -0
- package/nitrogen/generated/shared/c++/JWKuse.hpp +78 -0
- package/nitrogen/generated/shared/c++/KFormatType.hpp +65 -0
- package/nitrogen/generated/shared/c++/KeyDetail.hpp +93 -0
- package/nitrogen/generated/shared/c++/KeyEncoding.hpp +66 -0
- package/nitrogen/generated/shared/c++/KeyType.hpp +65 -0
- package/nitrogen/generated/shared/c++/KeyUsage.hpp +102 -0
- package/nitrogen/generated/shared/c++/NamedCurve.hpp +82 -0
- package/package.json +13 -12
- package/src/index.ts +8 -4
- package/src/keys/index.ts +99 -0
- package/src/pbkdf2.ts +154 -0
- package/src/random.ts +14 -14
- package/src/specs/keyObjectHandle.nitro.ts +32 -0
- package/src/specs/pbkdf2.nitro.ts +18 -0
- package/src/specs/random.nitro.ts +2 -2
- package/src/utils/conversion.ts +83 -1
- package/src/utils/errors.ts +15 -0
- package/src/utils/hashnames.ts +96 -0
- package/src/utils/index.ts +4 -6
- package/src/utils/types.ts +178 -2
- package/ios/QuickCryptoOnLoad.mm +0 -19
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { HashAlgorithm } from '.';
|
|
2
|
+
export declare enum HashContext {
|
|
3
|
+
Node = 0,
|
|
4
|
+
WebCrypto = 1,
|
|
5
|
+
JwkRsa = 2,
|
|
6
|
+
JwkRsaPss = 3,
|
|
7
|
+
JwkRsaOaep = 4,
|
|
8
|
+
JwkHmac = 5
|
|
9
|
+
}
|
|
10
|
+
export declare function normalizeHashName(algo: string | HashAlgorithm | undefined, context?: HashContext): HashAlgorithm;
|
|
11
|
+
//# sourceMappingURL=hashnames.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hashnames.d.ts","sourceRoot":"","sources":["../../../src/utils/hashnames.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC;AAEvC,oBAAY,WAAW;IACrB,IAAI,IAAA;IACJ,SAAS,IAAA;IACT,MAAM,IAAA;IACN,SAAS,IAAA;IACT,UAAU,IAAA;IACV,OAAO,IAAA;CACR;AAuED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,EACxC,OAAO,GAAE,WAA8B,GACtC,aAAa,CAYf"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
1
|
+
export * from './conversion';
|
|
2
|
+
export * from './errors';
|
|
3
|
+
export * from './hashnames';
|
|
4
|
+
export * from './types';
|
|
6
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
|
|
@@ -1,5 +1,106 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
import { type Buffer } from '@craftzdog/react-native-buffer';
|
|
3
|
+
import { type Buffer as SBuffer } from 'safe-buffer';
|
|
4
|
+
import { type CipherKey } from 'crypto';
|
|
2
5
|
export type ArrayBufferView = TypedArray | DataView | ArrayBufferLike | Buffer;
|
|
3
6
|
export type TypedArray = Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | Int8Array | Int16Array | Int32Array | Float32Array | Float64Array;
|
|
4
7
|
export type RandomCallback<T> = (err: Error | null, value: T) => void;
|
|
8
|
+
export type BufferLike = ArrayBuffer | Buffer | SBuffer | ArrayBufferView;
|
|
9
|
+
export type BinaryLike = string | ArrayBuffer | Buffer | SBuffer | TypedArray | DataView;
|
|
10
|
+
export type BinaryLikeNode = CipherKey | BinaryLike;
|
|
11
|
+
export type DigestAlgorithm = 'SHA-1' | 'SHA-256' | 'SHA-384' | 'SHA-512';
|
|
12
|
+
export type HashAlgorithm = DigestAlgorithm | 'SHA-224' | 'RIPEMD-160';
|
|
13
|
+
export type RSAKeyPairAlgorithm = 'RSASSA-PKCS1-v1_5' | 'RSA-PSS' | 'RSA-OAEP';
|
|
14
|
+
export type ECKeyPairAlgorithm = 'ECDSA' | 'ECDH';
|
|
15
|
+
export type CFRGKeyPairAlgorithm = 'Ed25519' | 'Ed448' | 'X25519' | 'X448';
|
|
16
|
+
export type KeyPairAlgorithm = RSAKeyPairAlgorithm | ECKeyPairAlgorithm | CFRGKeyPairAlgorithm;
|
|
17
|
+
export type AESAlgorithm = 'AES-CTR' | 'AES-CBC' | 'AES-GCM' | 'AES-KW';
|
|
18
|
+
export type SecretKeyAlgorithm = 'HMAC' | AESAlgorithm;
|
|
19
|
+
export type SignVerifyAlgorithm = 'RSASSA-PKCS1-v1_5' | 'RSA-PSS' | 'ECDSA' | 'HMAC' | 'Ed25519' | 'Ed448';
|
|
20
|
+
export type DeriveBitsAlgorithm = 'PBKDF2' | 'HKDF' | 'ECDH' | 'X25519' | 'X448';
|
|
21
|
+
export type EncryptDecryptAlgorithm = 'RSA-OAEP' | 'AES-CTR' | 'AES-CBC' | 'AES-GCM';
|
|
22
|
+
export type AnyAlgorithm = DigestAlgorithm | HashAlgorithm | KeyPairAlgorithm | SecretKeyAlgorithm | SignVerifyAlgorithm | DeriveBitsAlgorithm | EncryptDecryptAlgorithm | AESAlgorithm | 'PBKDF2' | 'HKDF' | 'unknown';
|
|
23
|
+
export type NamedCurve = 'P-256' | 'P-384' | 'P-521';
|
|
24
|
+
export type SubtleAlgorithm = {
|
|
25
|
+
name: AnyAlgorithm;
|
|
26
|
+
salt?: string;
|
|
27
|
+
iterations?: number;
|
|
28
|
+
hash?: HashAlgorithm;
|
|
29
|
+
namedCurve?: NamedCurve;
|
|
30
|
+
length?: number;
|
|
31
|
+
modulusLength?: number;
|
|
32
|
+
publicExponent?: number | Uint8Array;
|
|
33
|
+
};
|
|
34
|
+
export type KeyUsage = 'encrypt' | 'decrypt' | 'sign' | 'verify' | 'deriveKey' | 'deriveBits' | 'wrapKey' | 'unwrapKey';
|
|
35
|
+
export declare enum KFormatType {
|
|
36
|
+
kKeyFormatDER = 0,
|
|
37
|
+
kKeyFormatPEM = 1,
|
|
38
|
+
kKeyFormatJWK = 2
|
|
39
|
+
}
|
|
40
|
+
export declare enum KeyType {
|
|
41
|
+
Secret = 0,
|
|
42
|
+
Public = 1,
|
|
43
|
+
Private = 2
|
|
44
|
+
}
|
|
45
|
+
export declare enum KeyEncoding {
|
|
46
|
+
kKeyEncodingPKCS1 = 0,
|
|
47
|
+
kKeyEncodingPKCS8 = 1,
|
|
48
|
+
kKeyEncodingSPKI = 2,
|
|
49
|
+
kKeyEncodingSEC1 = 3
|
|
50
|
+
}
|
|
51
|
+
export type AsymmetricKeyType = 'rsa' | 'rsa-pss' | 'dsa' | 'ec';
|
|
52
|
+
type JWKkty = 'AES' | 'RSA' | 'EC' | 'oct';
|
|
53
|
+
type JWKuse = 'sig' | 'enc';
|
|
54
|
+
export interface JWK {
|
|
55
|
+
kty?: JWKkty;
|
|
56
|
+
use?: JWKuse;
|
|
57
|
+
key_ops?: KeyUsage[];
|
|
58
|
+
alg?: string;
|
|
59
|
+
crv?: string;
|
|
60
|
+
kid?: string;
|
|
61
|
+
x5u?: string;
|
|
62
|
+
x5c?: string[];
|
|
63
|
+
x5t?: string;
|
|
64
|
+
'x5t#256'?: string;
|
|
65
|
+
n?: string;
|
|
66
|
+
e?: string;
|
|
67
|
+
d?: string;
|
|
68
|
+
p?: string;
|
|
69
|
+
q?: string;
|
|
70
|
+
x?: string;
|
|
71
|
+
y?: string;
|
|
72
|
+
k?: string;
|
|
73
|
+
dp?: string;
|
|
74
|
+
dq?: string;
|
|
75
|
+
qi?: string;
|
|
76
|
+
ext?: boolean;
|
|
77
|
+
}
|
|
78
|
+
export type KTypePrivate = 'pkcs1' | 'pkcs8' | 'sec1';
|
|
79
|
+
export type KTypePublic = 'pkcs1' | 'spki';
|
|
80
|
+
export type KType = KTypePrivate | KTypePublic;
|
|
81
|
+
export type KFormat = 'der' | 'pem' | 'jwk';
|
|
82
|
+
export type DSAEncoding = 'der' | 'ieee-p1363';
|
|
83
|
+
export type EncodingOptions = {
|
|
84
|
+
key?: any;
|
|
85
|
+
type?: KType;
|
|
86
|
+
encoding?: string;
|
|
87
|
+
dsaEncoding?: DSAEncoding;
|
|
88
|
+
format?: KFormat;
|
|
89
|
+
padding?: number;
|
|
90
|
+
cipher?: string;
|
|
91
|
+
passphrase?: BinaryLike;
|
|
92
|
+
saltLength?: number;
|
|
93
|
+
oaepHash?: string;
|
|
94
|
+
oaepLabel?: BinaryLike;
|
|
95
|
+
};
|
|
96
|
+
export interface KeyDetail {
|
|
97
|
+
length?: number;
|
|
98
|
+
publicExponent?: number;
|
|
99
|
+
modulusLength?: number;
|
|
100
|
+
hashAlgorithm?: string;
|
|
101
|
+
mgf1HashAlgorithm?: string;
|
|
102
|
+
saltLength?: number;
|
|
103
|
+
namedCurve?: string;
|
|
104
|
+
}
|
|
105
|
+
export {};
|
|
5
106
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":";AAAA,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,QAAQ,GAAG,eAAe,GAAG,MAAM,CAAC;AAE/E,MAAM,MAAM,UAAU,GAClB,UAAU,GACV,iBAAiB,GACjB,WAAW,GACX,WAAW,GACX,SAAS,GACT,UAAU,GACV,UAAU,GACV,YAAY,GACZ,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
# QuickCrypto+autolinking.cmake
|
|
3
|
-
# Tue Aug 13 2024
|
|
4
3
|
# This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
5
|
-
# https://github.com/mrousavy/
|
|
4
|
+
# https://github.com/mrousavy/nitro
|
|
6
5
|
# Copyright © 2024 Marc Rousavy @ Margelo
|
|
7
6
|
#
|
|
8
7
|
|
|
@@ -18,13 +17,18 @@
|
|
|
18
17
|
include_directories(
|
|
19
18
|
"../nitrogen/generated/shared/c++"
|
|
20
19
|
"../nitrogen/generated/android/c++"
|
|
20
|
+
"../nitrogen/generated/android/"
|
|
21
21
|
)
|
|
22
22
|
|
|
23
23
|
# Add all .cpp sources that were generated by Nitrogen
|
|
24
24
|
target_sources(
|
|
25
25
|
# CMake project name (Android C++ library name)
|
|
26
26
|
QuickCrypto PRIVATE
|
|
27
|
+
# Autolinking Setup
|
|
28
|
+
../nitrogen/generated/android/QuickCryptoOnLoad.cpp
|
|
27
29
|
# Shared Nitrogen C++ sources
|
|
30
|
+
../nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.cpp
|
|
31
|
+
../nitrogen/generated/shared/c++/HybridPbkdf2Spec.cpp
|
|
28
32
|
../nitrogen/generated/shared/c++/HybridRandomSpec.cpp
|
|
29
33
|
# Android-specific Nitrogen C++ sources
|
|
30
34
|
|
|
@@ -40,6 +44,18 @@ target_link_libraries(
|
|
|
40
44
|
QuickCrypto
|
|
41
45
|
fbjni::fbjni # <-- Facebook C++ JNI helpers
|
|
42
46
|
ReactAndroid::jsi # <-- RN: JSI
|
|
43
|
-
ReactAndroid::react_nativemodule_core # <-- RN: TurboModules Core
|
|
44
47
|
react-native-nitro-modules::NitroModules # <-- NitroModules Core :)
|
|
45
48
|
)
|
|
49
|
+
|
|
50
|
+
# Link react-native (different prefab between RN 0.75 and RN 0.76)
|
|
51
|
+
if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
|
|
52
|
+
target_link_libraries(
|
|
53
|
+
QuickCrypto
|
|
54
|
+
ReactAndroid::reactnative # <-- RN: Native Modules umbrella prefab
|
|
55
|
+
)
|
|
56
|
+
else()
|
|
57
|
+
target_link_libraries(
|
|
58
|
+
QuickCrypto
|
|
59
|
+
ReactAndroid::react_nativemodule_core # <-- RN: TurboModules Core
|
|
60
|
+
)
|
|
61
|
+
endif()
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
///
|
|
2
2
|
/// QuickCrypto+autolinking.gradle
|
|
3
|
-
/// Tue Aug 13 2024
|
|
4
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
5
|
-
/// https://github.com/mrousavy/
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
6
5
|
/// Copyright © 2024 Marc Rousavy @ Margelo
|
|
7
6
|
///
|
|
8
7
|
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// QuickCryptoOnLoad.cpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2024 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#include "QuickCryptoOnLoad.hpp"
|
|
9
|
+
|
|
10
|
+
#include <jni.h>
|
|
11
|
+
#include <fbjni/fbjni.h>
|
|
12
|
+
#include <NitroModules/HybridObjectRegistry.hpp>
|
|
13
|
+
|
|
14
|
+
#include "HybridPbkdf2.hpp"
|
|
15
|
+
#include "HybridRandom.hpp"
|
|
16
|
+
|
|
17
|
+
namespace margelo::nitro::crypto {
|
|
18
|
+
|
|
19
|
+
int initialize(JavaVM* vm) {
|
|
20
|
+
using namespace margelo::nitro;
|
|
21
|
+
using namespace margelo::nitro::crypto;
|
|
22
|
+
using namespace facebook;
|
|
23
|
+
|
|
24
|
+
return facebook::jni::initialize(vm, [] {
|
|
25
|
+
// Register native JNI methods
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
// Register Nitro Hybrid Objects
|
|
29
|
+
HybridObjectRegistry::registerHybridObjectConstructor(
|
|
30
|
+
"Pbkdf2",
|
|
31
|
+
[]() -> std::shared_ptr<HybridObject> {
|
|
32
|
+
static_assert(std::is_default_constructible_v<HybridPbkdf2>,
|
|
33
|
+
"The HybridObject \"HybridPbkdf2\" is not default-constructible! "
|
|
34
|
+
"Create a public constructor that takes zero arguments to be able to autolink this HybridObject.");
|
|
35
|
+
return std::make_shared<HybridPbkdf2>();
|
|
36
|
+
}
|
|
37
|
+
);
|
|
38
|
+
HybridObjectRegistry::registerHybridObjectConstructor(
|
|
39
|
+
"Random",
|
|
40
|
+
[]() -> std::shared_ptr<HybridObject> {
|
|
41
|
+
static_assert(std::is_default_constructible_v<HybridRandom>,
|
|
42
|
+
"The HybridObject \"HybridRandom\" is not default-constructible! "
|
|
43
|
+
"Create a public constructor that takes zero arguments to be able to autolink this HybridObject.");
|
|
44
|
+
return std::make_shared<HybridRandom>();
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
} // namespace margelo::nitro::crypto
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// QuickCryptoOnLoad.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2024 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#include <jni.h>
|
|
9
|
+
#include <NitroModules/NitroDefines.hpp>
|
|
10
|
+
|
|
11
|
+
namespace margelo::nitro::crypto {
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Initializes the native (C++) part of QuickCrypto, and autolinks all Hybrid Objects.
|
|
15
|
+
* Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`).
|
|
16
|
+
* Example:
|
|
17
|
+
* ```cpp (cpp-adapter.cpp)
|
|
18
|
+
* JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) {
|
|
19
|
+
* return margelo::nitro::crypto::initialize(vm);
|
|
20
|
+
* }
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
int initialize(JavaVM* vm);
|
|
24
|
+
|
|
25
|
+
} // namespace margelo::nitro::crypto
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
# QuickCrypto+autolinking.rb
|
|
3
|
-
# Tue Aug 13 2024
|
|
4
3
|
# This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
5
|
-
# https://github.com/mrousavy/
|
|
4
|
+
# https://github.com/mrousavy/nitro
|
|
6
5
|
# Copyright © 2024 Marc Rousavy @ Margelo
|
|
7
6
|
#
|
|
8
7
|
|
|
@@ -25,15 +24,15 @@ def add_nitrogen_files(spec)
|
|
|
25
24
|
|
|
26
25
|
spec.dependency "NitroModules"
|
|
27
26
|
|
|
28
|
-
current_source_files = spec.attributes_hash['source_files']
|
|
27
|
+
current_source_files = Array(spec.attributes_hash['source_files'])
|
|
29
28
|
spec.source_files = current_source_files + [
|
|
30
29
|
# Generated cross-platform specs
|
|
31
30
|
"nitrogen/generated/shared/**/*.{h,hpp,c,cpp,swift}",
|
|
32
31
|
# Generated bridges for the cross-platform specs
|
|
33
|
-
"nitrogen/generated/ios/**/*.{h,hpp,c,cpp,swift}",
|
|
32
|
+
"nitrogen/generated/ios/**/*.{h,hpp,c,cpp,mm,swift}",
|
|
34
33
|
]
|
|
35
34
|
|
|
36
|
-
current_public_header_files = spec.attributes_hash['public_header_files']
|
|
35
|
+
current_public_header_files = Array(spec.attributes_hash['public_header_files'])
|
|
37
36
|
spec.public_header_files = current_public_header_files + [
|
|
38
37
|
# Generated specs
|
|
39
38
|
"nitrogen/generated/shared/**/*.{h,hpp}",
|
|
@@ -41,7 +40,7 @@ def add_nitrogen_files(spec)
|
|
|
41
40
|
"nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.hpp"
|
|
42
41
|
]
|
|
43
42
|
|
|
44
|
-
current_private_header_files = spec.attributes_hash['private_header_files']
|
|
43
|
+
current_private_header_files = Array(spec.attributes_hash['private_header_files'])
|
|
45
44
|
spec.private_header_files = current_private_header_files + [
|
|
46
45
|
# iOS specific specs
|
|
47
46
|
"nitrogen/generated/ios/c++/**/*.{h,hpp}",
|
|
@@ -53,5 +52,7 @@ def add_nitrogen_files(spec)
|
|
|
53
52
|
"CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
|
|
54
53
|
# Enables C++ <-> Swift interop (by default it's only C)
|
|
55
54
|
"SWIFT_OBJC_INTEROP_MODE" => "objcxx",
|
|
55
|
+
# Enables stricter modular headers
|
|
56
|
+
"DEFINES_MODULE" => "YES",
|
|
56
57
|
})
|
|
57
58
|
end
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
///
|
|
2
2
|
/// QuickCrypto-Swift-Cxx-Bridge.cpp
|
|
3
|
-
/// Tue Aug 13 2024
|
|
4
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
5
|
-
/// https://github.com/mrousavy/
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
6
5
|
/// Copyright © 2024 Marc Rousavy @ Margelo
|
|
7
6
|
///
|
|
8
7
|
|
|
9
8
|
#include "QuickCrypto-Swift-Cxx-Bridge.hpp"
|
|
9
|
+
|
|
10
|
+
// Include C++ implementation defined types
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
namespace margelo::nitro::crypto::bridge::swift {
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
} // namespace margelo::nitro::crypto::bridge::swift
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
///
|
|
2
2
|
/// QuickCrypto-Swift-Cxx-Bridge.hpp
|
|
3
|
-
/// Tue Aug 13 2024
|
|
4
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
5
|
-
/// https://github.com/mrousavy/
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
6
5
|
/// Copyright © 2024 Marc Rousavy @ Margelo
|
|
7
6
|
///
|
|
8
7
|
|
|
@@ -11,6 +10,9 @@
|
|
|
11
10
|
// Forward declarations of C++ defined types
|
|
12
11
|
|
|
13
12
|
|
|
13
|
+
// Forward declarations of Swift defined types
|
|
14
|
+
|
|
15
|
+
|
|
14
16
|
// Include C++ defined types
|
|
15
17
|
|
|
16
18
|
|
|
@@ -1,29 +1,35 @@
|
|
|
1
1
|
///
|
|
2
2
|
/// QuickCrypto-Swift-Cxx-Umbrella.hpp
|
|
3
|
-
/// Tue Aug 13 2024
|
|
4
3
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
5
|
-
/// https://github.com/mrousavy/
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
6
5
|
/// Copyright © 2024 Marc Rousavy @ Margelo
|
|
7
6
|
///
|
|
8
7
|
|
|
9
8
|
#pragma once
|
|
10
9
|
|
|
11
10
|
// Forward declarations of C++ defined types
|
|
12
|
-
|
|
13
|
-
namespace NitroModules { class ArrayBuffer; }
|
|
11
|
+
|
|
14
12
|
|
|
15
13
|
// Include C++ defined types
|
|
16
|
-
|
|
14
|
+
|
|
17
15
|
|
|
18
16
|
// C++ helpers for Swift
|
|
19
17
|
#include "QuickCrypto-Swift-Cxx-Bridge.hpp"
|
|
20
18
|
|
|
19
|
+
// Common C++ types used in Swift
|
|
20
|
+
#include <NitroModules/ArrayBufferHolder.hpp>
|
|
21
|
+
#include <NitroModules/AnyMapHolder.hpp>
|
|
22
|
+
#include <NitroModules/HybridContext.hpp>
|
|
23
|
+
#include <NitroModules/PromiseHolder.hpp>
|
|
24
|
+
|
|
21
25
|
// Forward declarations of Swift defined types
|
|
22
26
|
|
|
23
27
|
|
|
24
28
|
// Include Swift defined types
|
|
25
29
|
#if __has_include("QuickCrypto-Swift.h")
|
|
30
|
+
// This header is generated by Xcode/Swift on every app build.
|
|
31
|
+
// If it cannot be found, make sure the Swift module's name (= podspec name) is actually "QuickCrypto".
|
|
26
32
|
#include "QuickCrypto-Swift.h"
|
|
27
33
|
#else
|
|
28
|
-
#error QuickCrypto's autogenerated Swift header cannot be found! Make sure the Swift module's name is actually "QuickCrypto", and try building the app first.
|
|
34
|
+
#error QuickCrypto's autogenerated Swift header cannot be found! Make sure the Swift module's name (= podspec name) is actually "QuickCrypto", and try building the app first.
|
|
29
35
|
#endif
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// QuickCryptoAutolinking.mm
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2024 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#import <Foundation/Foundation.h>
|
|
9
|
+
#import <NitroModules/HybridObjectRegistry.hpp>
|
|
10
|
+
|
|
11
|
+
#import <type_traits>
|
|
12
|
+
|
|
13
|
+
#include "HybridPbkdf2.hpp"
|
|
14
|
+
#include "HybridRandom.hpp"
|
|
15
|
+
|
|
16
|
+
@interface QuickCryptoAutolinking : NSObject
|
|
17
|
+
@end
|
|
18
|
+
|
|
19
|
+
@implementation QuickCryptoAutolinking
|
|
20
|
+
|
|
21
|
+
+ (void) load {
|
|
22
|
+
using namespace margelo::nitro;
|
|
23
|
+
using namespace margelo::nitro::crypto;
|
|
24
|
+
|
|
25
|
+
HybridObjectRegistry::registerHybridObjectConstructor(
|
|
26
|
+
"Pbkdf2",
|
|
27
|
+
[]() -> std::shared_ptr<HybridObject> {
|
|
28
|
+
static_assert(std::is_default_constructible_v<HybridPbkdf2>,
|
|
29
|
+
"The HybridObject \"HybridPbkdf2\" is not default-constructible! "
|
|
30
|
+
"Create a public constructor that takes zero arguments to be able to autolink this HybridObject.");
|
|
31
|
+
return std::make_shared<HybridPbkdf2>();
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
HybridObjectRegistry::registerHybridObjectConstructor(
|
|
35
|
+
"Random",
|
|
36
|
+
[]() -> std::shared_ptr<HybridObject> {
|
|
37
|
+
static_assert(std::is_default_constructible_v<HybridRandom>,
|
|
38
|
+
"The HybridObject \"HybridRandom\" is not default-constructible! "
|
|
39
|
+
"Create a public constructor that takes zero arguments to be able to autolink this HybridObject.");
|
|
40
|
+
return std::make_shared<HybridRandom>();
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
@end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// QuickCryptoAutolinking.swift
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2024 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
public final class QuickCryptoAutolinking {
|
|
9
|
+
public typealias bridge = margelo.nitro.crypto.bridge.swift
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// AsymmetricKeyType.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2024 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#if __has_include(<NitroModules/NitroHash.hpp>)
|
|
11
|
+
#include <NitroModules/NitroHash.hpp>
|
|
12
|
+
#else
|
|
13
|
+
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
|
|
14
|
+
#endif
|
|
15
|
+
#if __has_include(<NitroModules/JSIConverter.hpp>)
|
|
16
|
+
#include <NitroModules/JSIConverter.hpp>
|
|
17
|
+
#else
|
|
18
|
+
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
|
|
19
|
+
#endif
|
|
20
|
+
#if __has_include(<NitroModules/NitroDefines.hpp>)
|
|
21
|
+
#include <NitroModules/NitroDefines.hpp>
|
|
22
|
+
#else
|
|
23
|
+
#error NitroModules cannot be found! Are you sure you installed NitroModules properly?
|
|
24
|
+
#endif
|
|
25
|
+
|
|
26
|
+
namespace margelo::nitro::crypto {
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* An enum which can be represented as a JavaScript union (AsymmetricKeyType).
|
|
30
|
+
*/
|
|
31
|
+
enum class AsymmetricKeyType {
|
|
32
|
+
RSA SWIFT_NAME(rsa) = 0,
|
|
33
|
+
RSA_PSS SWIFT_NAME(rsaPss) = 1,
|
|
34
|
+
DSA SWIFT_NAME(dsa) = 2,
|
|
35
|
+
EC SWIFT_NAME(ec) = 3,
|
|
36
|
+
} CLOSED_ENUM;
|
|
37
|
+
|
|
38
|
+
} // namespace margelo::nitro::crypto
|
|
39
|
+
|
|
40
|
+
namespace margelo::nitro {
|
|
41
|
+
|
|
42
|
+
using namespace margelo::nitro::crypto;
|
|
43
|
+
|
|
44
|
+
// C++ AsymmetricKeyType <> JS AsymmetricKeyType (union)
|
|
45
|
+
template <>
|
|
46
|
+
struct JSIConverter<AsymmetricKeyType> {
|
|
47
|
+
static inline AsymmetricKeyType fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) {
|
|
48
|
+
std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, arg);
|
|
49
|
+
switch (hashString(unionValue.c_str(), unionValue.size())) {
|
|
50
|
+
case hashString("rsa"): return AsymmetricKeyType::RSA;
|
|
51
|
+
case hashString("rsa-pss"): return AsymmetricKeyType::RSA_PSS;
|
|
52
|
+
case hashString("dsa"): return AsymmetricKeyType::DSA;
|
|
53
|
+
case hashString("ec"): return AsymmetricKeyType::EC;
|
|
54
|
+
default: [[unlikely]]
|
|
55
|
+
throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum AsymmetricKeyType - invalid value!");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
static inline jsi::Value toJSI(jsi::Runtime& runtime, AsymmetricKeyType arg) {
|
|
59
|
+
switch (arg) {
|
|
60
|
+
case AsymmetricKeyType::RSA: return JSIConverter<std::string>::toJSI(runtime, "rsa");
|
|
61
|
+
case AsymmetricKeyType::RSA_PSS: return JSIConverter<std::string>::toJSI(runtime, "rsa-pss");
|
|
62
|
+
case AsymmetricKeyType::DSA: return JSIConverter<std::string>::toJSI(runtime, "dsa");
|
|
63
|
+
case AsymmetricKeyType::EC: return JSIConverter<std::string>::toJSI(runtime, "ec");
|
|
64
|
+
default: [[unlikely]]
|
|
65
|
+
throw std::invalid_argument("Cannot convert AsymmetricKeyType to JS - invalid value: "
|
|
66
|
+
+ std::to_string(static_cast<int>(arg)) + "!");
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
|
|
70
|
+
if (!value.isString()) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
std::string unionValue = JSIConverter<std::string>::fromJSI(runtime, value);
|
|
74
|
+
switch (hashString(unionValue.c_str(), unionValue.size())) {
|
|
75
|
+
case hashString("rsa"):
|
|
76
|
+
case hashString("rsa-pss"):
|
|
77
|
+
case hashString("dsa"):
|
|
78
|
+
case hashString("ec"):
|
|
79
|
+
return true;
|
|
80
|
+
default:
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
} // namespace margelo::nitro
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// HybridKeyObjectHandleSpec.cpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2024 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#include "HybridKeyObjectHandleSpec.hpp"
|
|
9
|
+
|
|
10
|
+
namespace margelo::nitro::crypto {
|
|
11
|
+
|
|
12
|
+
void HybridKeyObjectHandleSpec::loadHybridMethods() {
|
|
13
|
+
// load base methods/properties
|
|
14
|
+
HybridObject::loadHybridMethods();
|
|
15
|
+
// load custom methods/properties
|
|
16
|
+
registerHybrids(this, [](Prototype& prototype) {
|
|
17
|
+
prototype.registerHybridMethod("exportKey", &HybridKeyObjectHandleSpec::exportKey);
|
|
18
|
+
prototype.registerHybridMethod("exportJwk", &HybridKeyObjectHandleSpec::exportJwk);
|
|
19
|
+
prototype.registerHybridMethod("getAsymmetricKeyType", &HybridKeyObjectHandleSpec::getAsymmetricKeyType);
|
|
20
|
+
prototype.registerHybridMethod("init", &HybridKeyObjectHandleSpec::init);
|
|
21
|
+
prototype.registerHybridMethod("initECRaw", &HybridKeyObjectHandleSpec::initECRaw);
|
|
22
|
+
prototype.registerHybridMethod("initJwk", &HybridKeyObjectHandleSpec::initJwk);
|
|
23
|
+
prototype.registerHybridMethod("keyDetail", &HybridKeyObjectHandleSpec::keyDetail);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
} // namespace margelo::nitro::crypto
|