@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.
- package/build/cjs/agent/ICheqd.d.ts +1 -1
- package/build/cjs/agent/ICheqd.d.ts.map +1 -1
- package/build/cjs/agent/ICheqd.js +52 -52
- package/build/cjs/agent/ICheqd.js.map +1 -1
- package/build/cjs/did-manager/cheqd-did-provider.d.ts +1 -1
- package/build/cjs/did-manager/cheqd-did-provider.js +5 -5
- package/build/cjs/did-manager/cheqd-did-provider.js.map +1 -1
- package/build/cjs/dkg-threshold/index.d.ts +1 -1
- package/build/cjs/dkg-threshold/index.js +1 -1
- package/build/cjs/dkg-threshold/lit-protocol/v3.d.ts +8 -8
- package/build/cjs/dkg-threshold/lit-protocol/v3.d.ts.map +1 -1
- package/build/cjs/dkg-threshold/lit-protocol/v3.js +18 -18
- package/build/cjs/dkg-threshold/lit-protocol/v3.js.map +1 -1
- package/build/cjs/dkg-threshold/lit-protocol/v6.d.ts +86 -0
- package/build/cjs/dkg-threshold/lit-protocol/v6.d.ts.map +1 -0
- package/build/cjs/dkg-threshold/lit-protocol/v6.js +230 -0
- package/build/cjs/dkg-threshold/lit-protocol/v6.js.map +1 -0
- package/build/esm/agent/ICheqd.d.ts +1 -1
- package/build/esm/agent/ICheqd.d.ts.map +1 -1
- package/build/esm/agent/ICheqd.js +1 -1
- package/build/esm/agent/ICheqd.js.map +1 -1
- package/build/esm/did-manager/cheqd-did-provider.d.ts +1 -1
- package/build/esm/did-manager/cheqd-did-provider.js +3 -3
- package/build/esm/did-manager/cheqd-did-provider.js.map +1 -1
- package/build/esm/dkg-threshold/index.d.ts +1 -1
- package/build/esm/dkg-threshold/index.js +1 -1
- package/build/esm/dkg-threshold/lit-protocol/v3.d.ts +8 -8
- package/build/esm/dkg-threshold/lit-protocol/v3.d.ts.map +1 -1
- package/build/esm/dkg-threshold/lit-protocol/v3.js +15 -15
- package/build/esm/dkg-threshold/lit-protocol/v3.js.map +1 -1
- package/build/esm/dkg-threshold/lit-protocol/v6.d.ts +86 -0
- package/build/esm/dkg-threshold/lit-protocol/v6.d.ts.map +1 -0
- package/build/esm/dkg-threshold/lit-protocol/v6.js +226 -0
- package/build/esm/dkg-threshold/lit-protocol/v6.js.map +1 -0
- package/build/tsconfig.cjs.tsbuildinfo +1 -1
- package/build/tsconfig.esm.tsbuildinfo +1 -1
- package/build/tsconfig.types.tsbuildinfo +1 -1
- package/build/types/agent/ICheqd.d.ts +1 -1
- package/build/types/agent/ICheqd.d.ts.map +1 -1
- package/build/types/did-manager/cheqd-did-provider.d.ts +1 -1
- package/build/types/dkg-threshold/index.d.ts +1 -1
- package/build/types/dkg-threshold/lit-protocol/v3.d.ts +8 -8
- package/build/types/dkg-threshold/lit-protocol/v3.d.ts.map +1 -1
- package/build/types/dkg-threshold/lit-protocol/v6.d.ts +86 -0
- package/build/types/dkg-threshold/lit-protocol/v6.d.ts.map +1 -0
- package/package.json +5 -3
- package/src/agent/ICheqd.ts +1 -4
- package/src/did-manager/cheqd-did-provider.ts +3 -3
- package/src/dkg-threshold/index.ts +1 -1
- package/src/dkg-threshold/lit-protocol/v3.ts +20 -20
- 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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"}
|