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.
Files changed (121) hide show
  1. package/QuickCrypto.podspec +4 -0
  2. package/README.md +2 -0
  3. package/android/CMakeLists.txt +26 -13
  4. package/android/build.gradle +4 -0
  5. package/android/src/main/cpp/cpp-adapter.cpp +3 -10
  6. package/android/src/main/java/com/margelo/nitro/quickcrypto/QuickCryptoPackage.java +15 -10
  7. package/cpp/pbkdf2/HybridPbkdf2.cpp +71 -0
  8. package/cpp/pbkdf2/HybridPbkdf2.hpp +35 -0
  9. package/cpp/random/HybridRandom.cpp +42 -18
  10. package/cpp/random/HybridRandom.hpp +13 -28
  11. package/cpp/utils/Utils.hpp +12 -1
  12. package/deps/fastpbkdf2/fastpbkdf2.c +352 -0
  13. package/deps/fastpbkdf2/fastpbkdf2.h +68 -0
  14. package/lib/commonjs/index.js +24 -5
  15. package/lib/commonjs/index.js.map +1 -1
  16. package/lib/commonjs/keys/index.js +86 -0
  17. package/lib/commonjs/keys/index.js.map +1 -0
  18. package/lib/commonjs/pbkdf2.js +89 -0
  19. package/lib/commonjs/pbkdf2.js.map +1 -0
  20. package/lib/commonjs/random.js +3 -3
  21. package/lib/commonjs/random.js.map +1 -1
  22. package/lib/commonjs/specs/keyObjectHandle.nitro.js +6 -0
  23. package/lib/commonjs/specs/keyObjectHandle.nitro.js.map +1 -0
  24. package/lib/commonjs/specs/pbkdf2.nitro.js +6 -0
  25. package/lib/commonjs/specs/pbkdf2.nitro.js.map +1 -0
  26. package/lib/commonjs/utils/conversion.js +74 -0
  27. package/lib/commonjs/utils/conversion.js.map +1 -1
  28. package/lib/commonjs/utils/errors.js +14 -0
  29. package/lib/commonjs/utils/errors.js.map +1 -0
  30. package/lib/commonjs/utils/hashnames.js +90 -0
  31. package/lib/commonjs/utils/hashnames.js.map +1 -0
  32. package/lib/commonjs/utils/index.js +43 -5
  33. package/lib/commonjs/utils/index.js.map +1 -1
  34. package/lib/commonjs/utils/types.js +27 -0
  35. package/lib/commonjs/utils/types.js.map +1 -1
  36. package/lib/module/index.js +9 -4
  37. package/lib/module/index.js.map +1 -1
  38. package/lib/module/keys/index.js +81 -0
  39. package/lib/module/keys/index.js.map +1 -0
  40. package/lib/module/pbkdf2.js +83 -0
  41. package/lib/module/pbkdf2.js.map +1 -0
  42. package/lib/module/random.js +1 -1
  43. package/lib/module/random.js.map +1 -1
  44. package/lib/module/specs/keyObjectHandle.nitro.js +4 -0
  45. package/lib/module/specs/keyObjectHandle.nitro.js.map +1 -0
  46. package/lib/module/specs/pbkdf2.nitro.js +4 -0
  47. package/lib/module/specs/pbkdf2.nitro.js.map +1 -0
  48. package/lib/module/utils/conversion.js +71 -0
  49. package/lib/module/utils/conversion.js.map +1 -1
  50. package/lib/module/utils/errors.js +10 -0
  51. package/lib/module/utils/errors.js.map +1 -0
  52. package/lib/module/utils/hashnames.js +88 -0
  53. package/lib/module/utils/hashnames.js.map +1 -0
  54. package/lib/module/utils/index.js +4 -5
  55. package/lib/module/utils/index.js.map +1 -1
  56. package/lib/module/utils/types.js +26 -0
  57. package/lib/module/utils/types.js.map +1 -1
  58. package/lib/tsconfig.tsbuildinfo +1 -1
  59. package/lib/typescript/index.d.ts +26 -9
  60. package/lib/typescript/index.d.ts.map +1 -1
  61. package/lib/typescript/keys/index.d.ts +22 -0
  62. package/lib/typescript/keys/index.d.ts.map +1 -0
  63. package/lib/typescript/pbkdf2.d.ts +12 -0
  64. package/lib/typescript/pbkdf2.d.ts.map +1 -0
  65. package/lib/typescript/random.d.ts +1 -1
  66. package/lib/typescript/random.d.ts.map +1 -1
  67. package/lib/typescript/specs/keyObjectHandle.nitro.d.ts +15 -0
  68. package/lib/typescript/specs/keyObjectHandle.nitro.d.ts.map +1 -0
  69. package/lib/typescript/specs/pbkdf2.nitro.d.ts +9 -0
  70. package/lib/typescript/specs/pbkdf2.nitro.d.ts.map +1 -0
  71. package/lib/typescript/utils/conversion.d.ts +7 -1
  72. package/lib/typescript/utils/conversion.d.ts.map +1 -1
  73. package/lib/typescript/utils/errors.d.ts +7 -0
  74. package/lib/typescript/utils/errors.d.ts.map +1 -0
  75. package/lib/typescript/utils/hashnames.d.ts +11 -0
  76. package/lib/typescript/utils/hashnames.d.ts.map +1 -0
  77. package/lib/typescript/utils/index.d.ts +4 -5
  78. package/lib/typescript/utils/index.d.ts.map +1 -1
  79. package/lib/typescript/utils/types.d.ts +101 -0
  80. package/lib/typescript/utils/types.d.ts.map +1 -1
  81. package/nitrogen/generated/android/QuickCrypto+autolinking.cmake +19 -3
  82. package/nitrogen/generated/android/QuickCrypto+autolinking.gradle +1 -2
  83. package/nitrogen/generated/android/QuickCryptoOnLoad.cpp +50 -0
  84. package/nitrogen/generated/android/QuickCryptoOnLoad.hpp +25 -0
  85. package/nitrogen/generated/android/QuickCryptoOnLoad.kt +1 -0
  86. package/nitrogen/generated/ios/QuickCrypto+autolinking.rb +7 -6
  87. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.cpp +10 -2
  88. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Bridge.hpp +4 -2
  89. package/nitrogen/generated/ios/QuickCrypto-Swift-Cxx-Umbrella.hpp +12 -6
  90. package/nitrogen/generated/ios/QuickCryptoAutolinking.mm +45 -0
  91. package/nitrogen/generated/ios/QuickCryptoAutolinking.swift +12 -0
  92. package/nitrogen/generated/shared/c++/AsymmetricKeyType.hpp +86 -0
  93. package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.cpp +27 -0
  94. package/nitrogen/generated/shared/c++/HybridKeyObjectHandleSpec.hpp +93 -0
  95. package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.cpp +22 -0
  96. package/nitrogen/generated/shared/c++/HybridPbkdf2Spec.hpp +66 -0
  97. package/nitrogen/generated/shared/c++/HybridRandomSpec.cpp +1 -2
  98. package/nitrogen/generated/shared/c++/HybridRandomSpec.hpp +7 -4
  99. package/nitrogen/generated/shared/c++/JWK.hpp +162 -0
  100. package/nitrogen/generated/shared/c++/JWKkty.hpp +86 -0
  101. package/nitrogen/generated/shared/c++/JWKuse.hpp +78 -0
  102. package/nitrogen/generated/shared/c++/KFormatType.hpp +65 -0
  103. package/nitrogen/generated/shared/c++/KeyDetail.hpp +93 -0
  104. package/nitrogen/generated/shared/c++/KeyEncoding.hpp +66 -0
  105. package/nitrogen/generated/shared/c++/KeyType.hpp +65 -0
  106. package/nitrogen/generated/shared/c++/KeyUsage.hpp +102 -0
  107. package/nitrogen/generated/shared/c++/NamedCurve.hpp +82 -0
  108. package/package.json +13 -12
  109. package/src/index.ts +8 -4
  110. package/src/keys/index.ts +99 -0
  111. package/src/pbkdf2.ts +154 -0
  112. package/src/random.ts +14 -14
  113. package/src/specs/keyObjectHandle.nitro.ts +32 -0
  114. package/src/specs/pbkdf2.nitro.ts +18 -0
  115. package/src/specs/random.nitro.ts +2 -2
  116. package/src/utils/conversion.ts +83 -1
  117. package/src/utils/errors.ts +15 -0
  118. package/src/utils/hashnames.ts +96 -0
  119. package/src/utils/index.ts +4 -6
  120. package/src/utils/types.ts +178 -2
  121. package/ios/QuickCryptoOnLoad.mm +0 -19
@@ -1,3 +1,7 @@
1
+ import { type Buffer } from '@craftzdog/react-native-buffer';
2
+ import { type Buffer as SBuffer } from 'safe-buffer';
3
+ import { type CipherKey } from 'crypto'; // @types/node
4
+
1
5
  export type ArrayBufferView = TypedArray | DataView | ArrayBufferLike | Buffer;
2
6
 
3
7
  export type TypedArray =
@@ -11,5 +15,177 @@ export type TypedArray =
11
15
  | Float32Array
12
16
  | Float64Array;
13
17
 
14
- export type RandomCallback<T> = (err: Error | null, value: T) => void;
15
-
18
+ export type RandomCallback<T> = (err: Error | null, value: T) => void;
19
+
20
+ export type BufferLike = ArrayBuffer | Buffer | SBuffer | ArrayBufferView;
21
+
22
+ export type BinaryLike =
23
+ | string
24
+ | ArrayBuffer
25
+ | Buffer
26
+ | SBuffer
27
+ | TypedArray
28
+ | DataView;
29
+
30
+ export type BinaryLikeNode = CipherKey | BinaryLike;
31
+
32
+ export type DigestAlgorithm = 'SHA-1' | 'SHA-256' | 'SHA-384' | 'SHA-512';
33
+
34
+ export type HashAlgorithm = DigestAlgorithm | 'SHA-224' | 'RIPEMD-160';
35
+
36
+ export type RSAKeyPairAlgorithm = 'RSASSA-PKCS1-v1_5' | 'RSA-PSS' | 'RSA-OAEP';
37
+
38
+ export type ECKeyPairAlgorithm = 'ECDSA' | 'ECDH';
39
+
40
+ export type CFRGKeyPairAlgorithm = 'Ed25519' | 'Ed448' | 'X25519' | 'X448';
41
+
42
+ export type KeyPairAlgorithm =
43
+ | RSAKeyPairAlgorithm
44
+ | ECKeyPairAlgorithm
45
+ | CFRGKeyPairAlgorithm;
46
+
47
+ export type AESAlgorithm = 'AES-CTR' | 'AES-CBC' | 'AES-GCM' | 'AES-KW';
48
+
49
+ export type SecretKeyAlgorithm = 'HMAC' | AESAlgorithm;
50
+
51
+ export type SignVerifyAlgorithm =
52
+ | 'RSASSA-PKCS1-v1_5'
53
+ | 'RSA-PSS'
54
+ | 'ECDSA'
55
+ | 'HMAC'
56
+ | 'Ed25519'
57
+ | 'Ed448';
58
+
59
+ export type DeriveBitsAlgorithm =
60
+ | 'PBKDF2'
61
+ | 'HKDF'
62
+ | 'ECDH'
63
+ | 'X25519'
64
+ | 'X448';
65
+
66
+ export type EncryptDecryptAlgorithm =
67
+ | 'RSA-OAEP'
68
+ | 'AES-CTR'
69
+ | 'AES-CBC'
70
+ | 'AES-GCM';
71
+
72
+ export type AnyAlgorithm =
73
+ | DigestAlgorithm
74
+ | HashAlgorithm
75
+ | KeyPairAlgorithm
76
+ | SecretKeyAlgorithm
77
+ | SignVerifyAlgorithm
78
+ | DeriveBitsAlgorithm
79
+ | EncryptDecryptAlgorithm
80
+ | AESAlgorithm
81
+ | 'PBKDF2'
82
+ | 'HKDF'
83
+ | 'unknown';
84
+
85
+ export type NamedCurve = 'P-256' | 'P-384' | 'P-521';
86
+
87
+ export type SubtleAlgorithm = {
88
+ name: AnyAlgorithm;
89
+ salt?: string;
90
+ iterations?: number;
91
+ hash?: HashAlgorithm;
92
+ namedCurve?: NamedCurve;
93
+ length?: number;
94
+ modulusLength?: number;
95
+ publicExponent?: number | Uint8Array;
96
+ };
97
+
98
+ export type KeyUsage =
99
+ | 'encrypt'
100
+ | 'decrypt'
101
+ | 'sign'
102
+ | 'verify'
103
+ | 'deriveKey'
104
+ | 'deriveBits'
105
+ | 'wrapKey'
106
+ | 'unwrapKey';
107
+
108
+ // On node this value is defined on the native side, for now I'm just creating it here in JS
109
+ // TODO(osp) move this into native side to make sure they always match
110
+ export enum KFormatType {
111
+ kKeyFormatDER,
112
+ kKeyFormatPEM,
113
+ kKeyFormatJWK,
114
+ }
115
+
116
+ // Same as KFormatType, this enum needs to be defined on the native side
117
+ export enum KeyType {
118
+ Secret,
119
+ Public,
120
+ Private,
121
+ }
122
+
123
+ export enum KeyEncoding {
124
+ kKeyEncodingPKCS1,
125
+ kKeyEncodingPKCS8,
126
+ kKeyEncodingSPKI,
127
+ kKeyEncodingSEC1,
128
+ }
129
+
130
+ export type AsymmetricKeyType = 'rsa' | 'rsa-pss' | 'dsa' | 'ec';
131
+
132
+ type JWKkty = 'AES' | 'RSA' | 'EC' | 'oct';
133
+ type JWKuse = 'sig' | 'enc';
134
+
135
+ export interface JWK {
136
+ kty?: JWKkty;
137
+ use?: JWKuse;
138
+ key_ops?: KeyUsage[];
139
+ alg?: string; // TODO: enumerate these (RFC-7517)
140
+ crv?: string;
141
+ kid?: string;
142
+ x5u?: string;
143
+ x5c?: string[];
144
+ x5t?: string;
145
+ 'x5t#256'?: string;
146
+ n?: string;
147
+ e?: string;
148
+ d?: string;
149
+ p?: string;
150
+ q?: string;
151
+ x?: string;
152
+ y?: string;
153
+ k?: string;
154
+ dp?: string;
155
+ dq?: string;
156
+ qi?: string;
157
+ ext?: boolean;
158
+ }
159
+
160
+ export type KTypePrivate = 'pkcs1' | 'pkcs8' | 'sec1';
161
+ export type KTypePublic = 'pkcs1' | 'spki';
162
+ export type KType = KTypePrivate | KTypePublic;
163
+
164
+ export type KFormat = 'der' | 'pem' | 'jwk';
165
+
166
+ export type DSAEncoding = 'der' | 'ieee-p1363';
167
+
168
+ export type EncodingOptions = {
169
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
170
+ key?: any;
171
+ type?: KType;
172
+ encoding?: string;
173
+ dsaEncoding?: DSAEncoding;
174
+ format?: KFormat;
175
+ padding?: number;
176
+ cipher?: string;
177
+ passphrase?: BinaryLike;
178
+ saltLength?: number;
179
+ oaepHash?: string;
180
+ oaepLabel?: BinaryLike;
181
+ };
182
+
183
+ export interface KeyDetail {
184
+ length?: number;
185
+ publicExponent?: number;
186
+ modulusLength?: number;
187
+ hashAlgorithm?: string;
188
+ mgf1HashAlgorithm?: string;
189
+ saltLength?: number;
190
+ namedCurve?: string;
191
+ }
@@ -1,19 +0,0 @@
1
-
2
- #include "HybridRandom.hpp"
3
- #include <NitroModules/HybridObjectRegistry.hpp>
4
-
5
- @interface QuickCryptoOnLoad : NSObject
6
- @end
7
-
8
- @implementation QuickCryptoOnLoad
9
-
10
- using namespace margelo::nitro;
11
- using namespace margelo::crypto;
12
-
13
- + (void)load {
14
- HybridObjectRegistry::registerHybridObjectConstructor(
15
- "Random", []() -> std::shared_ptr<HybridObject> { return std::make_shared<HybridRandom>();
16
- });
17
- }
18
-
19
- @end