@credo-ts/askar 0.6.1-pr-2091-20241119140918 → 0.6.2-alpha-20251210145840
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/build/AskarApi.d.mts +68 -0
- package/build/AskarApi.d.mts.map +1 -0
- package/build/AskarApi.mjs +94 -0
- package/build/AskarApi.mjs.map +1 -0
- package/build/AskarApiOptions.d.mts +29 -0
- package/build/AskarApiOptions.d.mts.map +1 -0
- package/build/AskarModule.d.mts +18 -0
- package/build/AskarModule.d.mts.map +1 -0
- package/build/AskarModule.mjs +61 -0
- package/build/AskarModule.mjs.map +1 -0
- package/build/AskarModuleConfig.d.mts +125 -0
- package/build/AskarModuleConfig.d.mts.map +1 -0
- package/build/AskarModuleConfig.mjs +41 -0
- package/build/AskarModuleConfig.mjs.map +1 -0
- package/build/AskarStorageConfig.d.mts +32 -0
- package/build/AskarStorageConfig.d.mts.map +1 -0
- package/build/AskarStorageConfig.mjs +11 -0
- package/build/AskarStorageConfig.mjs.map +1 -0
- package/build/AskarStoreManager.d.mts +109 -0
- package/build/AskarStoreManager.d.mts.map +1 -0
- package/build/AskarStoreManager.mjs +386 -0
- package/build/AskarStoreManager.mjs.map +1 -0
- package/build/_virtual/_@oxc-project_runtime@0.99.0/helpers/decorate.mjs +10 -0
- package/build/_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateMetadata.mjs +7 -0
- package/build/_virtual/_@oxc-project_runtime@0.99.0/helpers/decorateParam.mjs +9 -0
- package/build/error/AskarError.d.mts +1 -0
- package/build/error/AskarError.mjs +12 -0
- package/build/error/AskarError.mjs.map +1 -0
- package/build/error/AskarStoreDuplicateError.d.mts +13 -0
- package/build/error/AskarStoreDuplicateError.d.mts.map +1 -0
- package/build/error/AskarStoreDuplicateError.mjs +12 -0
- package/build/error/AskarStoreDuplicateError.mjs.map +1 -0
- package/build/error/AskarStoreError.d.mts +13 -0
- package/build/error/AskarStoreError.d.mts.map +1 -0
- package/build/error/AskarStoreError.mjs +12 -0
- package/build/error/AskarStoreError.mjs.map +1 -0
- package/build/error/AskarStoreExportPathExistsError.d.mts +13 -0
- package/build/error/AskarStoreExportPathExistsError.d.mts.map +1 -0
- package/build/error/AskarStoreExportPathExistsError.mjs +12 -0
- package/build/error/AskarStoreExportPathExistsError.mjs.map +1 -0
- package/build/error/AskarStoreExportUnsupportedError.d.mts +13 -0
- package/build/error/AskarStoreExportUnsupportedError.d.mts.map +1 -0
- package/build/error/AskarStoreExportUnsupportedError.mjs +12 -0
- package/build/error/AskarStoreExportUnsupportedError.mjs.map +1 -0
- package/build/error/AskarStoreImportPathExistsError.d.mts +13 -0
- package/build/error/AskarStoreImportPathExistsError.d.mts.map +1 -0
- package/build/error/AskarStoreImportPathExistsError.mjs +12 -0
- package/build/error/AskarStoreImportPathExistsError.mjs.map +1 -0
- package/build/error/AskarStoreInvalidKeyError.d.mts +13 -0
- package/build/error/AskarStoreInvalidKeyError.d.mts.map +1 -0
- package/build/error/AskarStoreInvalidKeyError.mjs +12 -0
- package/build/error/AskarStoreInvalidKeyError.mjs.map +1 -0
- package/build/error/AskarStoreNotFoundError.d.mts +13 -0
- package/build/error/AskarStoreNotFoundError.d.mts.map +1 -0
- package/build/error/AskarStoreNotFoundError.mjs +12 -0
- package/build/error/AskarStoreNotFoundError.mjs.map +1 -0
- package/build/error/index.d.mts +8 -0
- package/build/error/index.mjs +8 -0
- package/build/index.d.mts +19 -0
- package/build/index.mjs +19 -0
- package/build/kms/AskarKeyManagementService.d.mts +30 -0
- package/build/kms/AskarKeyManagementService.d.mts.map +1 -0
- package/build/kms/AskarKeyManagementService.mjs +415 -0
- package/build/kms/AskarKeyManagementService.mjs.map +1 -0
- package/build/kms/crypto/decrypt.mjs +21 -0
- package/build/kms/crypto/decrypt.mjs.map +1 -0
- package/build/kms/crypto/deriveKey.mjs +87 -0
- package/build/kms/crypto/deriveKey.mjs.map +1 -0
- package/build/kms/crypto/encrypt.mjs +24 -0
- package/build/kms/crypto/encrypt.mjs.map +1 -0
- package/build/kms/crypto/randomBytes.mjs +19 -0
- package/build/kms/crypto/randomBytes.mjs.map +1 -0
- package/build/storage/AskarStorageService.d.mts +34 -0
- package/build/storage/AskarStorageService.d.mts.map +1 -0
- package/build/storage/AskarStorageService.mjs +169 -0
- package/build/storage/AskarStorageService.mjs.map +1 -0
- package/build/storage/index.d.mts +1 -0
- package/build/storage/index.mjs +1 -0
- package/build/storage/utils.d.mts +8 -0
- package/build/storage/utils.d.mts.map +1 -0
- package/build/storage/utils.mjs +58 -0
- package/build/storage/utils.mjs.map +1 -0
- package/build/tenants.mjs +42 -0
- package/build/tenants.mjs.map +1 -0
- package/build/utils/askarError.d.mts +1 -0
- package/build/utils/askarError.mjs +21 -0
- package/build/utils/askarError.mjs.map +1 -0
- package/build/utils/askarKeyTypes.d.mts +2 -0
- package/build/utils/askarKeyTypes.mjs +25 -0
- package/build/utils/askarKeyTypes.mjs.map +1 -0
- package/build/utils/askarStoreConfig.d.mts +2 -0
- package/build/utils/askarStoreConfig.mjs +47 -0
- package/build/utils/askarStoreConfig.mjs.map +1 -0
- package/build/utils/index.d.mts +4 -0
- package/build/utils/index.mjs +4 -0
- package/build/utils/transformPrivateKey.d.mts +73 -0
- package/build/utils/transformPrivateKey.d.mts.map +1 -0
- package/build/utils/transformPrivateKey.mjs +73 -0
- package/build/utils/transformPrivateKey.mjs.map +1 -0
- package/package.json +21 -29
- package/build/AskarModule.d.ts +0 -9
- package/build/AskarModule.js +0 -58
- package/build/AskarModule.js.map +0 -1
- package/build/AskarModuleConfig.d.ts +0 -68
- package/build/AskarModuleConfig.js +0 -33
- package/build/AskarModuleConfig.js.map +0 -1
- package/build/index.d.ts +0 -4
- package/build/index.js +0 -16
- package/build/index.js.map +0 -1
- package/build/secureEnvironment/index.d.ts +0 -1
- package/build/secureEnvironment/index.js +0 -18
- package/build/secureEnvironment/index.js.map +0 -1
- package/build/secureEnvironment/secureEnvironment.d.ts +0 -5
- package/build/secureEnvironment/secureEnvironment.js +0 -7
- package/build/secureEnvironment/secureEnvironment.js.map +0 -1
- package/build/secureEnvironment/secureEnvironment.native.d.ts +0 -1
- package/build/secureEnvironment/secureEnvironment.native.js +0 -14
- package/build/secureEnvironment/secureEnvironment.native.js.map +0 -1
- package/build/storage/AskarStorageService.d.ts +0 -17
- package/build/storage/AskarStorageService.js +0 -141
- package/build/storage/AskarStorageService.js.map +0 -1
- package/build/storage/index.d.ts +0 -1
- package/build/storage/index.js +0 -18
- package/build/storage/index.js.map +0 -1
- package/build/storage/utils.d.ts +0 -15
- package/build/storage/utils.js +0 -109
- package/build/storage/utils.js.map +0 -1
- package/build/utils/askarError.d.ts +0 -14
- package/build/utils/askarError.js +0 -20
- package/build/utils/askarError.js.map +0 -1
- package/build/utils/askarKeyBackend.d.ts +0 -3
- package/build/utils/askarKeyBackend.js +0 -15
- package/build/utils/askarKeyBackend.js.map +0 -1
- package/build/utils/askarKeyTypes.d.ts +0 -8
- package/build/utils/askarKeyTypes.js +0 -46
- package/build/utils/askarKeyTypes.js.map +0 -1
- package/build/utils/askarWalletConfig.d.ts +0 -14
- package/build/utils/askarWalletConfig.js +0 -75
- package/build/utils/askarWalletConfig.js.map +0 -1
- package/build/utils/assertAskarWallet.d.ts +0 -3
- package/build/utils/assertAskarWallet.js +0 -14
- package/build/utils/assertAskarWallet.js.map +0 -1
- package/build/utils/index.d.ts +0 -3
- package/build/utils/index.js +0 -20
- package/build/utils/index.js.map +0 -1
- package/build/wallet/AskarBaseWallet.d.ts +0 -112
- package/build/wallet/AskarBaseWallet.js +0 -540
- package/build/wallet/AskarBaseWallet.js.map +0 -1
- package/build/wallet/AskarProfileWallet.d.ts +0 -24
- package/build/wallet/AskarProfileWallet.js +0 -150
- package/build/wallet/AskarProfileWallet.js.map +0 -1
- package/build/wallet/AskarWallet.d.ts +0 -58
- package/build/wallet/AskarWallet.js +0 -342
- package/build/wallet/AskarWallet.js.map +0 -1
- package/build/wallet/AskarWalletStorageConfig.d.ts +0 -31
- package/build/wallet/AskarWalletStorageConfig.js +0 -11
- package/build/wallet/AskarWalletStorageConfig.js.map +0 -1
- package/build/wallet/JweEnvelope.d.ts +0 -32
- package/build/wallet/JweEnvelope.js +0 -55
- package/build/wallet/JweEnvelope.js.map +0 -1
- package/build/wallet/didcommV1.d.ts +0 -8
- package/build/wallet/didcommV1.js +0 -155
- package/build/wallet/didcommV1.js.map +0 -1
- package/build/wallet/index.d.ts +0 -3
- package/build/wallet/index.js +0 -23
- package/build/wallet/index.js.map +0 -1
|
@@ -1,540 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.AskarBaseWallet = void 0;
|
|
7
|
-
const core_1 = require("@credo-ts/core");
|
|
8
|
-
const aries_askar_shared_1 = require("@hyperledger/aries-askar-shared");
|
|
9
|
-
const bn_js_1 = __importDefault(require("bn.js"));
|
|
10
|
-
const secureEnvironment_1 = require("../secureEnvironment");
|
|
11
|
-
const utils_1 = require("../utils");
|
|
12
|
-
const didcommV1_1 = require("./didcommV1");
|
|
13
|
-
const isError = (error) => error instanceof Error;
|
|
14
|
-
class AskarBaseWallet {
|
|
15
|
-
constructor(logger, signingKeyProviderRegistry) {
|
|
16
|
-
this.logger = logger;
|
|
17
|
-
this.signingKeyProviderRegistry = signingKeyProviderRegistry;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Run callback with the session provided, the session will
|
|
21
|
-
* be closed once the callback resolves or rejects if it is not closed yet.
|
|
22
|
-
*
|
|
23
|
-
* TODO: update to new `using` syntax so we don't have to use a callback
|
|
24
|
-
*/
|
|
25
|
-
async withSession(callback) {
|
|
26
|
-
let session = undefined;
|
|
27
|
-
try {
|
|
28
|
-
session = await this.store.session(this.profile).open();
|
|
29
|
-
const result = await callback(session);
|
|
30
|
-
return result;
|
|
31
|
-
}
|
|
32
|
-
finally {
|
|
33
|
-
if (session === null || session === void 0 ? void 0 : session.handle) {
|
|
34
|
-
await session.close();
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Run callback with a transaction. If the callback resolves the transaction
|
|
40
|
-
* will be committed if the transaction is not closed yet. If the callback rejects
|
|
41
|
-
* the transaction will be rolled back if the transaction is not closed yet.
|
|
42
|
-
*
|
|
43
|
-
* TODO: update to new `using` syntax so we don't have to use a callback
|
|
44
|
-
*/
|
|
45
|
-
async withTransaction(callback) {
|
|
46
|
-
let session = undefined;
|
|
47
|
-
try {
|
|
48
|
-
session = await this.store.transaction(this.profile).open();
|
|
49
|
-
const result = await callback(session);
|
|
50
|
-
if (session.handle) {
|
|
51
|
-
await session.commit();
|
|
52
|
-
}
|
|
53
|
-
return result;
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
if (session === null || session === void 0 ? void 0 : session.handle) {
|
|
57
|
-
await (session === null || session === void 0 ? void 0 : session.rollback());
|
|
58
|
-
}
|
|
59
|
-
throw error;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
get supportedKeyTypes() {
|
|
63
|
-
const signingKeyProviderSupportedKeyTypes = this.signingKeyProviderRegistry.supportedKeyTypes;
|
|
64
|
-
return Array.from(new Set([...utils_1.keyTypesSupportedByAskar, ...signingKeyProviderSupportedKeyTypes]));
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Create a key with an optional seed and keyType.
|
|
68
|
-
* The keypair is also automatically stored in the wallet afterwards
|
|
69
|
-
*/
|
|
70
|
-
async createKey({ seed, privateKey, keyType, keyId, keyBackend = core_1.KeyBackend.Software, }) {
|
|
71
|
-
try {
|
|
72
|
-
if (seed && privateKey) {
|
|
73
|
-
throw new core_1.WalletError('Only one of seed and privateKey can be set');
|
|
74
|
-
}
|
|
75
|
-
if (seed && !(0, core_1.isValidSeed)(seed, keyType)) {
|
|
76
|
-
throw new core_1.WalletError('Invalid seed provided');
|
|
77
|
-
}
|
|
78
|
-
if (privateKey && !(0, core_1.isValidPrivateKey)(privateKey, keyType)) {
|
|
79
|
-
throw new core_1.WalletError('Invalid private key provided');
|
|
80
|
-
}
|
|
81
|
-
if (keyBackend === core_1.KeyBackend.SecureElement && keyType !== core_1.KeyType.P256) {
|
|
82
|
-
throw new core_1.WalletError(`Keytype '${keyType}' is not supported for the secure element`);
|
|
83
|
-
}
|
|
84
|
-
if ((0, utils_1.isKeyTypeSupportedByAskarForPurpose)(keyType, utils_1.AskarKeyTypePurpose.KeyManagement) &&
|
|
85
|
-
keyBackend === core_1.KeyBackend.Software) {
|
|
86
|
-
const algorithm = (0, aries_askar_shared_1.keyAlgFromString)(keyType);
|
|
87
|
-
// Create key
|
|
88
|
-
let key;
|
|
89
|
-
try {
|
|
90
|
-
const _key = privateKey
|
|
91
|
-
? aries_askar_shared_1.Key.fromSecretBytes({ secretKey: privateKey, algorithm })
|
|
92
|
-
: seed
|
|
93
|
-
? aries_askar_shared_1.Key.fromSeed({ seed, algorithm })
|
|
94
|
-
: aries_askar_shared_1.Key.generate(algorithm);
|
|
95
|
-
// FIXME: we need to create a separate const '_key' so TS definitely knows _key is defined in the session callback.
|
|
96
|
-
// This will be fixed once we use the new 'using' syntax
|
|
97
|
-
key = _key;
|
|
98
|
-
const keyPublicBytes = key.publicBytes;
|
|
99
|
-
// Store key
|
|
100
|
-
await this.withSession((session) => session.insertKey({ key: _key, name: keyId !== null && keyId !== void 0 ? keyId : core_1.TypedArrayEncoder.toBase58(keyPublicBytes) }));
|
|
101
|
-
key.handle.free();
|
|
102
|
-
return core_1.Key.fromPublicKey(keyPublicBytes, keyType);
|
|
103
|
-
}
|
|
104
|
-
catch (error) {
|
|
105
|
-
key === null || key === void 0 ? void 0 : key.handle.free();
|
|
106
|
-
// Handle case where key already exists
|
|
107
|
-
if ((0, utils_1.isAskarError)(error, utils_1.AskarErrorCode.Duplicate)) {
|
|
108
|
-
throw new core_1.WalletKeyExistsError('Key already exists');
|
|
109
|
-
}
|
|
110
|
-
// Otherwise re-throw error
|
|
111
|
-
throw error;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
else if (keyBackend === core_1.KeyBackend.SecureElement && keyType === core_1.KeyType.P256) {
|
|
115
|
-
const secureEnvironment = (0, secureEnvironment_1.importSecureEnvironment)();
|
|
116
|
-
const kid = core_1.utils.uuid();
|
|
117
|
-
// Generate a hardware-backed P-256 keypair
|
|
118
|
-
secureEnvironment.generateKeypair(kid);
|
|
119
|
-
const publicKeyBytes = secureEnvironment.getPublicBytesForKeyId(kid);
|
|
120
|
-
const publicKeyBase58 = core_1.TypedArrayEncoder.toBase58(publicKeyBytes);
|
|
121
|
-
await this.storeSecureEnvironmentKeyById({
|
|
122
|
-
keyType,
|
|
123
|
-
publicKeyBase58,
|
|
124
|
-
keyId: kid,
|
|
125
|
-
});
|
|
126
|
-
return new core_1.Key(publicKeyBytes, keyType);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
// Check if there is a signing key provider for the specified key type.
|
|
130
|
-
if (this.signingKeyProviderRegistry.hasProviderForKeyType(keyType)) {
|
|
131
|
-
const signingKeyProvider = this.signingKeyProviderRegistry.getProviderForKeyType(keyType);
|
|
132
|
-
const keyPair = await signingKeyProvider.createKeyPair({ seed, privateKey });
|
|
133
|
-
await this.storeKeyPair(keyPair);
|
|
134
|
-
return core_1.Key.fromPublicKeyBase58(keyPair.publicKeyBase58, keyType);
|
|
135
|
-
}
|
|
136
|
-
throw new core_1.WalletError(`Unsupported key type: '${keyType}'`);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
catch (error) {
|
|
140
|
-
// If already instance of `WalletError`, re-throw
|
|
141
|
-
if (error instanceof core_1.WalletError)
|
|
142
|
-
throw error;
|
|
143
|
-
if (!isError(error)) {
|
|
144
|
-
throw new core_1.CredoError('Attempted to throw error, but it was not of type Error', { cause: error });
|
|
145
|
-
}
|
|
146
|
-
throw new core_1.WalletError(`Error creating key with key type '${keyType}': ${error.message}`, { cause: error });
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* sign a Buffer with an instance of a Key class
|
|
151
|
-
*
|
|
152
|
-
* @param data Buffer The data that needs to be signed
|
|
153
|
-
* @param key Key The key that is used to sign the data
|
|
154
|
-
*
|
|
155
|
-
* @returns A signature for the data
|
|
156
|
-
*/
|
|
157
|
-
async sign({ data, key }) {
|
|
158
|
-
var _a;
|
|
159
|
-
let askarKey;
|
|
160
|
-
let keyPair;
|
|
161
|
-
try {
|
|
162
|
-
if ((0, utils_1.isKeyTypeSupportedByAskarForPurpose)(key.keyType, utils_1.AskarKeyTypePurpose.KeyManagement)) {
|
|
163
|
-
askarKey = await this.withSession(async (session) => { var _a; return (_a = (await session.fetchKey({ name: key.publicKeyBase58 }))) === null || _a === void 0 ? void 0 : _a.key; });
|
|
164
|
-
}
|
|
165
|
-
// FIXME: remove the custom KeyPair record now that we deprecate Indy SDK.
|
|
166
|
-
// We can do this in a migration script
|
|
167
|
-
// Fallback to fetching key from the non-askar storage, this is to handle the case
|
|
168
|
-
// where a key wasn't supported at first by the wallet, but now is
|
|
169
|
-
if (!askarKey) {
|
|
170
|
-
// TODO: we should probably make retrieveKeyPair + insertKey + deleteKeyPair a transaction
|
|
171
|
-
keyPair = await this.retrieveKeyPair(key.publicKeyBase58);
|
|
172
|
-
// If we have the key stored in a custom record, but it is now supported by Askar,
|
|
173
|
-
// we 'import' the key into askar storage and remove the custom key record
|
|
174
|
-
if (keyPair && (0, utils_1.isKeyTypeSupportedByAskarForPurpose)(keyPair.keyType, utils_1.AskarKeyTypePurpose.KeyManagement)) {
|
|
175
|
-
const _askarKey = aries_askar_shared_1.Key.fromSecretBytes({
|
|
176
|
-
secretKey: core_1.TypedArrayEncoder.fromBase58(keyPair.privateKeyBase58),
|
|
177
|
-
algorithm: (0, aries_askar_shared_1.keyAlgFromString)(keyPair.keyType),
|
|
178
|
-
});
|
|
179
|
-
askarKey = _askarKey;
|
|
180
|
-
await this.withSession((session) => session.insertKey({
|
|
181
|
-
name: key.publicKeyBase58,
|
|
182
|
-
key: _askarKey,
|
|
183
|
-
}));
|
|
184
|
-
// Now we can remove it from the custom record as we have imported it into Askar
|
|
185
|
-
await this.deleteKeyPair(key.publicKeyBase58);
|
|
186
|
-
keyPair = undefined;
|
|
187
|
-
}
|
|
188
|
-
else {
|
|
189
|
-
const { keyId } = await this.getSecureEnvironmentKey(key.publicKeyBase58);
|
|
190
|
-
if (Array.isArray(data[0])) {
|
|
191
|
-
throw new core_1.WalletError('Multi signature is not supported for the Secure Environment');
|
|
192
|
-
}
|
|
193
|
-
return core_1.Buffer.from(await (0, secureEnvironment_1.importSecureEnvironment)().sign(keyId, new Uint8Array(data)));
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
if (!askarKey && !keyPair) {
|
|
197
|
-
throw new core_1.WalletError('Key entry not found');
|
|
198
|
-
}
|
|
199
|
-
// Not all keys are supported for signing
|
|
200
|
-
if ((0, utils_1.isKeyTypeSupportedByAskarForPurpose)(key.keyType, utils_1.AskarKeyTypePurpose.Signing)) {
|
|
201
|
-
if (!core_1.TypedArrayEncoder.isTypedArray(data)) {
|
|
202
|
-
throw new core_1.WalletError(`Currently not supporting signing of multiple messages`);
|
|
203
|
-
}
|
|
204
|
-
askarKey =
|
|
205
|
-
askarKey !== null && askarKey !== void 0 ? askarKey : (keyPair
|
|
206
|
-
? aries_askar_shared_1.Key.fromSecretBytes({
|
|
207
|
-
secretKey: core_1.TypedArrayEncoder.fromBase58(keyPair.privateKeyBase58),
|
|
208
|
-
algorithm: (0, aries_askar_shared_1.keyAlgFromString)(keyPair.keyType),
|
|
209
|
-
})
|
|
210
|
-
: undefined);
|
|
211
|
-
if (!askarKey) {
|
|
212
|
-
throw new core_1.WalletError('Key entry not found');
|
|
213
|
-
}
|
|
214
|
-
const signed = askarKey.signMessage({ message: data });
|
|
215
|
-
return core_1.Buffer.from(signed);
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
// Check if there is a signing key provider for the specified key type.
|
|
219
|
-
if (this.signingKeyProviderRegistry.hasProviderForKeyType(key.keyType)) {
|
|
220
|
-
const signingKeyProvider = this.signingKeyProviderRegistry.getProviderForKeyType(key.keyType);
|
|
221
|
-
// It could be that askar supports storing the key, but can't sign with it
|
|
222
|
-
// (in case of bls)
|
|
223
|
-
const privateKeyBase58 = (_a = keyPair === null || keyPair === void 0 ? void 0 : keyPair.privateKeyBase58) !== null && _a !== void 0 ? _a : ((askarKey === null || askarKey === void 0 ? void 0 : askarKey.secretBytes) ? core_1.TypedArrayEncoder.toBase58(askarKey.secretBytes) : undefined);
|
|
224
|
-
if (!privateKeyBase58) {
|
|
225
|
-
throw new core_1.WalletError('Key entry not found');
|
|
226
|
-
}
|
|
227
|
-
const signed = await signingKeyProvider.sign({
|
|
228
|
-
data,
|
|
229
|
-
privateKeyBase58: privateKeyBase58,
|
|
230
|
-
publicKeyBase58: key.publicKeyBase58,
|
|
231
|
-
});
|
|
232
|
-
return signed;
|
|
233
|
-
}
|
|
234
|
-
throw new core_1.WalletError(`Unsupported keyType: ${key.keyType}`);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
catch (error) {
|
|
238
|
-
if (!isError(error)) {
|
|
239
|
-
throw new core_1.CredoError('Attempted to throw error, but it was not of type Error', { cause: error });
|
|
240
|
-
}
|
|
241
|
-
throw new core_1.WalletError(`Error signing data with verkey ${key.publicKeyBase58}. ${error.message}`, { cause: error });
|
|
242
|
-
}
|
|
243
|
-
finally {
|
|
244
|
-
askarKey === null || askarKey === void 0 ? void 0 : askarKey.handle.free();
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* Verify the signature with the data and the used key
|
|
249
|
-
*
|
|
250
|
-
* @param data Buffer The data that has to be confirmed to be signed
|
|
251
|
-
* @param key Key The key that was used in the signing process
|
|
252
|
-
* @param signature Buffer The signature that was created by the signing process
|
|
253
|
-
*
|
|
254
|
-
* @returns A boolean whether the signature was created with the supplied data and key
|
|
255
|
-
*
|
|
256
|
-
* @throws {WalletError} When it could not do the verification
|
|
257
|
-
* @throws {WalletError} When an unsupported keytype is used
|
|
258
|
-
*/
|
|
259
|
-
async verify({ data, key, signature }) {
|
|
260
|
-
let askarKey;
|
|
261
|
-
try {
|
|
262
|
-
if ((0, utils_1.isKeyTypeSupportedByAskarForPurpose)(key.keyType, utils_1.AskarKeyTypePurpose.Signing)) {
|
|
263
|
-
if (!core_1.TypedArrayEncoder.isTypedArray(data)) {
|
|
264
|
-
throw new core_1.WalletError(`Currently not supporting verification of multiple messages`);
|
|
265
|
-
}
|
|
266
|
-
askarKey = aries_askar_shared_1.Key.fromPublicBytes({
|
|
267
|
-
algorithm: (0, aries_askar_shared_1.keyAlgFromString)(key.keyType),
|
|
268
|
-
publicKey: key.publicKey,
|
|
269
|
-
});
|
|
270
|
-
const verified = askarKey.verifySignature({ message: data, signature });
|
|
271
|
-
askarKey.handle.free();
|
|
272
|
-
return verified;
|
|
273
|
-
}
|
|
274
|
-
else if (this.signingKeyProviderRegistry.hasProviderForKeyType(key.keyType)) {
|
|
275
|
-
// Check if there is a signing key provider for the specified key type.
|
|
276
|
-
const signingKeyProvider = this.signingKeyProviderRegistry.getProviderForKeyType(key.keyType);
|
|
277
|
-
const signed = await signingKeyProvider.verify({
|
|
278
|
-
data,
|
|
279
|
-
signature,
|
|
280
|
-
publicKeyBase58: key.publicKeyBase58,
|
|
281
|
-
});
|
|
282
|
-
return signed;
|
|
283
|
-
}
|
|
284
|
-
else {
|
|
285
|
-
throw new core_1.WalletError(`Unsupported keyType: ${key.keyType}`);
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
catch (error) {
|
|
289
|
-
askarKey === null || askarKey === void 0 ? void 0 : askarKey.handle.free();
|
|
290
|
-
if (!isError(error)) {
|
|
291
|
-
throw new core_1.CredoError('Attempted to throw error, but it was not of type Error', { cause: error });
|
|
292
|
-
}
|
|
293
|
-
throw new core_1.WalletError(`Error verifying signature of data signed with verkey ${key.publicKeyBase58}`, {
|
|
294
|
-
cause: error,
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* Pack a message using DIDComm V1 algorithm
|
|
300
|
-
*
|
|
301
|
-
* @param payload message to send
|
|
302
|
-
* @param recipientKeys array containing recipient keys in base58
|
|
303
|
-
* @param senderVerkey sender key in base58
|
|
304
|
-
* @returns JWE Envelope to send
|
|
305
|
-
*/
|
|
306
|
-
async pack(payload, recipientKeys, senderVerkey // in base58
|
|
307
|
-
) {
|
|
308
|
-
const senderKey = senderVerkey
|
|
309
|
-
? await this.withSession((session) => session.fetchKey({ name: senderVerkey }))
|
|
310
|
-
: undefined;
|
|
311
|
-
try {
|
|
312
|
-
if (senderVerkey && !senderKey) {
|
|
313
|
-
throw new core_1.WalletError(`Sender key not found`);
|
|
314
|
-
}
|
|
315
|
-
const envelope = (0, didcommV1_1.didcommV1Pack)(payload, recipientKeys, senderKey === null || senderKey === void 0 ? void 0 : senderKey.key);
|
|
316
|
-
return envelope;
|
|
317
|
-
}
|
|
318
|
-
finally {
|
|
319
|
-
senderKey === null || senderKey === void 0 ? void 0 : senderKey.key.handle.free();
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
/**
|
|
323
|
-
* Unpacks a JWE Envelope coded using DIDComm V1 algorithm
|
|
324
|
-
*
|
|
325
|
-
* @param messagePackage JWE Envelope
|
|
326
|
-
* @returns UnpackedMessageContext with plain text message, sender key and recipient key
|
|
327
|
-
*/
|
|
328
|
-
async unpack(messagePackage) {
|
|
329
|
-
const protectedJson = core_1.JsonEncoder.fromBase64(messagePackage.protected);
|
|
330
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
331
|
-
const recipientKids = protectedJson.recipients.map((r) => r.header.kid);
|
|
332
|
-
// TODO: how long should sessions last? Just for the duration of the unpack? Or should each item in the recipientKids get a separate session?
|
|
333
|
-
const returnValue = await this.withSession(async (session) => {
|
|
334
|
-
for (const recipientKid of recipientKids) {
|
|
335
|
-
const recipientKeyEntry = await session.fetchKey({ name: recipientKid });
|
|
336
|
-
try {
|
|
337
|
-
if (recipientKeyEntry) {
|
|
338
|
-
return (0, didcommV1_1.didcommV1Unpack)(messagePackage, recipientKeyEntry.key);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
finally {
|
|
342
|
-
recipientKeyEntry === null || recipientKeyEntry === void 0 ? void 0 : recipientKeyEntry.key.handle.free();
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
});
|
|
346
|
-
if (!returnValue) {
|
|
347
|
-
throw new core_1.WalletError('No corresponding recipient key found');
|
|
348
|
-
}
|
|
349
|
-
return returnValue;
|
|
350
|
-
}
|
|
351
|
-
/**
|
|
352
|
-
* Method that enables JWE encryption using ECDH-ES and AesA256Gcm and returns it as a compact JWE.
|
|
353
|
-
* This method is specifically added to support OpenID4VP response encryption using JARM and should later be
|
|
354
|
-
* refactored into a more generic method that supports encryption/decryption.
|
|
355
|
-
*
|
|
356
|
-
* @returns compact JWE
|
|
357
|
-
*/
|
|
358
|
-
async directEncryptCompactJweEcdhEs({ recipientKey, encryptionAlgorithm, apu, apv, data, header, }) {
|
|
359
|
-
if (encryptionAlgorithm !== 'A256GCM') {
|
|
360
|
-
throw new core_1.WalletError(`Encryption algorithm ${encryptionAlgorithm} is not supported. Only A256GCM is supported`);
|
|
361
|
-
}
|
|
362
|
-
// Only one supported for now
|
|
363
|
-
const encAlg = aries_askar_shared_1.KeyAlgs.AesA256Gcm;
|
|
364
|
-
// Create ephemeral key
|
|
365
|
-
const ephemeralKey = aries_askar_shared_1.Key.generate((0, aries_askar_shared_1.keyAlgFromString)(recipientKey.keyType));
|
|
366
|
-
const _header = Object.assign(Object.assign({}, header), { apv,
|
|
367
|
-
apu, enc: 'A256GCM', alg: 'ECDH-ES', epk: ephemeralKey.jwkPublic });
|
|
368
|
-
const encodedHeader = core_1.JsonEncoder.toBase64URL(_header);
|
|
369
|
-
const ecdh = new aries_askar_shared_1.EcdhEs({
|
|
370
|
-
algId: Uint8Array.from(core_1.Buffer.from(encryptionAlgorithm)),
|
|
371
|
-
apu: apu ? Uint8Array.from(core_1.TypedArrayEncoder.fromBase64(apu)) : Uint8Array.from([]),
|
|
372
|
-
apv: apv ? Uint8Array.from(core_1.TypedArrayEncoder.fromBase64(apv)) : Uint8Array.from([]),
|
|
373
|
-
});
|
|
374
|
-
const { ciphertext, tag, nonce } = ecdh.encryptDirect({
|
|
375
|
-
encAlg,
|
|
376
|
-
ephemeralKey,
|
|
377
|
-
message: Uint8Array.from(data),
|
|
378
|
-
recipientKey: aries_askar_shared_1.Key.fromPublicBytes({
|
|
379
|
-
algorithm: (0, aries_askar_shared_1.keyAlgFromString)(recipientKey.keyType),
|
|
380
|
-
publicKey: recipientKey.publicKey,
|
|
381
|
-
}),
|
|
382
|
-
// NOTE: aad is bytes of base64url encoded string. It SHOULD NOT be decoded as base64
|
|
383
|
-
aad: Uint8Array.from(core_1.Buffer.from(encodedHeader)),
|
|
384
|
-
});
|
|
385
|
-
const compactJwe = `${encodedHeader}..${core_1.TypedArrayEncoder.toBase64URL(nonce)}.${core_1.TypedArrayEncoder.toBase64URL(ciphertext)}.${core_1.TypedArrayEncoder.toBase64URL(tag)}`;
|
|
386
|
-
return compactJwe;
|
|
387
|
-
}
|
|
388
|
-
/**
|
|
389
|
-
* Method that enables JWE decryption using ECDH-ES and AesA256Gcm and returns it as plaintext buffer with the header.
|
|
390
|
-
* The apv and apu values are extracted from the heaader, and thus on a higher level it should be checked that these
|
|
391
|
-
* values are correct.
|
|
392
|
-
*/
|
|
393
|
-
async directDecryptCompactJweEcdhEs({ compactJwe, recipientKey, }) {
|
|
394
|
-
// encryption key is not used (we don't use key wrapping)
|
|
395
|
-
const [encodedHeader /* encryptionKey */, , encodedIv, encodedCiphertext, encodedTag] = compactJwe.split('.');
|
|
396
|
-
const header = core_1.JsonEncoder.fromBase64(encodedHeader);
|
|
397
|
-
if (header.alg !== 'ECDH-ES') {
|
|
398
|
-
throw new core_1.WalletError('Only ECDH-ES alg value is supported');
|
|
399
|
-
}
|
|
400
|
-
if (header.enc !== 'A256GCM') {
|
|
401
|
-
throw new core_1.WalletError('Only A256GCM enc value is supported');
|
|
402
|
-
}
|
|
403
|
-
if (!header.epk || typeof header.epk !== 'object') {
|
|
404
|
-
throw new core_1.WalletError('header epk value must contain a JWK');
|
|
405
|
-
}
|
|
406
|
-
// NOTE: we don't support custom key storage record at the moment.
|
|
407
|
-
let askarKey;
|
|
408
|
-
if ((0, utils_1.isKeyTypeSupportedByAskarForPurpose)(recipientKey.keyType, utils_1.AskarKeyTypePurpose.KeyManagement)) {
|
|
409
|
-
askarKey = await this.withSession(async (session) => { var _a; return (_a = (await session.fetchKey({ name: recipientKey.publicKeyBase58 }))) === null || _a === void 0 ? void 0 : _a.key; });
|
|
410
|
-
}
|
|
411
|
-
if (!askarKey) {
|
|
412
|
-
throw new core_1.WalletError('Key entry not found');
|
|
413
|
-
}
|
|
414
|
-
// Only one supported for now
|
|
415
|
-
const encAlg = aries_askar_shared_1.KeyAlgs.AesA256Gcm;
|
|
416
|
-
const ecdh = new aries_askar_shared_1.EcdhEs({
|
|
417
|
-
algId: Uint8Array.from(core_1.Buffer.from(header.enc)),
|
|
418
|
-
apu: header.apu ? Uint8Array.from(core_1.TypedArrayEncoder.fromBase64(header.apu)) : Uint8Array.from([]),
|
|
419
|
-
apv: header.apv ? Uint8Array.from(core_1.TypedArrayEncoder.fromBase64(header.apv)) : Uint8Array.from([]),
|
|
420
|
-
});
|
|
421
|
-
const plaintext = ecdh.decryptDirect({
|
|
422
|
-
nonce: core_1.TypedArrayEncoder.fromBase64(encodedIv),
|
|
423
|
-
ciphertext: core_1.TypedArrayEncoder.fromBase64(encodedCiphertext),
|
|
424
|
-
encAlg,
|
|
425
|
-
ephemeralKey: aries_askar_shared_1.Jwk.fromJson(header.epk),
|
|
426
|
-
recipientKey: askarKey,
|
|
427
|
-
tag: core_1.TypedArrayEncoder.fromBase64(encodedTag),
|
|
428
|
-
// NOTE: aad is bytes of base64url encoded string. It SHOULD NOT be decoded as base64
|
|
429
|
-
aad: core_1.TypedArrayEncoder.fromString(encodedHeader),
|
|
430
|
-
});
|
|
431
|
-
return { data: core_1.Buffer.from(plaintext), header };
|
|
432
|
-
}
|
|
433
|
-
async generateNonce() {
|
|
434
|
-
try {
|
|
435
|
-
// generate an 80-bit nonce suitable for AnonCreds proofs
|
|
436
|
-
const nonce = aries_askar_shared_1.CryptoBox.randomNonce().slice(0, 10);
|
|
437
|
-
return new bn_js_1.default(nonce).toString();
|
|
438
|
-
}
|
|
439
|
-
catch (error) {
|
|
440
|
-
if (!isError(error)) {
|
|
441
|
-
throw new core_1.CredoError('Attempted to throw error, but it was not of type Error', { cause: error });
|
|
442
|
-
}
|
|
443
|
-
throw new core_1.WalletError('Error generating nonce', { cause: error });
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
getRandomValues(length) {
|
|
447
|
-
try {
|
|
448
|
-
const buffer = new Uint8Array(length);
|
|
449
|
-
const CBOX_NONCE_LENGTH = 24;
|
|
450
|
-
const genCount = Math.ceil(length / CBOX_NONCE_LENGTH);
|
|
451
|
-
const buf = new Uint8Array(genCount * CBOX_NONCE_LENGTH);
|
|
452
|
-
for (let i = 0; i < genCount; i++) {
|
|
453
|
-
const randomBytes = aries_askar_shared_1.CryptoBox.randomNonce();
|
|
454
|
-
buf.set(randomBytes, CBOX_NONCE_LENGTH * i);
|
|
455
|
-
}
|
|
456
|
-
buffer.set(buf.subarray(0, length));
|
|
457
|
-
return buffer;
|
|
458
|
-
}
|
|
459
|
-
catch (error) {
|
|
460
|
-
if (!isError(error)) {
|
|
461
|
-
throw new core_1.CredoError('Attempted to throw error, but it was not of type Error', { cause: error });
|
|
462
|
-
}
|
|
463
|
-
throw new core_1.WalletError('Error generating nonce', { cause: error });
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
async generateWalletKey() {
|
|
467
|
-
try {
|
|
468
|
-
return aries_askar_shared_1.Store.generateRawKey();
|
|
469
|
-
}
|
|
470
|
-
catch (error) {
|
|
471
|
-
throw new core_1.WalletError('Error generating wallet key', { cause: error });
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
async retrieveKeyPair(publicKeyBase58) {
|
|
475
|
-
try {
|
|
476
|
-
const entryObject = await this.withSession((session) => session.fetch({ category: 'KeyPairRecord', name: `key-${publicKeyBase58}` }));
|
|
477
|
-
if (!entryObject)
|
|
478
|
-
return null;
|
|
479
|
-
return core_1.JsonEncoder.fromString(entryObject === null || entryObject === void 0 ? void 0 : entryObject.value);
|
|
480
|
-
}
|
|
481
|
-
catch (error) {
|
|
482
|
-
throw new core_1.WalletError('Error retrieving KeyPair record', { cause: error });
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
async getSecureEnvironmentKey(keyId) {
|
|
486
|
-
try {
|
|
487
|
-
const entryObject = await this.withSession((session) => session.fetch({ category: 'SecureEnvironmentKeyRecord', name: keyId }));
|
|
488
|
-
return core_1.JsonEncoder.fromString(entryObject === null || entryObject === void 0 ? void 0 : entryObject.value);
|
|
489
|
-
}
|
|
490
|
-
catch (error) {
|
|
491
|
-
throw new core_1.WalletError('Error retrieving Secure Environment record', { cause: error });
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
async deleteKeyPair(publicKeyBase58) {
|
|
495
|
-
try {
|
|
496
|
-
await this.withSession((session) => session.remove({ category: 'KeyPairRecord', name: `key-${publicKeyBase58}` }));
|
|
497
|
-
}
|
|
498
|
-
catch (error) {
|
|
499
|
-
throw new core_1.WalletError('Error removing KeyPair record', { cause: error });
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
async storeKeyPair(keyPair) {
|
|
503
|
-
try {
|
|
504
|
-
await this.withSession((session) => session.insert({
|
|
505
|
-
category: 'KeyPairRecord',
|
|
506
|
-
name: `key-${keyPair.publicKeyBase58}`,
|
|
507
|
-
value: JSON.stringify(keyPair),
|
|
508
|
-
tags: {
|
|
509
|
-
keyType: keyPair.keyType,
|
|
510
|
-
},
|
|
511
|
-
}));
|
|
512
|
-
}
|
|
513
|
-
catch (error) {
|
|
514
|
-
if ((0, utils_1.isAskarError)(error, utils_1.AskarErrorCode.Duplicate)) {
|
|
515
|
-
throw new core_1.WalletKeyExistsError('Key already exists');
|
|
516
|
-
}
|
|
517
|
-
throw new core_1.WalletError('Error saving KeyPair record', { cause: error });
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
async storeSecureEnvironmentKeyById(options) {
|
|
521
|
-
try {
|
|
522
|
-
await this.withSession((session) => session.insert({
|
|
523
|
-
category: 'SecureEnvironmentKeyRecord',
|
|
524
|
-
name: options.publicKeyBase58,
|
|
525
|
-
value: JSON.stringify(options),
|
|
526
|
-
tags: {
|
|
527
|
-
keyType: options.keyType,
|
|
528
|
-
},
|
|
529
|
-
}));
|
|
530
|
-
}
|
|
531
|
-
catch (error) {
|
|
532
|
-
if ((0, utils_1.isAskarError)(error, utils_1.AskarErrorCode.Duplicate)) {
|
|
533
|
-
throw new core_1.WalletKeyExistsError('Key already exists');
|
|
534
|
-
}
|
|
535
|
-
throw new core_1.WalletError('Error saving SecureEnvironment record', { cause: error });
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
exports.AskarBaseWallet = AskarBaseWallet;
|
|
540
|
-
//# sourceMappingURL=AskarBaseWallet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AskarBaseWallet.js","sourceRoot":"","sources":["../../src/wallet/AskarBaseWallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { WalletConfig } from '@credo-ts/core';
|
|
2
|
-
import { Logger, SigningProviderRegistry } from '@credo-ts/core';
|
|
3
|
-
import { Store } from '@hyperledger/aries-askar-shared';
|
|
4
|
-
import { AskarBaseWallet } from './AskarBaseWallet';
|
|
5
|
-
export declare class AskarProfileWallet extends AskarBaseWallet {
|
|
6
|
-
private walletConfig?;
|
|
7
|
-
readonly store: Store;
|
|
8
|
-
isInitialized: boolean;
|
|
9
|
-
constructor(store: Store, logger: Logger, signingKeyProviderRegistry: SigningProviderRegistry);
|
|
10
|
-
get isProvisioned(): boolean;
|
|
11
|
-
get profile(): string;
|
|
12
|
-
/**
|
|
13
|
-
* Dispose method is called when an agent context is disposed.
|
|
14
|
-
*/
|
|
15
|
-
dispose(): Promise<void>;
|
|
16
|
-
create(walletConfig: WalletConfig): Promise<void>;
|
|
17
|
-
open(walletConfig: WalletConfig): Promise<void>;
|
|
18
|
-
createAndOpen(walletConfig: WalletConfig): Promise<void>;
|
|
19
|
-
delete(): Promise<void>;
|
|
20
|
-
export(): Promise<void>;
|
|
21
|
-
import(): Promise<void>;
|
|
22
|
-
rotateKey(): Promise<void>;
|
|
23
|
-
close(): Promise<void>;
|
|
24
|
-
}
|