@cheqd/did-provider-cheqd 4.1.2-develop.2 → 4.2.0-develop.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.
Files changed (51) hide show
  1. package/build/cjs/agent/ICheqd.d.ts +1 -1
  2. package/build/cjs/agent/ICheqd.d.ts.map +1 -1
  3. package/build/cjs/agent/ICheqd.js +52 -52
  4. package/build/cjs/agent/ICheqd.js.map +1 -1
  5. package/build/cjs/did-manager/cheqd-did-provider.d.ts +1 -1
  6. package/build/cjs/did-manager/cheqd-did-provider.js +5 -5
  7. package/build/cjs/did-manager/cheqd-did-provider.js.map +1 -1
  8. package/build/cjs/dkg-threshold/index.d.ts +1 -1
  9. package/build/cjs/dkg-threshold/index.js +1 -1
  10. package/build/cjs/dkg-threshold/lit-protocol/v3.d.ts +8 -8
  11. package/build/cjs/dkg-threshold/lit-protocol/v3.d.ts.map +1 -1
  12. package/build/cjs/dkg-threshold/lit-protocol/v3.js +18 -18
  13. package/build/cjs/dkg-threshold/lit-protocol/v3.js.map +1 -1
  14. package/build/cjs/dkg-threshold/lit-protocol/v6.d.ts +86 -0
  15. package/build/cjs/dkg-threshold/lit-protocol/v6.d.ts.map +1 -0
  16. package/build/cjs/dkg-threshold/lit-protocol/v6.js +230 -0
  17. package/build/cjs/dkg-threshold/lit-protocol/v6.js.map +1 -0
  18. package/build/esm/agent/ICheqd.d.ts +1 -1
  19. package/build/esm/agent/ICheqd.d.ts.map +1 -1
  20. package/build/esm/agent/ICheqd.js +1 -1
  21. package/build/esm/agent/ICheqd.js.map +1 -1
  22. package/build/esm/did-manager/cheqd-did-provider.d.ts +1 -1
  23. package/build/esm/did-manager/cheqd-did-provider.js +3 -3
  24. package/build/esm/did-manager/cheqd-did-provider.js.map +1 -1
  25. package/build/esm/dkg-threshold/index.d.ts +1 -1
  26. package/build/esm/dkg-threshold/index.js +1 -1
  27. package/build/esm/dkg-threshold/lit-protocol/v3.d.ts +8 -8
  28. package/build/esm/dkg-threshold/lit-protocol/v3.d.ts.map +1 -1
  29. package/build/esm/dkg-threshold/lit-protocol/v3.js +15 -15
  30. package/build/esm/dkg-threshold/lit-protocol/v3.js.map +1 -1
  31. package/build/esm/dkg-threshold/lit-protocol/v6.d.ts +86 -0
  32. package/build/esm/dkg-threshold/lit-protocol/v6.d.ts.map +1 -0
  33. package/build/esm/dkg-threshold/lit-protocol/v6.js +226 -0
  34. package/build/esm/dkg-threshold/lit-protocol/v6.js.map +1 -0
  35. package/build/tsconfig.cjs.tsbuildinfo +1 -1
  36. package/build/tsconfig.esm.tsbuildinfo +1 -1
  37. package/build/tsconfig.types.tsbuildinfo +1 -1
  38. package/build/types/agent/ICheqd.d.ts +1 -1
  39. package/build/types/agent/ICheqd.d.ts.map +1 -1
  40. package/build/types/did-manager/cheqd-did-provider.d.ts +1 -1
  41. package/build/types/dkg-threshold/index.d.ts +1 -1
  42. package/build/types/dkg-threshold/lit-protocol/v3.d.ts +8 -8
  43. package/build/types/dkg-threshold/lit-protocol/v3.d.ts.map +1 -1
  44. package/build/types/dkg-threshold/lit-protocol/v6.d.ts +86 -0
  45. package/build/types/dkg-threshold/lit-protocol/v6.d.ts.map +1 -0
  46. package/package.json +5 -3
  47. package/src/agent/ICheqd.ts +1 -4
  48. package/src/did-manager/cheqd-did-provider.ts +3 -3
  49. package/src/dkg-threshold/index.ts +1 -1
  50. package/src/dkg-threshold/lit-protocol/v3.ts +20 -20
  51. package/src/dkg-threshold/lit-protocol/v6.ts +348 -0
@@ -0,0 +1,226 @@
1
+ import { Secp256k1HdWallet } from '@cosmjs/amino';
2
+ import { toString } from 'uint8arrays/to-string';
3
+ import { sha256 } from '@cosmjs/crypto';
4
+ import { LitNodeClientNodeJs, LitNodeClient } from '@lit-protocol/lit-node-client';
5
+ import { generateSymmetricKey, randomBytes } from '../../utils/helpers.js';
6
+ import { isBrowser, isNode } from '../../utils/env.js';
7
+ import { v4 } from 'uuid';
8
+ import { fromString } from 'uint8arrays';
9
+ import { LitProtocolDebugEnabled } from '../../utils/constants.js';
10
+ export const LitNetworks = {
11
+ datildev: 'datil-dev',
12
+ localhost: 'localhost',
13
+ custom: 'custom',
14
+ };
15
+ export const LitCompatibleCosmosChains = {
16
+ cosmos: 'cosmos',
17
+ cheqdMainnet: 'cheqdMainnet',
18
+ cheqdTestnet: 'cheqdTestnet',
19
+ };
20
+ export const TxNonceFormats = { entropy: 'entropy', uuid: 'uuid', timestamp: 'timestamp' };
21
+ export class LitProtocol {
22
+ client;
23
+ litNetwork = LitNetworks.datildev;
24
+ chain = LitCompatibleCosmosChains.cosmos;
25
+ cosmosAuthWallet;
26
+ constructor(options) {
27
+ // validate options
28
+ if (options.litNetwork && !Object.values(LitNetworks).includes(options.litNetwork))
29
+ throw new Error(`[did-provider-cheqd]: lit-protocol: Invalid LitNetwork: ${options.litNetwork}`);
30
+ if (options.chain && !Object.values(LitCompatibleCosmosChains).includes(options.chain))
31
+ throw new Error(`[did-provider-cheqd]: lit-protocol: Invalid LitCompatibleCosmosChain: ${options.chain}`);
32
+ // set options
33
+ if (options.litNetwork)
34
+ this.litNetwork = options.litNetwork;
35
+ if (options.chain)
36
+ this.chain = options.chain;
37
+ this.cosmosAuthWallet = options.cosmosAuthWallet;
38
+ // set client as per environment
39
+ this.client = (function (that) {
40
+ if (isNode)
41
+ return new LitNodeClientNodeJs({ litNetwork: that.litNetwork, debug: LitProtocolDebugEnabled });
42
+ if (isBrowser)
43
+ return new LitNodeClient({ litNetwork: that.litNetwork, debug: LitProtocolDebugEnabled });
44
+ throw new Error('[did-provider-cheqd]: lit-protocol: Unsupported runtime environment');
45
+ })(this);
46
+ }
47
+ async connect() {
48
+ return await this.client.connect();
49
+ }
50
+ async encrypt(secret, unifiedAccessControlConditions) {
51
+ // generate auth signature
52
+ const authSig = await LitProtocol.generateAuthSignature(this.cosmosAuthWallet);
53
+ // encrypt
54
+ const { ciphertext: encryptedString, dataToEncryptHash: stringHash } = (await this.client.encrypt({
55
+ dataToEncrypt: secret,
56
+ unifiedAccessControlConditions,
57
+ }));
58
+ return {
59
+ encryptedString: fromString(encryptedString, 'base64'),
60
+ stringHash,
61
+ };
62
+ }
63
+ async decrypt(encryptedString, stringHash, unifiedAccessControlConditions) {
64
+ // generate auth signature
65
+ const authSig = await LitProtocol.generateAuthSignature(this.cosmosAuthWallet);
66
+ // decrypt
67
+ const { decryptedData } = (await this.client.decrypt({
68
+ chain: this.chain,
69
+ ciphertext: encryptedString,
70
+ dataToEncryptHash: stringHash,
71
+ unifiedAccessControlConditions,
72
+ authSig,
73
+ }));
74
+ return toString(decryptedData, 'utf-8');
75
+ }
76
+ static async encryptDirect(data) {
77
+ try {
78
+ // generate symmetric key
79
+ const symmetricKey = await generateSymmetricKey();
80
+ // generate iv
81
+ const iv = crypto.getRandomValues(new Uint8Array(12));
82
+ // encrypt
83
+ const encrypted = await crypto.subtle.encrypt({
84
+ name: 'AES-GCM',
85
+ iv,
86
+ }, symmetricKey, data);
87
+ // export symmetric key
88
+ const exportedSymmetricKey = await crypto.subtle.exportKey('raw', symmetricKey);
89
+ return {
90
+ encryptedString: new Blob([iv, new Uint8Array(encrypted)]),
91
+ stringHash: toString(new Uint8Array(await crypto.subtle.digest('SHA-256', data)), 'hex'),
92
+ symmetricKey: new Uint8Array(exportedSymmetricKey),
93
+ };
94
+ }
95
+ catch (error) {
96
+ // standardize error
97
+ throw new Error(`[did-provider-cheqd]: symmetric-encryption: Encryption failed: ${error.message || error}`);
98
+ }
99
+ }
100
+ static async decryptDirect(encryptedString, symmetricKey) {
101
+ try {
102
+ // import symmetric key
103
+ const importedSymmetricKey = await crypto.subtle.importKey('raw', symmetricKey, {
104
+ name: 'AES-GCM',
105
+ }, true, ['encrypt', 'decrypt']);
106
+ // extract iv and encrypted data
107
+ const [iv, encryptedData] = await Promise.all([
108
+ encryptedString.slice(0, 12).arrayBuffer(),
109
+ encryptedString.slice(12).arrayBuffer(),
110
+ ]);
111
+ // decrypt
112
+ const decrypted = await crypto.subtle.decrypt({
113
+ name: 'AES-GCM',
114
+ iv: new Uint8Array(iv),
115
+ }, importedSymmetricKey, encryptedData);
116
+ return new Uint8Array(decrypted);
117
+ }
118
+ catch (error) {
119
+ // standardize error
120
+ throw new Error(`[did-provider-cheqd]: symmetric-decryption: Decryption failed: ${error.message || error}`);
121
+ }
122
+ }
123
+ static async create(options) {
124
+ // instantiate underlying cosmos auth wallet
125
+ if (!options.cosmosAuthWallet)
126
+ options.cosmosAuthWallet = await Secp256k1HdWallet.generate(24, {
127
+ prefix: await LitProtocol.getCosmosWalletPrefix(options?.chain),
128
+ });
129
+ // validate top-level options chain
130
+ if (!options?.chain)
131
+ options.chain = LitCompatibleCosmosChains.cheqdTestnet;
132
+ // validate top-level options litNetwork
133
+ if (!options?.litNetwork)
134
+ options.litNetwork = LitNetworks.datildev;
135
+ const litProtocol = new LitProtocol(options);
136
+ await litProtocol.connect();
137
+ return litProtocol;
138
+ }
139
+ static async getCosmosWalletPrefix(chain) {
140
+ switch (chain) {
141
+ case LitCompatibleCosmosChains.cosmos:
142
+ return 'cosmos';
143
+ case LitCompatibleCosmosChains.cheqdMainnet:
144
+ return 'cheqd';
145
+ case LitCompatibleCosmosChains.cheqdTestnet:
146
+ return 'cheqd';
147
+ default:
148
+ return 'cheqd';
149
+ }
150
+ }
151
+ static async generateAuthSignature(wallet) {
152
+ const signerAddress = (await wallet.getAccounts())[0].address;
153
+ const signData = await LitProtocol.generateSignData();
154
+ const signDoc = await LitProtocol.generateSignDoc(signerAddress, signData);
155
+ const result = await wallet.signAmino(signerAddress, signDoc);
156
+ return {
157
+ address: signerAddress,
158
+ derivedVia: 'cosmos.signArbitrary',
159
+ sig: result.signature.signature,
160
+ signedMessage: toString(sha256(new TextEncoder().encode(JSON.stringify(signDoc))), 'hex'), // <-- hex encoded sha256 hash of the json stringified signDoc
161
+ };
162
+ }
163
+ static async generateSignDoc(address, data) {
164
+ return {
165
+ account_number: '0',
166
+ chain_id: '',
167
+ fee: {
168
+ amount: [],
169
+ gas: '0',
170
+ },
171
+ memo: '',
172
+ msgs: [
173
+ {
174
+ type: 'sign/MsgSignData',
175
+ value: {
176
+ data: toString(data, 'base64'),
177
+ signer: address,
178
+ },
179
+ },
180
+ ],
181
+ sequence: '0',
182
+ }; // <-- should be sorted alphabetically
183
+ }
184
+ static async generateSignData() {
185
+ return new TextEncoder().encode(`I am creating an account to use Lit Protocol at 2023-02-21T16:40:15.305Z`); // <-- lit nodes search for this string in the signData
186
+ }
187
+ static async generateTxNonce(format, entropyLength) {
188
+ switch (format) {
189
+ case TxNonceFormats.entropy:
190
+ return toString(await randomBytes(entropyLength || 64), 'hex');
191
+ case TxNonceFormats.uuid:
192
+ return v4();
193
+ case TxNonceFormats.timestamp:
194
+ return new Date().toISOString();
195
+ default:
196
+ return v4();
197
+ }
198
+ }
199
+ static async generateCosmosAccessControlConditionBalance(returnValueTest, chain = LitCompatibleCosmosChains.cheqdTestnet, address = ':userAddress') {
200
+ return {
201
+ conditionType: 'cosmos',
202
+ path: `/cosmos/bank/v1beta1/balances/${address}`,
203
+ chain,
204
+ returnValueTest,
205
+ };
206
+ }
207
+ static async generateCosmosAccessControlConditionTransactionMemo(returnValueTest, amount, sender, recipient = ':userAddress', chain = LitCompatibleCosmosChains.cheqdTestnet) {
208
+ return {
209
+ conditionType: 'cosmos',
210
+ path: `/cosmos/tx/v1beta1/txs?events=transfer.recipient='${recipient}'&events=transfer.sender='${sender}'&events=transfer.amount='${amount}'&order_by=2`,
211
+ chain,
212
+ returnValueTest,
213
+ };
214
+ }
215
+ static async generateCosmosAccessControlConditionInverseTimelock(returnValueTest, amount, recipient = ':userAddress', blockHeight = 'latest', chain = LitCompatibleCosmosChains.cheqdTestnet) {
216
+ return {
217
+ conditionType: 'cosmos',
218
+ path: `/cosmos/tx/v1beta1/txs?events=transfer.recipient='${recipient}'&events=transfer.amount='${amount}'&order_by=2&pagination.limit=1`,
219
+ chain,
220
+ method: 'timelock',
221
+ parameters: [blockHeight],
222
+ returnValueTest,
223
+ };
224
+ }
225
+ }
226
+ //# sourceMappingURL=v6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v6.js","sourceRoot":"","sources":["../../../../src/dkg-threshold/lit-protocol/v6.ts"],"names":[],"mappings":"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"}