@openwallet-foundation/askar-react-native 0.2.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/LICENSE +191 -0
- package/README.md +38 -0
- package/android/CMakeLists.txt +60 -0
- package/android/build.gradle +261 -0
- package/android/cpp-adapter.cpp +36 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/java/foundation/openwallet/askar/AskarModule.java +51 -0
- package/android/src/main/java/foundation/openwallet/askar/AskarPackage.java +23 -0
- package/android/src/main/java/id/animo/SecureEnvironment.java +5 -0
- package/askar.podspec +31 -0
- package/build/askar-react-native/src/NativeBindings.d.ts +144 -0
- package/build/askar-react-native/src/NativeBindings.js +3 -0
- package/build/askar-react-native/src/NativeBindings.js.map +1 -0
- package/build/askar-react-native/src/ReactNativeAskar.d.ts +100 -0
- package/build/askar-react-native/src/ReactNativeAskar.js +482 -0
- package/build/askar-react-native/src/ReactNativeAskar.js.map +1 -0
- package/build/askar-react-native/src/index.d.ts +1 -0
- package/build/askar-react-native/src/index.js +31 -0
- package/build/askar-react-native/src/index.js.map +1 -0
- package/build/askar-react-native/src/serialize.d.ts +14 -0
- package/build/askar-react-native/src/serialize.js +50 -0
- package/build/askar-react-native/src/serialize.js.map +1 -0
- package/build/askar-react-native/src/specs/NativeAskar.d.ts +5 -0
- package/build/askar-react-native/src/specs/NativeAskar.js +7 -0
- package/build/askar-react-native/src/specs/NativeAskar.js.map +1 -0
- package/build/askar-shared/src/askar/Askar.d.ts +437 -0
- package/build/askar-shared/src/askar/Askar.js +3 -0
- package/build/askar-shared/src/askar/Askar.js.map +1 -0
- package/build/askar-shared/src/askar/index.d.ts +2 -0
- package/build/askar-shared/src/askar/index.js +19 -0
- package/build/askar-shared/src/askar/index.js.map +1 -0
- package/build/askar-shared/src/askar/register.d.ts +5 -0
- package/build/askar-shared/src/askar/register.js +8 -0
- package/build/askar-shared/src/askar/register.js.map +1 -0
- package/build/askar-shared/src/crypto/AeadParams.d.ts +9 -0
- package/build/askar-shared/src/crypto/AeadParams.js +11 -0
- package/build/askar-shared/src/crypto/AeadParams.js.map +1 -0
- package/build/askar-shared/src/crypto/CryptoBox.d.ts +24 -0
- package/build/askar-shared/src/crypto/CryptoBox.js +23 -0
- package/build/askar-shared/src/crypto/CryptoBox.js.map +1 -0
- package/build/askar-shared/src/crypto/Ecdh1PU.d.ts +58 -0
- package/build/askar-shared/src/crypto/Ecdh1PU.js +77 -0
- package/build/askar-shared/src/crypto/Ecdh1PU.js.map +1 -0
- package/build/askar-shared/src/crypto/EcdhEs.d.ts +46 -0
- package/build/askar-shared/src/crypto/EcdhEs.js +64 -0
- package/build/askar-shared/src/crypto/EcdhEs.js.map +1 -0
- package/build/askar-shared/src/crypto/EncryptedBuffer.d.ts +20 -0
- package/build/askar-shared/src/crypto/EncryptedBuffer.js +36 -0
- package/build/askar-shared/src/crypto/EncryptedBuffer.js.map +1 -0
- package/build/askar-shared/src/crypto/Jwk.d.ts +18 -0
- package/build/askar-shared/src/crypto/Jwk.js +24 -0
- package/build/askar-shared/src/crypto/Jwk.js.map +1 -0
- package/build/askar-shared/src/crypto/Key.d.ts +73 -0
- package/build/askar-shared/src/crypto/Key.js +101 -0
- package/build/askar-shared/src/crypto/Key.js.map +1 -0
- package/build/askar-shared/src/crypto/handles.d.ts +46 -0
- package/build/askar-shared/src/crypto/handles.js +123 -0
- package/build/askar-shared/src/crypto/handles.js.map +1 -0
- package/build/askar-shared/src/crypto/index.d.ts +8 -0
- package/build/askar-shared/src/crypto/index.js +25 -0
- package/build/askar-shared/src/crypto/index.js.map +1 -0
- package/build/askar-shared/src/enums/EntryOperation.d.ts +5 -0
- package/build/askar-shared/src/enums/EntryOperation.js +10 -0
- package/build/askar-shared/src/enums/EntryOperation.js.map +1 -0
- package/build/askar-shared/src/enums/KeyAlgorithm.d.ts +20 -0
- package/build/askar-shared/src/enums/KeyAlgorithm.js +38 -0
- package/build/askar-shared/src/enums/KeyAlgorithm.js.map +1 -0
- package/build/askar-shared/src/enums/KeyBackend.d.ts +6 -0
- package/build/askar-shared/src/enums/KeyBackend.js +24 -0
- package/build/askar-shared/src/enums/KeyBackend.js.map +1 -0
- package/build/askar-shared/src/enums/KeyMethod.d.ts +4 -0
- package/build/askar-shared/src/enums/KeyMethod.js +9 -0
- package/build/askar-shared/src/enums/KeyMethod.js.map +1 -0
- package/build/askar-shared/src/enums/LogLevel.d.ts +9 -0
- package/build/askar-shared/src/enums/LogLevel.js +14 -0
- package/build/askar-shared/src/enums/LogLevel.js.map +1 -0
- package/build/askar-shared/src/enums/SignatureAlgorithm.d.ts +6 -0
- package/build/askar-shared/src/enums/SignatureAlgorithm.js +11 -0
- package/build/askar-shared/src/enums/SignatureAlgorithm.js.map +1 -0
- package/build/askar-shared/src/enums/index.d.ts +5 -0
- package/build/askar-shared/src/enums/index.js +22 -0
- package/build/askar-shared/src/enums/index.js.map +1 -0
- package/build/askar-shared/src/error.d.ts +12 -0
- package/build/askar-shared/src/error.js +21 -0
- package/build/askar-shared/src/error.js.map +1 -0
- package/build/askar-shared/src/index.d.ts +6 -0
- package/build/askar-shared/src/index.js +23 -0
- package/build/askar-shared/src/index.js.map +1 -0
- package/build/askar-shared/src/migration.d.ts +10 -0
- package/build/askar-shared/src/migration.js +11 -0
- package/build/askar-shared/src/migration.js.map +1 -0
- package/build/askar-shared/src/store/Entry.d.ts +21 -0
- package/build/askar-shared/src/store/Entry.js +38 -0
- package/build/askar-shared/src/store/Entry.js.map +1 -0
- package/build/askar-shared/src/store/EntryList.d.ts +17 -0
- package/build/askar-shared/src/store/EntryList.js +40 -0
- package/build/askar-shared/src/store/EntryList.js.map +1 -0
- package/build/askar-shared/src/store/KeyEntry.d.ts +23 -0
- package/build/askar-shared/src/store/KeyEntry.js +40 -0
- package/build/askar-shared/src/store/KeyEntry.js.map +1 -0
- package/build/askar-shared/src/store/KeyEntryList.d.ts +15 -0
- package/build/askar-shared/src/store/KeyEntryList.js +33 -0
- package/build/askar-shared/src/store/KeyEntryList.js.map +1 -0
- package/build/askar-shared/src/store/OpenSession.d.ts +14 -0
- package/build/askar-shared/src/store/OpenSession.js +27 -0
- package/build/askar-shared/src/store/OpenSession.js.map +1 -0
- package/build/askar-shared/src/store/Scan.d.ts +28 -0
- package/build/askar-shared/src/store/Scan.js +67 -0
- package/build/askar-shared/src/store/Scan.js.map +1 -0
- package/build/askar-shared/src/store/Session.d.ts +86 -0
- package/build/askar-shared/src/store/Session.js +182 -0
- package/build/askar-shared/src/store/Session.js.map +1 -0
- package/build/askar-shared/src/store/Store.d.ts +58 -0
- package/build/askar-shared/src/store/Store.js +87 -0
- package/build/askar-shared/src/store/Store.js.map +1 -0
- package/build/askar-shared/src/store/StoreKeyMethod.d.ts +11 -0
- package/build/askar-shared/src/store/StoreKeyMethod.js +20 -0
- package/build/askar-shared/src/store/StoreKeyMethod.js.map +1 -0
- package/build/askar-shared/src/store/index.d.ts +9 -0
- package/build/askar-shared/src/store/index.js +26 -0
- package/build/askar-shared/src/store/index.js.map +1 -0
- package/cpp/HostObject.cpp +198 -0
- package/cpp/HostObject.h +23 -0
- package/cpp/askar.cpp +1118 -0
- package/cpp/askar.h +111 -0
- package/cpp/include/libaries_askar.h +635 -0
- package/cpp/turboModuleUtility.cpp +598 -0
- package/cpp/turboModuleUtility.h +62 -0
- package/ios/Askar.h +5 -0
- package/ios/Askar.mm +33 -0
- package/package.json +59 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Ecdh1PU = void 0;
|
|
4
|
+
const askar_1 = require("../askar");
|
|
5
|
+
const Key_1 = require("./Key");
|
|
6
|
+
class Ecdh1PU {
|
|
7
|
+
constructor({ apv, apu, algId }) {
|
|
8
|
+
this.algId = algId;
|
|
9
|
+
this.apu = apu;
|
|
10
|
+
this.apv = apv;
|
|
11
|
+
}
|
|
12
|
+
deriveKey({ encryptionAlgorithm, ephemeralKey, recipientKey, senderKey, receive, ccTag, }) {
|
|
13
|
+
return new Key_1.Key(askar_1.askar.keyDeriveEcdh1pu({
|
|
14
|
+
algId: this.algId,
|
|
15
|
+
receive,
|
|
16
|
+
apv: this.apv,
|
|
17
|
+
apu: this.apu,
|
|
18
|
+
algorithm: encryptionAlgorithm,
|
|
19
|
+
ephemeralKey: ephemeralKey,
|
|
20
|
+
recipientKey: recipientKey,
|
|
21
|
+
senderKey: senderKey,
|
|
22
|
+
ccTag,
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
encryptDirect({ encryptionAlgorithm, recipientKey, ephemeralKey, senderKey, message, aad, nonce, }) {
|
|
26
|
+
const derived = this.deriveKey({
|
|
27
|
+
encryptionAlgorithm: encryptionAlgorithm,
|
|
28
|
+
ephemeralKey,
|
|
29
|
+
recipientKey,
|
|
30
|
+
senderKey,
|
|
31
|
+
receive: false,
|
|
32
|
+
});
|
|
33
|
+
const encryptedBuffer = derived.aeadEncrypt({ message, aad, nonce });
|
|
34
|
+
derived.handle.free();
|
|
35
|
+
return encryptedBuffer;
|
|
36
|
+
}
|
|
37
|
+
decryptDirect({ nonce, encryptionAlgorithm, recipientKey, ephemeralKey, senderKey, ciphertext, tag, aad, }) {
|
|
38
|
+
const derived = this.deriveKey({
|
|
39
|
+
encryptionAlgorithm: encryptionAlgorithm,
|
|
40
|
+
ephemeralKey,
|
|
41
|
+
recipientKey,
|
|
42
|
+
senderKey,
|
|
43
|
+
receive: true,
|
|
44
|
+
});
|
|
45
|
+
const encryptedBuffer = derived.aeadDecrypt({ tag, nonce, ciphertext, aad });
|
|
46
|
+
derived.handle.free();
|
|
47
|
+
return encryptedBuffer;
|
|
48
|
+
}
|
|
49
|
+
senderWrapKey({ keyWrappingAlgorithm, ephemeralKey, recipientKey, senderKey, cek, ccTag, }) {
|
|
50
|
+
const derived = this.deriveKey({
|
|
51
|
+
encryptionAlgorithm: keyWrappingAlgorithm,
|
|
52
|
+
ephemeralKey,
|
|
53
|
+
recipientKey,
|
|
54
|
+
senderKey,
|
|
55
|
+
receive: false,
|
|
56
|
+
ccTag,
|
|
57
|
+
});
|
|
58
|
+
const encryptedBuffer = derived.wrapKey({ other: cek });
|
|
59
|
+
derived.handle.free();
|
|
60
|
+
return encryptedBuffer;
|
|
61
|
+
}
|
|
62
|
+
receiverUnwrapKey({ keyWrappingAlgorithm, encryptionAlgorithm, recipientKey, ephemeralKey, senderKey, ciphertext, nonce, tag, ccTag, }) {
|
|
63
|
+
const derived = this.deriveKey({
|
|
64
|
+
encryptionAlgorithm: keyWrappingAlgorithm,
|
|
65
|
+
ephemeralKey,
|
|
66
|
+
recipientKey,
|
|
67
|
+
receive: true,
|
|
68
|
+
senderKey,
|
|
69
|
+
ccTag,
|
|
70
|
+
});
|
|
71
|
+
const encryptedBuffer = derived.unwrapKey({ tag, nonce, ciphertext, algorithm: encryptionAlgorithm });
|
|
72
|
+
derived.handle.free();
|
|
73
|
+
return encryptedBuffer;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.Ecdh1PU = Ecdh1PU;
|
|
77
|
+
//# sourceMappingURL=Ecdh1PU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ecdh1PU.js","sourceRoot":"","sources":["../../../../../askar-shared/src/crypto/Ecdh1PU.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { KeyAlgorithm } from '../enums';
|
|
2
|
+
import { Jwk } from './Jwk';
|
|
3
|
+
import { Key } from './Key';
|
|
4
|
+
export declare class EcdhEs {
|
|
5
|
+
private algId;
|
|
6
|
+
private apu;
|
|
7
|
+
private apv;
|
|
8
|
+
constructor({ apv, apu, algId }: {
|
|
9
|
+
algId: Uint8Array;
|
|
10
|
+
apu: Uint8Array;
|
|
11
|
+
apv: Uint8Array;
|
|
12
|
+
});
|
|
13
|
+
private deriveKey;
|
|
14
|
+
encryptDirect({ encryptionAlgorithm, recipientKey, ephemeralKey, message, aad, nonce, }: {
|
|
15
|
+
encryptionAlgorithm: KeyAlgorithm;
|
|
16
|
+
ephemeralKey: Key | Jwk;
|
|
17
|
+
recipientKey: Key | Jwk;
|
|
18
|
+
message: Uint8Array;
|
|
19
|
+
aad?: Uint8Array;
|
|
20
|
+
nonce?: Uint8Array;
|
|
21
|
+
}): import("@openwallet-foundation/askar-react-native").EncryptedBuffer;
|
|
22
|
+
decryptDirect({ nonce, encryptionAlgorithm, recipientKey, ciphertext, ephemeralKey, tag, aad, }: {
|
|
23
|
+
encryptionAlgorithm: KeyAlgorithm;
|
|
24
|
+
ephemeralKey: Key | Jwk;
|
|
25
|
+
recipientKey: Key | Jwk;
|
|
26
|
+
ciphertext: Uint8Array;
|
|
27
|
+
nonce: Uint8Array;
|
|
28
|
+
tag: Uint8Array;
|
|
29
|
+
aad?: Uint8Array;
|
|
30
|
+
}): Uint8Array;
|
|
31
|
+
senderWrapKey({ keyWrappingAlgorithm, ephemeralKey, recipientKey, cek, }: {
|
|
32
|
+
keyWrappingAlgorithm: KeyAlgorithm;
|
|
33
|
+
ephemeralKey: Key;
|
|
34
|
+
recipientKey: Key;
|
|
35
|
+
cek: Key;
|
|
36
|
+
}): import("@openwallet-foundation/askar-react-native").EncryptedBuffer;
|
|
37
|
+
receiverUnwrapKey({ recipientKey, keyWrappingAlgorithm, ephemeralKey, encryptionAlgorithm, ciphertext, nonce, tag, }: {
|
|
38
|
+
keyWrappingAlgorithm: KeyAlgorithm;
|
|
39
|
+
encryptionAlgorithm: KeyAlgorithm;
|
|
40
|
+
ephemeralKey: Key;
|
|
41
|
+
recipientKey: Key;
|
|
42
|
+
ciphertext: Uint8Array;
|
|
43
|
+
nonce?: Uint8Array;
|
|
44
|
+
tag?: Uint8Array;
|
|
45
|
+
}): Key;
|
|
46
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EcdhEs = void 0;
|
|
4
|
+
const askar_1 = require("../askar");
|
|
5
|
+
const Jwk_1 = require("./Jwk");
|
|
6
|
+
const Key_1 = require("./Key");
|
|
7
|
+
class EcdhEs {
|
|
8
|
+
constructor({ apv, apu, algId }) {
|
|
9
|
+
this.algId = algId;
|
|
10
|
+
this.apu = apu;
|
|
11
|
+
this.apv = apv;
|
|
12
|
+
}
|
|
13
|
+
deriveKey({ encryptionAlgorithm, ephemeralKey, recipientKey, receive, }) {
|
|
14
|
+
return new Key_1.Key(askar_1.askar.keyDeriveEcdhEs({
|
|
15
|
+
algId: this.algId,
|
|
16
|
+
receive,
|
|
17
|
+
apv: this.apv,
|
|
18
|
+
apu: this.apu,
|
|
19
|
+
algorithm: encryptionAlgorithm,
|
|
20
|
+
ephemeralKey,
|
|
21
|
+
recipientKey,
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
encryptDirect({ encryptionAlgorithm, recipientKey, ephemeralKey, message, aad, nonce, }) {
|
|
25
|
+
const eKey = ephemeralKey instanceof Jwk_1.Jwk ? Key_1.Key.fromJwk({ jwk: ephemeralKey }) : ephemeralKey;
|
|
26
|
+
const rKey = recipientKey instanceof Jwk_1.Jwk ? Key_1.Key.fromJwk({ jwk: recipientKey }) : recipientKey;
|
|
27
|
+
const derived = this.deriveKey({ encryptionAlgorithm, ephemeralKey: eKey, recipientKey: rKey, receive: false });
|
|
28
|
+
const encryptedBuffer = derived.aeadEncrypt({ message, aad, nonce });
|
|
29
|
+
derived.handle.free();
|
|
30
|
+
return encryptedBuffer;
|
|
31
|
+
}
|
|
32
|
+
decryptDirect({ nonce, encryptionAlgorithm, recipientKey, ciphertext, ephemeralKey, tag, aad, }) {
|
|
33
|
+
const eKey = ephemeralKey instanceof Jwk_1.Jwk ? Key_1.Key.fromJwk({ jwk: ephemeralKey }) : ephemeralKey;
|
|
34
|
+
const rKey = recipientKey instanceof Jwk_1.Jwk ? Key_1.Key.fromJwk({ jwk: recipientKey }) : recipientKey;
|
|
35
|
+
const derived = this.deriveKey({ encryptionAlgorithm, ephemeralKey: eKey, recipientKey: rKey, receive: true });
|
|
36
|
+
const encryptedBuffer = derived.aeadDecrypt({ tag, nonce, ciphertext, aad });
|
|
37
|
+
derived.handle.free();
|
|
38
|
+
return encryptedBuffer;
|
|
39
|
+
}
|
|
40
|
+
senderWrapKey({ keyWrappingAlgorithm, ephemeralKey, recipientKey, cek, }) {
|
|
41
|
+
const derived = this.deriveKey({
|
|
42
|
+
encryptionAlgorithm: keyWrappingAlgorithm,
|
|
43
|
+
ephemeralKey,
|
|
44
|
+
recipientKey,
|
|
45
|
+
receive: false,
|
|
46
|
+
});
|
|
47
|
+
const encryptedBuffer = derived.wrapKey({ other: cek });
|
|
48
|
+
derived.handle.free();
|
|
49
|
+
return encryptedBuffer;
|
|
50
|
+
}
|
|
51
|
+
receiverUnwrapKey({ recipientKey, keyWrappingAlgorithm, ephemeralKey, encryptionAlgorithm, ciphertext, nonce, tag, }) {
|
|
52
|
+
const derived = this.deriveKey({
|
|
53
|
+
encryptionAlgorithm: keyWrappingAlgorithm,
|
|
54
|
+
ephemeralKey,
|
|
55
|
+
recipientKey,
|
|
56
|
+
receive: true,
|
|
57
|
+
});
|
|
58
|
+
const encryptedBuffer = derived.unwrapKey({ tag, nonce, ciphertext, algorithm: encryptionAlgorithm });
|
|
59
|
+
derived.handle.free();
|
|
60
|
+
return encryptedBuffer;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.EcdhEs = EcdhEs;
|
|
64
|
+
//# sourceMappingURL=EcdhEs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EcdhEs.js","sourceRoot":"","sources":["../../../../../askar-shared/src/crypto/EcdhEs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type EncryptedBufferOptions = {
|
|
2
|
+
buffer: Uint8Array;
|
|
3
|
+
tagPos: number;
|
|
4
|
+
noncePos: number;
|
|
5
|
+
};
|
|
6
|
+
export declare class EncryptedBuffer {
|
|
7
|
+
private buffer;
|
|
8
|
+
private tagPos;
|
|
9
|
+
private noncePos;
|
|
10
|
+
constructor({ noncePos, tagPos, buffer }: EncryptedBufferOptions);
|
|
11
|
+
get ciphertextWithTag(): Uint8Array;
|
|
12
|
+
get ciphertext(): Uint8Array;
|
|
13
|
+
get nonce(): Uint8Array;
|
|
14
|
+
get tag(): Uint8Array;
|
|
15
|
+
get parts(): {
|
|
16
|
+
ciphertext: Uint8Array;
|
|
17
|
+
tag: Uint8Array;
|
|
18
|
+
nonce: Uint8Array;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EncryptedBuffer = void 0;
|
|
4
|
+
class EncryptedBuffer {
|
|
5
|
+
constructor({ noncePos, tagPos, buffer }) {
|
|
6
|
+
this.buffer = buffer;
|
|
7
|
+
this.tagPos = tagPos;
|
|
8
|
+
this.noncePos = noncePos;
|
|
9
|
+
}
|
|
10
|
+
get ciphertextWithTag() {
|
|
11
|
+
const p = this.noncePos;
|
|
12
|
+
return this.buffer.slice(0, p);
|
|
13
|
+
}
|
|
14
|
+
get ciphertext() {
|
|
15
|
+
const p = this.tagPos;
|
|
16
|
+
return this.buffer.slice(0, p);
|
|
17
|
+
}
|
|
18
|
+
get nonce() {
|
|
19
|
+
const p = this.noncePos;
|
|
20
|
+
return this.buffer.slice(p);
|
|
21
|
+
}
|
|
22
|
+
get tag() {
|
|
23
|
+
const p1 = this.tagPos;
|
|
24
|
+
const p2 = this.noncePos;
|
|
25
|
+
return this.buffer.slice(p1, p2);
|
|
26
|
+
}
|
|
27
|
+
get parts() {
|
|
28
|
+
return {
|
|
29
|
+
ciphertext: this.ciphertext,
|
|
30
|
+
tag: this.tag,
|
|
31
|
+
nonce: this.nonce,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.EncryptedBuffer = EncryptedBuffer;
|
|
36
|
+
//# sourceMappingURL=EncryptedBuffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EncryptedBuffer.js","sourceRoot":"","sources":["../../../../../askar-shared/src/crypto/EncryptedBuffer.ts"],"names":[],"mappings":";;;AAMA,MAAa,eAAe;IAK1B,YAAmB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAA0B;QACrE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,IAAW,iBAAiB;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAA;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAChC,CAAC;IAED,IAAW,UAAU;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAChC,CAAC;IAED,IAAW,KAAK;QACd,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAA;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,IAAW,GAAG;QACZ,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAA;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAA;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IAClC,CAAC;IAED,IAAW,KAAK;QACd,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAA;IACH,CAAC;CACF;AAvCD,0CAuCC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export type JwkProps = {
|
|
2
|
+
kty: string;
|
|
3
|
+
crv: string;
|
|
4
|
+
x: string;
|
|
5
|
+
d?: string;
|
|
6
|
+
y?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare class Jwk {
|
|
9
|
+
kty: string;
|
|
10
|
+
crv: string;
|
|
11
|
+
x: string;
|
|
12
|
+
d?: string;
|
|
13
|
+
y?: string;
|
|
14
|
+
constructor({ kty, crv, x, d, y }: JwkProps);
|
|
15
|
+
static fromJson(jwk: JwkProps): Jwk;
|
|
16
|
+
static fromString(str: string): Jwk;
|
|
17
|
+
toUint8Array(): Uint8Array;
|
|
18
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Jwk = void 0;
|
|
4
|
+
const buffer_1 = require("buffer");
|
|
5
|
+
class Jwk {
|
|
6
|
+
constructor({ kty, crv, x, d, y }) {
|
|
7
|
+
this.kty = kty;
|
|
8
|
+
this.crv = crv;
|
|
9
|
+
this.x = x;
|
|
10
|
+
this.d = d;
|
|
11
|
+
this.y = y;
|
|
12
|
+
}
|
|
13
|
+
static fromJson(jwk) {
|
|
14
|
+
return new Jwk(jwk);
|
|
15
|
+
}
|
|
16
|
+
static fromString(str) {
|
|
17
|
+
return new Jwk(JSON.parse(str));
|
|
18
|
+
}
|
|
19
|
+
toUint8Array() {
|
|
20
|
+
return Uint8Array.from(buffer_1.Buffer.from(JSON.stringify(this)));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.Jwk = Jwk;
|
|
24
|
+
//# sourceMappingURL=Jwk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Jwk.js","sourceRoot":"","sources":["../../../../../askar-shared/src/crypto/Jwk.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAU/B,MAAa,GAAG;IAOd,YAAmB,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAY;QAChD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACV,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,GAAa;QAClC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IACrB,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,GAAW;QAClC,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAa,CAAC,CAAA;IAC7C,CAAC;IAEM,YAAY;QACjB,OAAO,UAAU,CAAC,IAAI,CAAC,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC3D,CAAC;CACF;AA1BD,kBA0BC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { KeyAlgorithm, SignatureAlgorithm } from '../enums';
|
|
2
|
+
import type { KeyBackend } from '../enums';
|
|
3
|
+
import type { LocalKeyHandle } from './handles';
|
|
4
|
+
import { KeyMethod } from '../enums';
|
|
5
|
+
import { Jwk } from './Jwk';
|
|
6
|
+
export declare class Key {
|
|
7
|
+
private localKeyHandle;
|
|
8
|
+
constructor(handle: LocalKeyHandle);
|
|
9
|
+
static generate(algorithm: KeyAlgorithm, keyBackend?: KeyBackend, ephemeral?: boolean): Key;
|
|
10
|
+
static fromSeed({ method, algorithm, seed, }: {
|
|
11
|
+
algorithm: KeyAlgorithm;
|
|
12
|
+
seed: Uint8Array;
|
|
13
|
+
method?: KeyMethod;
|
|
14
|
+
}): Key;
|
|
15
|
+
static fromSecretBytes(options: {
|
|
16
|
+
algorithm: KeyAlgorithm;
|
|
17
|
+
secretKey: Uint8Array;
|
|
18
|
+
}): Key;
|
|
19
|
+
static fromPublicBytes(options: {
|
|
20
|
+
algorithm: KeyAlgorithm;
|
|
21
|
+
publicKey: Uint8Array;
|
|
22
|
+
}): Key;
|
|
23
|
+
static fromJwk(options: {
|
|
24
|
+
jwk: Jwk;
|
|
25
|
+
}): Key;
|
|
26
|
+
convertkey(options: {
|
|
27
|
+
algorithm: KeyAlgorithm;
|
|
28
|
+
}): Key;
|
|
29
|
+
keyFromKeyExchange({ algorithm, publicKey }: {
|
|
30
|
+
algorithm: KeyAlgorithm;
|
|
31
|
+
publicKey: Key;
|
|
32
|
+
}): Key;
|
|
33
|
+
get handle(): LocalKeyHandle;
|
|
34
|
+
get algorithm(): KeyAlgorithm;
|
|
35
|
+
get ephemeral(): boolean;
|
|
36
|
+
get publicBytes(): Uint8Array;
|
|
37
|
+
get secretBytes(): Uint8Array;
|
|
38
|
+
get jwkPublic(): Jwk;
|
|
39
|
+
get jwkSecret(): Jwk;
|
|
40
|
+
get jwkThumbprint(): string;
|
|
41
|
+
get aeadParams(): import("@openwallet-foundation/askar-react-native").AeadParams;
|
|
42
|
+
get aeadRandomNonce(): Uint8Array;
|
|
43
|
+
aeadEncrypt(options: {
|
|
44
|
+
message: Uint8Array;
|
|
45
|
+
nonce?: Uint8Array;
|
|
46
|
+
aad?: Uint8Array;
|
|
47
|
+
}): import("@openwallet-foundation/askar-react-native").EncryptedBuffer;
|
|
48
|
+
aeadDecrypt(options: {
|
|
49
|
+
ciphertext: Uint8Array;
|
|
50
|
+
nonce: Uint8Array;
|
|
51
|
+
tag?: Uint8Array;
|
|
52
|
+
aad?: Uint8Array;
|
|
53
|
+
}): Uint8Array;
|
|
54
|
+
signMessage(options: {
|
|
55
|
+
message: Uint8Array;
|
|
56
|
+
sigType?: SignatureAlgorithm;
|
|
57
|
+
}): Uint8Array;
|
|
58
|
+
verifySignature(options: {
|
|
59
|
+
message: Uint8Array;
|
|
60
|
+
signature: Uint8Array;
|
|
61
|
+
sigType?: SignatureAlgorithm;
|
|
62
|
+
}): boolean;
|
|
63
|
+
wrapKey({ other, nonce }: {
|
|
64
|
+
other: Key;
|
|
65
|
+
nonce?: Uint8Array;
|
|
66
|
+
}): import("@openwallet-foundation/askar-react-native").EncryptedBuffer;
|
|
67
|
+
unwrapKey(options: {
|
|
68
|
+
algorithm: KeyAlgorithm;
|
|
69
|
+
tag?: Uint8Array;
|
|
70
|
+
ciphertext: Uint8Array;
|
|
71
|
+
nonce?: Uint8Array;
|
|
72
|
+
}): Key;
|
|
73
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Key = void 0;
|
|
4
|
+
const buffer_1 = require("buffer");
|
|
5
|
+
const askar_1 = require("../askar");
|
|
6
|
+
const enums_1 = require("../enums");
|
|
7
|
+
const Jwk_1 = require("./Jwk");
|
|
8
|
+
class Key {
|
|
9
|
+
constructor(handle) {
|
|
10
|
+
this.localKeyHandle = handle;
|
|
11
|
+
}
|
|
12
|
+
static generate(algorithm, keyBackend, ephemeral = false) {
|
|
13
|
+
return new Key(askar_1.askar.keyGenerate({ algorithm, keyBackend, ephemeral }));
|
|
14
|
+
}
|
|
15
|
+
static fromSeed({ method = enums_1.KeyMethod.None, algorithm, seed, }) {
|
|
16
|
+
return new Key(askar_1.askar.keyFromSeed({ algorithm, method, seed }));
|
|
17
|
+
}
|
|
18
|
+
static fromSecretBytes(options) {
|
|
19
|
+
return new Key(askar_1.askar.keyFromSecretBytes(options));
|
|
20
|
+
}
|
|
21
|
+
static fromPublicBytes(options) {
|
|
22
|
+
return new Key(askar_1.askar.keyFromPublicBytes(options));
|
|
23
|
+
}
|
|
24
|
+
static fromJwk(options) {
|
|
25
|
+
return new Key(askar_1.askar.keyFromJwk(options));
|
|
26
|
+
}
|
|
27
|
+
convertkey(options) {
|
|
28
|
+
return new Key(askar_1.askar.keyConvert(Object.assign({ localKeyHandle: this.handle }, options)));
|
|
29
|
+
}
|
|
30
|
+
keyFromKeyExchange({ algorithm, publicKey }) {
|
|
31
|
+
return new Key(askar_1.askar.keyFromKeyExchange({
|
|
32
|
+
skHandle: this.handle,
|
|
33
|
+
pkHandle: publicKey.handle,
|
|
34
|
+
algorithm,
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
get handle() {
|
|
38
|
+
return this.localKeyHandle;
|
|
39
|
+
}
|
|
40
|
+
get algorithm() {
|
|
41
|
+
const alg = askar_1.askar.keyGetAlgorithm({ localKeyHandle: this.handle });
|
|
42
|
+
return (0, enums_1.keyAlgorithmFromString)(alg);
|
|
43
|
+
}
|
|
44
|
+
get ephemeral() {
|
|
45
|
+
return Boolean(askar_1.askar.keyGetEphemeral({ localKeyHandle: this.handle }));
|
|
46
|
+
}
|
|
47
|
+
get publicBytes() {
|
|
48
|
+
return askar_1.askar.keyGetPublicBytes({ localKeyHandle: this.handle });
|
|
49
|
+
}
|
|
50
|
+
get secretBytes() {
|
|
51
|
+
return askar_1.askar.keyGetSecretBytes({ localKeyHandle: this.handle });
|
|
52
|
+
}
|
|
53
|
+
get jwkPublic() {
|
|
54
|
+
return Jwk_1.Jwk.fromString(askar_1.askar.keyGetJwkPublic({
|
|
55
|
+
localKeyHandle: this.handle,
|
|
56
|
+
algorithm: this.algorithm,
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
get jwkSecret() {
|
|
60
|
+
const secretBytes = askar_1.askar.keyGetJwkSecret({
|
|
61
|
+
localKeyHandle: this.handle,
|
|
62
|
+
});
|
|
63
|
+
return Jwk_1.Jwk.fromString(buffer_1.Buffer.from(secretBytes).toString());
|
|
64
|
+
}
|
|
65
|
+
get jwkThumbprint() {
|
|
66
|
+
return askar_1.askar.keyGetJwkThumbprint({
|
|
67
|
+
localKeyHandle: this.handle,
|
|
68
|
+
algorithm: this.algorithm,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
get aeadParams() {
|
|
72
|
+
return askar_1.askar.keyAeadGetParams({ localKeyHandle: this.handle });
|
|
73
|
+
}
|
|
74
|
+
get aeadRandomNonce() {
|
|
75
|
+
return askar_1.askar.keyAeadRandomNonce({ localKeyHandle: this.handle });
|
|
76
|
+
}
|
|
77
|
+
aeadEncrypt(options) {
|
|
78
|
+
return askar_1.askar.keyAeadEncrypt(Object.assign({ localKeyHandle: this.handle }, options));
|
|
79
|
+
}
|
|
80
|
+
aeadDecrypt(options) {
|
|
81
|
+
return askar_1.askar.keyAeadDecrypt(Object.assign({ localKeyHandle: this.handle }, options));
|
|
82
|
+
}
|
|
83
|
+
signMessage(options) {
|
|
84
|
+
return askar_1.askar.keySignMessage(Object.assign({ localKeyHandle: this.handle }, options));
|
|
85
|
+
}
|
|
86
|
+
verifySignature(options) {
|
|
87
|
+
return askar_1.askar.keyVerifySignature(Object.assign({ localKeyHandle: this.handle }, options));
|
|
88
|
+
}
|
|
89
|
+
wrapKey({ other, nonce }) {
|
|
90
|
+
return askar_1.askar.keyWrapKey({
|
|
91
|
+
localKeyHandle: this.handle,
|
|
92
|
+
other: other.handle,
|
|
93
|
+
nonce,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
unwrapKey(options) {
|
|
97
|
+
return new Key(askar_1.askar.keyUnwrapKey(Object.assign({ localKeyHandle: this.handle }, options)));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.Key = Key;
|
|
101
|
+
//# sourceMappingURL=Key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Key.js","sourceRoot":"","sources":["../../../../../askar-shared/src/crypto/Key.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
type ArcHandleType = Uint8Array | string | null;
|
|
2
|
+
export declare class ArcHandle {
|
|
3
|
+
handle: Uint8Array | string;
|
|
4
|
+
constructor(handle: Uint8Array | string);
|
|
5
|
+
static fromHandle(handle: ArcHandleType): ArcHandle | null;
|
|
6
|
+
}
|
|
7
|
+
export declare class StoreHandle {
|
|
8
|
+
handle: number;
|
|
9
|
+
constructor(handle: number);
|
|
10
|
+
close(): Promise<void>;
|
|
11
|
+
static fromHandle(handle: number | null): StoreHandle;
|
|
12
|
+
}
|
|
13
|
+
export declare class ScanHandle {
|
|
14
|
+
handle: number;
|
|
15
|
+
constructor(handle: number);
|
|
16
|
+
free(): void;
|
|
17
|
+
static fromHandle(handle: number | null): ScanHandle;
|
|
18
|
+
}
|
|
19
|
+
export declare class SessionHandle {
|
|
20
|
+
handle: number;
|
|
21
|
+
constructor(handle: number);
|
|
22
|
+
close(commit: boolean): Promise<void>;
|
|
23
|
+
static fromHandle(handle: number | null): SessionHandle;
|
|
24
|
+
}
|
|
25
|
+
export declare class EntryListHandle extends ArcHandle {
|
|
26
|
+
getCategory(index: number): string;
|
|
27
|
+
getName(index: number): string;
|
|
28
|
+
getValue(index: number): Uint8Array;
|
|
29
|
+
getTags(index: number): string | null;
|
|
30
|
+
free(): void;
|
|
31
|
+
static fromHandle(handle: ArcHandleType): EntryListHandle | null;
|
|
32
|
+
}
|
|
33
|
+
export declare class KeyEntryListHandle extends ArcHandle {
|
|
34
|
+
getAlgorithm(index: number): string;
|
|
35
|
+
getName(index: number): string;
|
|
36
|
+
getTags(index: number): string | null;
|
|
37
|
+
getMetadata(index: number): string | null;
|
|
38
|
+
loadKey(index: number): LocalKeyHandle;
|
|
39
|
+
free(): void;
|
|
40
|
+
static fromHandle(handle: ArcHandleType): KeyEntryListHandle | null;
|
|
41
|
+
}
|
|
42
|
+
export declare class LocalKeyHandle extends ArcHandle {
|
|
43
|
+
free(): void;
|
|
44
|
+
static fromHandle(handle: ArcHandleType): LocalKeyHandle | null;
|
|
45
|
+
}
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LocalKeyHandle = exports.KeyEntryListHandle = exports.EntryListHandle = exports.SessionHandle = exports.ScanHandle = exports.StoreHandle = exports.ArcHandle = void 0;
|
|
4
|
+
const askar_1 = require("../askar");
|
|
5
|
+
const error_1 = require("../error");
|
|
6
|
+
class ArcHandle {
|
|
7
|
+
constructor(handle) {
|
|
8
|
+
if (handle === '0') {
|
|
9
|
+
throw error_1.AskarError.customError({
|
|
10
|
+
message: 'Invalid handle. This means that the function call succeeded but none was found.',
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
this.handle = handle;
|
|
14
|
+
}
|
|
15
|
+
static fromHandle(handle) {
|
|
16
|
+
return fromPointerHandle(ArcHandle, handle);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.ArcHandle = ArcHandle;
|
|
20
|
+
class StoreHandle {
|
|
21
|
+
constructor(handle) {
|
|
22
|
+
this.handle = handle;
|
|
23
|
+
}
|
|
24
|
+
async close() {
|
|
25
|
+
await askar_1.askar.storeClose({ storeHandle: this });
|
|
26
|
+
}
|
|
27
|
+
static fromHandle(handle) {
|
|
28
|
+
return fromSequenceHandle(StoreHandle, handle);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.StoreHandle = StoreHandle;
|
|
32
|
+
class ScanHandle {
|
|
33
|
+
constructor(handle) {
|
|
34
|
+
this.handle = handle;
|
|
35
|
+
}
|
|
36
|
+
free() {
|
|
37
|
+
askar_1.askar.scanFree({ scanHandle: this });
|
|
38
|
+
}
|
|
39
|
+
static fromHandle(handle) {
|
|
40
|
+
return fromSequenceHandle(ScanHandle, handle);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.ScanHandle = ScanHandle;
|
|
44
|
+
class SessionHandle {
|
|
45
|
+
constructor(handle) {
|
|
46
|
+
this.handle = handle;
|
|
47
|
+
}
|
|
48
|
+
async close(commit) {
|
|
49
|
+
await askar_1.askar.sessionClose({ commit, sessionHandle: this });
|
|
50
|
+
}
|
|
51
|
+
static fromHandle(handle) {
|
|
52
|
+
return fromSequenceHandle(SessionHandle, handle);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.SessionHandle = SessionHandle;
|
|
56
|
+
class EntryListHandle extends ArcHandle {
|
|
57
|
+
getCategory(index) {
|
|
58
|
+
return askar_1.askar.entryListGetCategory({ index, entryListHandle: this });
|
|
59
|
+
}
|
|
60
|
+
getName(index) {
|
|
61
|
+
return askar_1.askar.entryListGetName({ index, entryListHandle: this });
|
|
62
|
+
}
|
|
63
|
+
getValue(index) {
|
|
64
|
+
return askar_1.askar.entryListGetValue({ index, entryListHandle: this });
|
|
65
|
+
}
|
|
66
|
+
getTags(index) {
|
|
67
|
+
return askar_1.askar.entryListGetTags({ index, entryListHandle: this });
|
|
68
|
+
}
|
|
69
|
+
free() {
|
|
70
|
+
askar_1.askar.entryListFree({ entryListHandle: this });
|
|
71
|
+
}
|
|
72
|
+
static fromHandle(handle) {
|
|
73
|
+
return fromPointerHandle(EntryListHandle, handle);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.EntryListHandle = EntryListHandle;
|
|
77
|
+
class KeyEntryListHandle extends ArcHandle {
|
|
78
|
+
getAlgorithm(index) {
|
|
79
|
+
return askar_1.askar.keyEntryListGetAlgorithm({ index, keyEntryListHandle: this });
|
|
80
|
+
}
|
|
81
|
+
getName(index) {
|
|
82
|
+
return askar_1.askar.keyEntryListGetName({ index, keyEntryListHandle: this });
|
|
83
|
+
}
|
|
84
|
+
getTags(index) {
|
|
85
|
+
return askar_1.askar.keyEntryListGetTags({ index, keyEntryListHandle: this });
|
|
86
|
+
}
|
|
87
|
+
getMetadata(index) {
|
|
88
|
+
return askar_1.askar.keyEntryListGetMetadata({ index, keyEntryListHandle: this });
|
|
89
|
+
}
|
|
90
|
+
loadKey(index) {
|
|
91
|
+
return askar_1.askar.keyEntryListLoadLocal({ index, keyEntryListHandle: this });
|
|
92
|
+
}
|
|
93
|
+
free() {
|
|
94
|
+
askar_1.askar.keyEntryListFree({ keyEntryListHandle: this });
|
|
95
|
+
}
|
|
96
|
+
static fromHandle(handle) {
|
|
97
|
+
return fromPointerHandle(KeyEntryListHandle, handle);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.KeyEntryListHandle = KeyEntryListHandle;
|
|
101
|
+
class LocalKeyHandle extends ArcHandle {
|
|
102
|
+
free() {
|
|
103
|
+
askar_1.askar.keyFree({ localKeyHandle: this });
|
|
104
|
+
}
|
|
105
|
+
static fromHandle(handle) {
|
|
106
|
+
return fromPointerHandle(LocalKeyHandle, handle);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.LocalKeyHandle = LocalKeyHandle;
|
|
110
|
+
/**
|
|
111
|
+
* Instantiate an handle class based on a received handle. If the handle has a value
|
|
112
|
+
* of null, the handle class won't be instantiated but rather null will be returned.
|
|
113
|
+
*/
|
|
114
|
+
function fromPointerHandle(HandleClass, handle) {
|
|
115
|
+
return (handle ? new HandleClass(handle) : null);
|
|
116
|
+
}
|
|
117
|
+
function fromSequenceHandle(HandleClass, handle) {
|
|
118
|
+
if (handle === null) {
|
|
119
|
+
throw error_1.AskarError.customError({ message: 'Invalid handle' });
|
|
120
|
+
}
|
|
121
|
+
return new HandleClass(handle);
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=handles.js.map
|