@0xpolygonid/js-sdk 1.16.1 → 1.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/esm/index.js +99 -9
- package/dist/browser/esm/index.js.map +1 -1
- package/dist/browser/umd/index.js +99 -9
- package/dist/browser/umd/index.js.map +1 -1
- package/dist/node/cjs/iden3comm/handlers/credential-proposal.js +2 -1
- package/dist/node/cjs/iden3comm/handlers/message-handler.js +3 -3
- package/dist/node/cjs/iden3comm/handlers/revocation-status.js +3 -3
- package/dist/node/cjs/identity/identity-wallet.js +8 -2
- package/dist/node/cjs/kms/key-providers/bjj-provider.js +8 -0
- package/dist/node/cjs/kms/key-providers/ed25519-provider.js +8 -0
- package/dist/node/cjs/kms/key-providers/secp256k1-provider.js +8 -0
- package/dist/node/cjs/kms/kms.js +13 -0
- package/dist/node/cjs/kms/store/indexed-db-key-store.js +10 -0
- package/dist/node/cjs/kms/store/local-storage-key-store.js +14 -0
- package/dist/node/cjs/kms/store/memory-key-store.js +3 -0
- package/dist/node/esm/iden3comm/handlers/credential-proposal.js +2 -1
- package/dist/node/esm/iden3comm/handlers/message-handler.js +3 -3
- package/dist/node/esm/iden3comm/handlers/revocation-status.js +3 -3
- package/dist/node/esm/identity/identity-wallet.js +8 -2
- package/dist/node/esm/kms/key-providers/bjj-provider.js +8 -0
- package/dist/node/esm/kms/key-providers/ed25519-provider.js +8 -0
- package/dist/node/esm/kms/key-providers/secp256k1-provider.js +8 -0
- package/dist/node/esm/kms/kms.js +13 -0
- package/dist/node/esm/kms/store/indexed-db-key-store.js +11 -1
- package/dist/node/esm/kms/store/local-storage-key-store.js +14 -0
- package/dist/node/esm/kms/store/memory-key-store.js +3 -0
- package/dist/types/iden3comm/handlers/message-handler.d.ts +1 -1
- package/dist/types/iden3comm/handlers/revocation-status.d.ts +2 -2
- package/dist/types/kms/key-providers/bjj-provider.d.ts +8 -0
- package/dist/types/kms/key-providers/ed25519-provider.d.ts +8 -0
- package/dist/types/kms/key-providers/secp256k1-provider.d.ts +8 -0
- package/dist/types/kms/kms.d.ts +19 -0
- package/dist/types/kms/store/abstract-key-store.d.ts +10 -0
- package/dist/types/kms/store/indexed-db-key-store.d.ts +10 -0
- package/dist/types/kms/store/local-storage-key-store.d.ts +10 -0
- package/dist/types/kms/store/memory-key-store.d.ts +4 -0
- package/package.json +1 -1
|
@@ -89,6 +89,19 @@ class KMS {
|
|
|
89
89
|
}
|
|
90
90
|
return keyProvider.verify(data, signatureHex, keyId);
|
|
91
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* get all keys by key type
|
|
94
|
+
*
|
|
95
|
+
* @param keyType - Key type
|
|
96
|
+
* @returns list of keys
|
|
97
|
+
*/
|
|
98
|
+
list(keyType) {
|
|
99
|
+
const keyProvider = this._registry.get(keyType);
|
|
100
|
+
if (!keyProvider) {
|
|
101
|
+
throw new Error(`keyProvider not found for: ${keyType}`);
|
|
102
|
+
}
|
|
103
|
+
return keyProvider.list();
|
|
104
|
+
}
|
|
92
105
|
}
|
|
93
106
|
|
|
94
107
|
/**
|
|
@@ -112,6 +125,9 @@ class InMemoryPrivateKeyStore {
|
|
|
112
125
|
constructor() {
|
|
113
126
|
this._data = new Map();
|
|
114
127
|
}
|
|
128
|
+
list() {
|
|
129
|
+
return Promise.resolve(Array.from(this._data).map(([alias, key]) => ({ alias, key })));
|
|
130
|
+
}
|
|
115
131
|
async get(args) {
|
|
116
132
|
const privateKey = this._data.get(args.alias);
|
|
117
133
|
if (!privateKey) {
|
|
@@ -145,6 +161,20 @@ var KmsKeyType;
|
|
|
145
161
|
* @implements implements AbstractPrivateKeyStore interface
|
|
146
162
|
*/
|
|
147
163
|
class LocalStoragePrivateKeyStore {
|
|
164
|
+
/**
|
|
165
|
+
* get all keys
|
|
166
|
+
*
|
|
167
|
+
* @abstract
|
|
168
|
+
* @returns `Promise<{ alias: string; key: string }[]>`
|
|
169
|
+
*/
|
|
170
|
+
list() {
|
|
171
|
+
const dataStr = localStorage.getItem(LocalStoragePrivateKeyStore.storageKey);
|
|
172
|
+
if (!dataStr) {
|
|
173
|
+
throw new Error('no key under given alias');
|
|
174
|
+
}
|
|
175
|
+
const data = JSON.parse(dataStr);
|
|
176
|
+
return data.map((i) => ({ alias: i.id, key: i.value }));
|
|
177
|
+
}
|
|
148
178
|
/**
|
|
149
179
|
* Gets key from the local storage
|
|
150
180
|
*
|
|
@@ -266,6 +296,25 @@ function values(customStore = defaultGetStore()) {
|
|
|
266
296
|
return eachCursor(store, (cursor) => items.push(cursor.value)).then(() => items);
|
|
267
297
|
});
|
|
268
298
|
}
|
|
299
|
+
/**
|
|
300
|
+
* Get all entries in the store. Each entry is an array of `[key, value]`.
|
|
301
|
+
*
|
|
302
|
+
* @param customStore Method to get a custom store. Use with caution (see the docs).
|
|
303
|
+
*/
|
|
304
|
+
function entries(customStore = defaultGetStore()) {
|
|
305
|
+
return customStore('readonly', (store) => {
|
|
306
|
+
// Fast path for modern browsers
|
|
307
|
+
// (although, hopefully we'll get a simpler path some day)
|
|
308
|
+
if (store.getAll && store.getAllKeys) {
|
|
309
|
+
return Promise.all([
|
|
310
|
+
promisifyRequest(store.getAllKeys()),
|
|
311
|
+
promisifyRequest(store.getAll()),
|
|
312
|
+
]).then(([keys, values]) => keys.map((key, i) => [key, values[i]]));
|
|
313
|
+
}
|
|
314
|
+
const items = [];
|
|
315
|
+
return customStore('readonly', (store) => eachCursor(store, (cursor) => items.push([cursor.key, cursor.value])).then(() => items));
|
|
316
|
+
});
|
|
317
|
+
}
|
|
269
318
|
|
|
270
319
|
/**
|
|
271
320
|
* Allows storing keys in the indexed db storage of the browser
|
|
@@ -279,6 +328,16 @@ class IndexedDBPrivateKeyStore {
|
|
|
279
328
|
constructor() {
|
|
280
329
|
this._store = createStore(`${IndexedDBPrivateKeyStore.storageKey}-db`, IndexedDBPrivateKeyStore.storageKey);
|
|
281
330
|
}
|
|
331
|
+
/**
|
|
332
|
+
* get all keys
|
|
333
|
+
*
|
|
334
|
+
* @abstract
|
|
335
|
+
* @returns `Promise<{ alias: string; key: string }[]>`
|
|
336
|
+
*/
|
|
337
|
+
async list() {
|
|
338
|
+
const allEntries = await entries(this._store);
|
|
339
|
+
return allEntries.map(([alias, key]) => ({ alias, key: key.value }));
|
|
340
|
+
}
|
|
282
341
|
/**
|
|
283
342
|
* Gets key from the indexed db storage
|
|
284
343
|
*
|
|
@@ -1743,6 +1802,14 @@ class BjjProvider {
|
|
|
1743
1802
|
this.keyType = keyType;
|
|
1744
1803
|
this.keyStore = keyStore;
|
|
1745
1804
|
}
|
|
1805
|
+
/**
|
|
1806
|
+
* get all keys
|
|
1807
|
+
* @returns list of keys
|
|
1808
|
+
*/
|
|
1809
|
+
async list() {
|
|
1810
|
+
const allKeysFromKeyStore = await this.keyStore.list();
|
|
1811
|
+
return allKeysFromKeyStore.filter((key) => key.alias.startsWith(this.keyType));
|
|
1812
|
+
}
|
|
1746
1813
|
/**
|
|
1747
1814
|
* generates a baby jub jub key from a seed phrase
|
|
1748
1815
|
* @param {Uint8Array} seed - byte array seed
|
|
@@ -3631,6 +3698,14 @@ class Ed25519Provider {
|
|
|
3631
3698
|
this.keyType = keyType;
|
|
3632
3699
|
this._keyStore = _keyStore;
|
|
3633
3700
|
}
|
|
3701
|
+
/**
|
|
3702
|
+
* get all keys
|
|
3703
|
+
* @returns list of keys
|
|
3704
|
+
*/
|
|
3705
|
+
async list() {
|
|
3706
|
+
const allKeysFromKeyStore = await this._keyStore.list();
|
|
3707
|
+
return allKeysFromKeyStore.filter((key) => key.alias.startsWith(this.keyType));
|
|
3708
|
+
}
|
|
3634
3709
|
/**
|
|
3635
3710
|
* generates a ed25519 key from a seed phrase
|
|
3636
3711
|
* @param {Uint8Array} seed - byte array seed
|
|
@@ -7270,6 +7345,14 @@ class Sec256k1Provider {
|
|
|
7270
7345
|
this.keyType = keyType;
|
|
7271
7346
|
this._keyStore = keyStore;
|
|
7272
7347
|
}
|
|
7348
|
+
/**
|
|
7349
|
+
* get all keys
|
|
7350
|
+
* @returns list of keys
|
|
7351
|
+
*/
|
|
7352
|
+
async list() {
|
|
7353
|
+
const allKeysFromKeyStore = await this._keyStore.list();
|
|
7354
|
+
return allKeysFromKeyStore.filter((key) => key.alias.startsWith(this.keyType));
|
|
7355
|
+
}
|
|
7273
7356
|
/**
|
|
7274
7357
|
* generates a baby jub jub key from a seed phrase
|
|
7275
7358
|
* @param {Uint8Array} seed - byte array seed
|
|
@@ -55345,10 +55428,10 @@ class MessageHandler {
|
|
|
55345
55428
|
return null;
|
|
55346
55429
|
}
|
|
55347
55430
|
let packerParams = {};
|
|
55348
|
-
const
|
|
55349
|
-
if (unpackedMediaType === MediaType.ZKPMessage &&
|
|
55431
|
+
const senderDid = context?.senderDid;
|
|
55432
|
+
if (unpackedMediaType === MediaType.ZKPMessage && senderDid) {
|
|
55350
55433
|
packerParams = {
|
|
55351
|
-
senderDID,
|
|
55434
|
+
senderDID: senderDid,
|
|
55352
55435
|
provingMethodAlg: proving.provingMethodGroth16AuthV2Instance.methodAlg
|
|
55353
55436
|
};
|
|
55354
55437
|
return this._params.packageManager.packMessage(unpackedMediaType, response, packerParams);
|
|
@@ -55966,7 +56049,7 @@ class RevocationStatusHandler extends AbstractMessageHandler {
|
|
|
55966
56049
|
this._identityWallet = _identityWallet;
|
|
55967
56050
|
}
|
|
55968
56051
|
handle(message, context) {
|
|
55969
|
-
if (!context.
|
|
56052
|
+
if (!context.senderDid) {
|
|
55970
56053
|
throw new Error('DID is required');
|
|
55971
56054
|
}
|
|
55972
56055
|
if (!context.mediaType) {
|
|
@@ -56008,7 +56091,7 @@ class RevocationStatusHandler extends AbstractMessageHandler {
|
|
|
56008
56091
|
type: PROTOCOL_MESSAGE_TYPE.REVOCATION_STATUS_RESPONSE_MESSAGE_TYPE,
|
|
56009
56092
|
thid: rsRequest.thid ?? guid,
|
|
56010
56093
|
body: revStatus,
|
|
56011
|
-
from: context.
|
|
56094
|
+
from: context.senderDid.string(),
|
|
56012
56095
|
to: rsRequest.from
|
|
56013
56096
|
};
|
|
56014
56097
|
return response;
|
|
@@ -56038,7 +56121,7 @@ class RevocationStatusHandler extends AbstractMessageHandler {
|
|
|
56038
56121
|
}
|
|
56039
56122
|
const rsRequest = await this.parseRevocationStatusRequest(request);
|
|
56040
56123
|
const response = await this.handleRevocationStatusRequestMessage(rsRequest, {
|
|
56041
|
-
did,
|
|
56124
|
+
senderDid: did,
|
|
56042
56125
|
mediaType: opts.mediaType,
|
|
56043
56126
|
packerOptions: opts.packerOptions,
|
|
56044
56127
|
treeState: opts.treeState
|
|
@@ -56169,7 +56252,8 @@ class CredentialProposalHandler extends AbstractMessageHandler {
|
|
|
56169
56252
|
}
|
|
56170
56253
|
},
|
|
56171
56254
|
type: cred.type,
|
|
56172
|
-
context: cred.context
|
|
56255
|
+
context: cred.context,
|
|
56256
|
+
allowedIssuers: [proposalRequest.to]
|
|
56173
56257
|
});
|
|
56174
56258
|
}
|
|
56175
56259
|
catch (e) {
|
|
@@ -57931,7 +58015,7 @@ class IdentityWallet {
|
|
|
57931
58015
|
opts.createBjjCredential = opts.createBjjCredential ?? true;
|
|
57932
58016
|
let credential;
|
|
57933
58017
|
const ethSigner = opts.ethSigner;
|
|
57934
|
-
if (!ethSigner) {
|
|
58018
|
+
if (opts.createBjjCredential && !ethSigner) {
|
|
57935
58019
|
throw new Error('Ethereum signer is required to create Ethereum identities in order to transit state');
|
|
57936
58020
|
}
|
|
57937
58021
|
const currentState = ZERO_HASH; // In Ethereum identities we don't have an initial state with the auth credential
|
|
@@ -57946,7 +58030,7 @@ class IdentityWallet {
|
|
|
57946
58030
|
isStatePublished: false,
|
|
57947
58031
|
isStateGenesis: true
|
|
57948
58032
|
});
|
|
57949
|
-
if (opts.createBjjCredential) {
|
|
58033
|
+
if (opts.createBjjCredential && ethSigner) {
|
|
57950
58034
|
// Old tree state genesis state
|
|
57951
58035
|
const oldTreeState = {
|
|
57952
58036
|
revocationRoot: ZERO_HASH,
|
|
@@ -58430,6 +58514,12 @@ class IdentityWallet {
|
|
|
58430
58514
|
merklizeOpts: { documentLoader: cacheLoader() }
|
|
58431
58515
|
});
|
|
58432
58516
|
await this._credentialWallet.saveAll(credsWithIden3MTPProof);
|
|
58517
|
+
await this._storage.identity.saveIdentity({
|
|
58518
|
+
did: did.string(),
|
|
58519
|
+
state: currentState,
|
|
58520
|
+
isStatePublished: true,
|
|
58521
|
+
isStateGenesis: false
|
|
58522
|
+
});
|
|
58433
58523
|
const credRefreshed = await this._credentialWallet.findById(credential.id);
|
|
58434
58524
|
if (!credRefreshed) {
|
|
58435
58525
|
throw new Error('Credential not found in credential wallet');
|