@bsv/sdk 1.1.33 → 1.2.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/cjs/mod.js +4 -0
- package/dist/cjs/mod.js.map +1 -1
- package/dist/cjs/package.json +4 -3
- package/dist/cjs/src/auth/Certificate.js +163 -0
- package/dist/cjs/src/auth/Certificate.js.map +1 -0
- package/dist/cjs/src/auth/index.js +9 -0
- package/dist/cjs/src/auth/index.js.map +1 -0
- package/dist/cjs/src/compat/BSM.js +17 -7
- package/dist/cjs/src/compat/BSM.js.map +1 -1
- package/dist/cjs/src/compat/ECIES.js +17 -7
- package/dist/cjs/src/compat/ECIES.js.map +1 -1
- package/dist/cjs/src/compat/HD.js +17 -7
- package/dist/cjs/src/compat/HD.js.map +1 -1
- package/dist/cjs/src/compat/Mnemonic.js +17 -7
- package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
- package/dist/cjs/src/compat/index.js +17 -7
- package/dist/cjs/src/compat/index.js.map +1 -1
- package/dist/cjs/src/messages/index.js +17 -7
- package/dist/cjs/src/messages/index.js.map +1 -1
- package/dist/cjs/src/overlay-tools/LookupResolver.js +170 -0
- package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -0
- package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js +69 -0
- package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -0
- package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +336 -0
- package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -0
- package/dist/cjs/src/overlay-tools/index.js +29 -0
- package/dist/cjs/src/overlay-tools/index.js.map +1 -0
- package/dist/cjs/src/primitives/PrivateKey.js +17 -7
- package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
- package/dist/cjs/src/primitives/TransactionSignature.js +17 -7
- package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
- package/dist/cjs/src/primitives/index.js +17 -7
- package/dist/cjs/src/primitives/index.js.map +1 -1
- package/dist/cjs/src/script/Spend.js +17 -7
- package/dist/cjs/src/script/Spend.js.map +1 -1
- package/dist/cjs/src/script/templates/PushDrop.js +218 -0
- package/dist/cjs/src/script/templates/PushDrop.js.map +1 -0
- package/dist/cjs/src/script/templates/index.js +3 -1
- package/dist/cjs/src/script/templates/index.js.map +1 -1
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js +1 -1
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/cjs/src/wallet/CachedKeyDeriver.js +177 -0
- package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -0
- package/dist/cjs/src/wallet/KeyDeriver.js +174 -0
- package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -0
- package/dist/cjs/src/wallet/ProtoWallet.js +245 -0
- package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -0
- package/dist/cjs/src/wallet/Wallet.interfaces.js +3 -0
- package/dist/cjs/src/wallet/Wallet.interfaces.js.map +1 -0
- package/dist/cjs/src/wallet/WalletClient.js +181 -0
- package/dist/cjs/src/wallet/WalletClient.js.map +1 -0
- package/dist/cjs/src/wallet/WalletError.js +28 -0
- package/dist/cjs/src/wallet/WalletError.js.map +1 -0
- package/dist/cjs/src/wallet/index.js +34 -0
- package/dist/cjs/src/wallet/index.js.map +1 -0
- package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +45 -0
- package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -0
- package/dist/cjs/src/wallet/substrates/WalletWire.js +3 -0
- package/dist/cjs/src/wallet/substrates/WalletWire.js.map +1 -0
- package/dist/cjs/src/wallet/substrates/WalletWireCalls.js +36 -0
- package/dist/cjs/src/wallet/substrates/WalletWireCalls.js.map +1 -0
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +1821 -0
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -0
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +1305 -0
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -0
- package/dist/cjs/src/wallet/substrates/XDM.js +130 -0
- package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -0
- package/dist/cjs/src/wallet/substrates/index.js +33 -0
- package/dist/cjs/src/wallet/substrates/index.js.map +1 -0
- package/dist/cjs/src/wallet/substrates/window.CWI.js +102 -0
- package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/mod.js +4 -0
- package/dist/esm/mod.js.map +1 -1
- package/dist/esm/src/auth/Certificate.js +185 -0
- package/dist/esm/src/auth/Certificate.js.map +1 -0
- package/dist/esm/src/auth/index.js +2 -0
- package/dist/esm/src/auth/index.js.map +1 -0
- package/dist/esm/src/overlay-tools/LookupResolver.js +167 -0
- package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -0
- package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js +64 -0
- package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -0
- package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +335 -0
- package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -0
- package/dist/esm/src/overlay-tools/index.js +6 -0
- package/dist/esm/src/overlay-tools/index.js.map +1 -0
- package/dist/esm/src/script/templates/PushDrop.js +215 -0
- package/dist/esm/src/script/templates/PushDrop.js.map +1 -0
- package/dist/esm/src/script/templates/index.js +1 -0
- package/dist/esm/src/script/templates/index.js.map +1 -1
- package/dist/esm/src/transaction/http/DefaultHttpClient.js +1 -1
- package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/esm/src/wallet/CachedKeyDeriver.js +174 -0
- package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -0
- package/dist/esm/src/wallet/KeyDeriver.js +172 -0
- package/dist/esm/src/wallet/KeyDeriver.js.map +1 -0
- package/dist/esm/src/wallet/ProtoWallet.js +207 -0
- package/dist/esm/src/wallet/ProtoWallet.js.map +1 -0
- package/dist/esm/src/wallet/Wallet.interfaces.js +2 -0
- package/dist/esm/src/wallet/Wallet.interfaces.js.map +1 -0
- package/dist/esm/src/wallet/WalletClient.js +177 -0
- package/dist/esm/src/wallet/WalletClient.js.map +1 -0
- package/dist/esm/src/wallet/WalletError.js +25 -0
- package/dist/esm/src/wallet/WalletError.js.map +1 -0
- package/dist/esm/src/wallet/index.js +9 -0
- package/dist/esm/src/wallet/index.js.map +1 -0
- package/dist/esm/src/wallet/substrates/HTTPWalletWire.js +42 -0
- package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -0
- package/dist/esm/src/wallet/substrates/WalletWire.js +2 -0
- package/dist/esm/src/wallet/substrates/WalletWire.js.map +1 -0
- package/dist/esm/src/wallet/substrates/WalletWireCalls.js +34 -0
- package/dist/esm/src/wallet/substrates/WalletWireCalls.js.map +1 -0
- package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +1816 -0
- package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -0
- package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +1300 -0
- package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -0
- package/dist/esm/src/wallet/substrates/XDM.js +128 -0
- package/dist/esm/src/wallet/substrates/XDM.js.map +1 -0
- package/dist/esm/src/wallet/substrates/index.js +8 -0
- package/dist/esm/src/wallet/substrates/index.js.map +1 -0
- package/dist/esm/src/wallet/substrates/window.CWI.js +100 -0
- package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/mod.d.ts +4 -0
- package/dist/types/mod.d.ts.map +1 -1
- package/dist/types/src/auth/Certificate.d.ts +76 -0
- package/dist/types/src/auth/Certificate.d.ts.map +1 -0
- package/dist/types/src/auth/index.d.ts +2 -0
- package/dist/types/src/auth/index.d.ts.map +1 -0
- package/dist/types/src/overlay-tools/LookupResolver.d.ts +71 -0
- package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -0
- package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts +44 -0
- package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts.map +1 -0
- package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +90 -0
- package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -0
- package/dist/types/src/overlay-tools/index.d.ts +6 -0
- package/dist/types/src/overlay-tools/index.d.ts.map +1 -0
- package/dist/types/src/script/templates/PushDrop.d.ts +53 -0
- package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -0
- package/dist/types/src/script/templates/index.d.ts +1 -0
- package/dist/types/src/script/templates/index.d.ts.map +1 -1
- package/dist/types/src/wallet/CachedKeyDeriver.d.ts +92 -0
- package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -0
- package/dist/types/src/wallet/KeyDeriver.d.ts +72 -0
- package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -0
- package/dist/types/src/wallet/ProtoWallet.d.ts +415 -0
- package/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -0
- package/dist/types/src/wallet/Wallet.interfaces.d.ts +996 -0
- package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -0
- package/dist/types/src/wallet/WalletClient.d.ts +182 -0
- package/dist/types/src/wallet/WalletClient.d.ts.map +1 -0
- package/dist/types/src/wallet/WalletError.d.ts +14 -0
- package/dist/types/src/wallet/WalletError.d.ts.map +1 -0
- package/dist/types/src/wallet/index.d.ts +9 -0
- package/dist/types/src/wallet/index.d.ts.map +1 -0
- package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts +9 -0
- package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts.map +1 -0
- package/dist/types/src/wallet/substrates/WalletWire.d.ts +7 -0
- package/dist/types/src/wallet/substrates/WalletWire.d.ts.map +1 -0
- package/dist/types/src/wallet/substrates/WalletWireCalls.d.ts +33 -0
- package/dist/types/src/wallet/substrates/WalletWireCalls.d.ts.map +1 -0
- package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts +18 -0
- package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts.map +1 -0
- package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts +196 -0
- package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -0
- package/dist/types/src/wallet/substrates/XDM.d.ts +412 -0
- package/dist/types/src/wallet/substrates/XDM.d.ts.map +1 -0
- package/dist/types/src/wallet/substrates/index.d.ts +8 -0
- package/dist/types/src/wallet/substrates/index.d.ts.map +1 -0
- package/dist/types/src/wallet/substrates/window.CWI.d.ts +410 -0
- package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -0
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +1 -1
- package/docs/overlay-tools.md +537 -0
- package/docs/script.md +135 -0
- package/docs/totp.md +119 -0
- package/docs/wallet-substrates.md +10 -0
- package/docs/wallet.md +3718 -0
- package/mod.ts +5 -1
- package/package.json +44 -3
- package/src/auth/Certificate.ts +233 -0
- package/src/auth/__tests/Certificate.test.ts +282 -0
- package/src/auth/index.ts +1 -0
- package/src/overlay-tools/LookupResolver.ts +228 -0
- package/src/overlay-tools/OverlayAdminTokenTemplate.ts +79 -0
- package/src/overlay-tools/SHIPBroadcaster.ts +405 -0
- package/src/overlay-tools/__tests/LookupResolver.test.ts +1403 -0
- package/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.ts +69 -0
- package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +904 -0
- package/src/overlay-tools/index.ts +5 -0
- package/src/script/templates/PushDrop.ts +246 -0
- package/src/script/templates/__tests/PushDrop.test.ts +158 -0
- package/src/script/templates/index.ts +1 -0
- package/src/transaction/http/DefaultHttpClient.ts +1 -1
- package/src/wallet/CachedKeyDeriver.ts +193 -0
- package/src/wallet/KeyDeriver.ts +178 -0
- package/src/wallet/ProtoWallet.ts +732 -0
- package/src/wallet/Wallet.interfaces.ts +1170 -0
- package/src/wallet/WalletClient.ts +201 -0
- package/src/wallet/WalletError.ts +27 -0
- package/src/wallet/__tests/CachedKeyDeriver.test.ts +322 -0
- package/src/wallet/__tests/KeyDeriver.test.ts +118 -0
- package/src/wallet/__tests/ProtoWallet.test.ts +543 -0
- package/src/wallet/index.ts +8 -0
- package/src/wallet/substrates/HTTPWalletWire.ts +47 -0
- package/src/wallet/substrates/WalletWire.ts +6 -0
- package/src/wallet/substrates/WalletWireCalls.ts +34 -0
- package/src/wallet/substrates/WalletWireProcessor.ts +2046 -0
- package/src/wallet/substrates/WalletWireTransceiver.ts +1454 -0
- package/src/wallet/substrates/XDM.ts +157 -0
- package/src/wallet/substrates/__tests/WalletWire.integration.test.ts +2194 -0
- package/src/wallet/substrates/__tests/XDM.test.ts +659 -0
- package/src/wallet/substrates/index.ts +7 -0
- package/src/wallet/substrates/window.CWI.ts +133 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import KeyDeriver from './KeyDeriver.js';
|
|
2
|
+
import { Hash, ECDSA, BigNumber, Signature, Schnorr, PublicKey, Point } from '../primitives/index.js';
|
|
3
|
+
import walletErrors, { WalletError } from './WalletError.js';
|
|
4
|
+
/**
|
|
5
|
+
* A ProtoWallet is a structure that fulfills the Wallet interface, capable of performing all foundational cryptographic operations. It can derive keys, create signatures, facilitate encryption and HMAC operations, and reveal key linkages. However, ProtoWallet does not create transactions, manage outputs, interact with the blockchain, enable the management of identity certificates, or store any data.
|
|
6
|
+
*/
|
|
7
|
+
export default class ProtoWallet {
|
|
8
|
+
keyDeriver;
|
|
9
|
+
privilegedError = 'ProtoWallet is a single-keyring wallet, operating without context about whether its configured keyring is privileged.';
|
|
10
|
+
constructor(rootKey, KeyDeriverClass = KeyDeriver) {
|
|
11
|
+
this.keyDeriver = new KeyDeriverClass(rootKey);
|
|
12
|
+
}
|
|
13
|
+
async createAction(args, originator) {
|
|
14
|
+
throw new WalletError('ProtoWallet does not support creating transactions.', walletErrors.unsupportedAction);
|
|
15
|
+
}
|
|
16
|
+
async signAction(args, originator) {
|
|
17
|
+
throw new WalletError('ProtoWallet does not support creating transactions.', walletErrors.unsupportedAction);
|
|
18
|
+
}
|
|
19
|
+
async abortAction(args, originator) {
|
|
20
|
+
throw new WalletError('ProtoWallet does not support aborting transactions.', walletErrors.unsupportedAction);
|
|
21
|
+
}
|
|
22
|
+
async listActions(args, originator) {
|
|
23
|
+
throw new WalletError('ProtoWallet does not support retrieving transactions.', walletErrors.unsupportedAction);
|
|
24
|
+
}
|
|
25
|
+
async internalizeAction(args, originator) {
|
|
26
|
+
throw new WalletError('ProtoWallet does not support internalizing transactions.', walletErrors.unsupportedAction);
|
|
27
|
+
}
|
|
28
|
+
async listOutputs(args, originator) {
|
|
29
|
+
throw new WalletError('ProtoWallet does not support retrieving outputs.', walletErrors.unsupportedAction);
|
|
30
|
+
}
|
|
31
|
+
async relinquishOutput(args, originator) {
|
|
32
|
+
throw new WalletError('ProtoWallet does not support deleting outputs.', walletErrors.unsupportedAction);
|
|
33
|
+
}
|
|
34
|
+
async getPublicKey(args, originator) {
|
|
35
|
+
if (args.privileged) {
|
|
36
|
+
throw new WalletError(this.privilegedError);
|
|
37
|
+
}
|
|
38
|
+
if (args.identityKey) {
|
|
39
|
+
return { publicKey: this.keyDeriver.rootKey.toPublicKey().toString() };
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
return {
|
|
43
|
+
publicKey: this.keyDeriver
|
|
44
|
+
.derivePublicKey(args.protocolID, args.keyID, args.counterparty || 'self', args.forSelf)
|
|
45
|
+
.toString()
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async revealCounterpartyKeyLinkage(args, originator) {
|
|
50
|
+
if (args.privileged) {
|
|
51
|
+
throw new WalletError(this.privilegedError);
|
|
52
|
+
}
|
|
53
|
+
const { publicKey: identityKey } = await this.getPublicKey({ identityKey: true });
|
|
54
|
+
const linkage = this.keyDeriver.revealCounterpartySecret(args.counterparty);
|
|
55
|
+
const linkageProof = new Schnorr().generateProof(this.keyDeriver.rootKey, this.keyDeriver.rootKey.toPublicKey(), PublicKey.fromString(args.counterparty), Point.fromDER(linkage));
|
|
56
|
+
const linkageProofBin = [
|
|
57
|
+
...linkageProof.R.encode(true),
|
|
58
|
+
...linkageProof.SPrime.encode(true),
|
|
59
|
+
...linkageProof.z.toArray()
|
|
60
|
+
];
|
|
61
|
+
const revelationTime = new Date().toISOString();
|
|
62
|
+
const { ciphertext: encryptedLinkage } = await this.encrypt({
|
|
63
|
+
plaintext: linkage,
|
|
64
|
+
protocolID: [2, 'counterparty linkage revelation'],
|
|
65
|
+
keyID: revelationTime,
|
|
66
|
+
counterparty: args.verifier
|
|
67
|
+
});
|
|
68
|
+
const { ciphertext: encryptedLinkageProof } = await this.encrypt({
|
|
69
|
+
plaintext: linkageProofBin,
|
|
70
|
+
protocolID: [2, 'counterparty linkage revelation'],
|
|
71
|
+
keyID: revelationTime,
|
|
72
|
+
counterparty: args.verifier
|
|
73
|
+
});
|
|
74
|
+
return {
|
|
75
|
+
prover: identityKey,
|
|
76
|
+
verifier: args.verifier,
|
|
77
|
+
counterparty: args.counterparty,
|
|
78
|
+
revelationTime,
|
|
79
|
+
encryptedLinkage,
|
|
80
|
+
encryptedLinkageProof
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
async revealSpecificKeyLinkage(args, originator) {
|
|
84
|
+
if (args.privileged) {
|
|
85
|
+
throw new WalletError(this.privilegedError);
|
|
86
|
+
}
|
|
87
|
+
const { publicKey: identityKey } = await this.getPublicKey({ identityKey: true });
|
|
88
|
+
const linkage = this.keyDeriver.revealSpecificSecret(args.counterparty, args.protocolID, args.keyID);
|
|
89
|
+
const { ciphertext: encryptedLinkage } = await this.encrypt({
|
|
90
|
+
plaintext: linkage,
|
|
91
|
+
protocolID: [2, `specific linkage revelation ${args.protocolID[0]} ${args.protocolID[1]}`],
|
|
92
|
+
keyID: args.keyID,
|
|
93
|
+
counterparty: args.verifier
|
|
94
|
+
});
|
|
95
|
+
const { ciphertext: encryptedLinkageProof } = await this.encrypt({
|
|
96
|
+
plaintext: [0], // Proof type 0, no proof provided
|
|
97
|
+
protocolID: [2, `specific linkage revelation ${args.protocolID[0]} ${args.protocolID[1]}`],
|
|
98
|
+
keyID: args.keyID,
|
|
99
|
+
counterparty: args.verifier
|
|
100
|
+
});
|
|
101
|
+
return {
|
|
102
|
+
prover: identityKey,
|
|
103
|
+
verifier: args.verifier,
|
|
104
|
+
counterparty: args.counterparty,
|
|
105
|
+
protocolID: args.protocolID,
|
|
106
|
+
keyID: args.keyID,
|
|
107
|
+
encryptedLinkage,
|
|
108
|
+
encryptedLinkageProof,
|
|
109
|
+
proofType: 0
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
async encrypt(args, originator) {
|
|
113
|
+
if (args.privileged) {
|
|
114
|
+
throw new WalletError(this.privilegedError);
|
|
115
|
+
}
|
|
116
|
+
const key = this.keyDeriver.deriveSymmetricKey(args.protocolID, args.keyID, args.counterparty || 'self');
|
|
117
|
+
return { ciphertext: key.encrypt(args.plaintext) };
|
|
118
|
+
}
|
|
119
|
+
async decrypt(args, originator) {
|
|
120
|
+
if (args.privileged) {
|
|
121
|
+
throw new WalletError(this.privilegedError);
|
|
122
|
+
}
|
|
123
|
+
const key = this.keyDeriver.deriveSymmetricKey(args.protocolID, args.keyID, args.counterparty || 'self');
|
|
124
|
+
return { plaintext: key.decrypt(args.ciphertext) };
|
|
125
|
+
}
|
|
126
|
+
async createHmac(args, originator) {
|
|
127
|
+
if (args.privileged) {
|
|
128
|
+
throw new WalletError(this.privilegedError);
|
|
129
|
+
}
|
|
130
|
+
const key = this.keyDeriver.deriveSymmetricKey(args.protocolID, args.keyID, args.counterparty || 'self');
|
|
131
|
+
return { hmac: Hash.sha256hmac(key.toArray(), args.data) };
|
|
132
|
+
}
|
|
133
|
+
async verifyHmac(args, originator) {
|
|
134
|
+
if (args.privileged) {
|
|
135
|
+
throw new WalletError(this.privilegedError);
|
|
136
|
+
}
|
|
137
|
+
const key = this.keyDeriver.deriveSymmetricKey(args.protocolID, args.keyID, args.counterparty || 'self');
|
|
138
|
+
const valid = Hash.sha256hmac(key.toArray(), args.data).toString() === args.hmac.toString();
|
|
139
|
+
if (!valid) {
|
|
140
|
+
throw new WalletError('HMAC is not valid', walletErrors.invalidHmac);
|
|
141
|
+
}
|
|
142
|
+
return { valid };
|
|
143
|
+
}
|
|
144
|
+
async createSignature(args, originator) {
|
|
145
|
+
if (args.privileged) {
|
|
146
|
+
throw new WalletError(this.privilegedError);
|
|
147
|
+
}
|
|
148
|
+
let hash = args.hashToDirectlySign;
|
|
149
|
+
if (!hash) {
|
|
150
|
+
hash = Hash.sha256(args.data);
|
|
151
|
+
}
|
|
152
|
+
const key = this.keyDeriver.derivePrivateKey(args.protocolID, args.keyID, args.counterparty || 'anyone');
|
|
153
|
+
return { signature: ECDSA.sign(new BigNumber(hash), key, true).toDER() };
|
|
154
|
+
}
|
|
155
|
+
async verifySignature(args, originator) {
|
|
156
|
+
if (args.privileged) {
|
|
157
|
+
throw new WalletError(this.privilegedError);
|
|
158
|
+
}
|
|
159
|
+
let hash = args.hashToDirectlyVerify;
|
|
160
|
+
if (!hash) {
|
|
161
|
+
hash = Hash.sha256(args.data);
|
|
162
|
+
}
|
|
163
|
+
const key = this.keyDeriver.derivePublicKey(args.protocolID, args.keyID, args.counterparty || 'self', args.forSelf);
|
|
164
|
+
const valid = ECDSA.verify(new BigNumber(hash), Signature.fromDER(args.signature), key);
|
|
165
|
+
if (!valid) {
|
|
166
|
+
throw new WalletError('Signature is not valid', walletErrors.invalidSignature);
|
|
167
|
+
}
|
|
168
|
+
return { valid };
|
|
169
|
+
}
|
|
170
|
+
async acquireCertificate(args, originator) {
|
|
171
|
+
throw new WalletError('ProtoWallet does not support acquiring certificates.', walletErrors.unsupportedAction);
|
|
172
|
+
}
|
|
173
|
+
async listCertificates(args, originator) {
|
|
174
|
+
throw new WalletError('ProtoWallet does not support retrieving certificates.', walletErrors.unsupportedAction);
|
|
175
|
+
}
|
|
176
|
+
async proveCertificate(args, originator) {
|
|
177
|
+
throw new WalletError('ProtoWallet does not support proving certificates.', walletErrors.unsupportedAction);
|
|
178
|
+
}
|
|
179
|
+
async relinquishCertificate(args, originator) {
|
|
180
|
+
throw new WalletError('ProtoWallet does not support deleting certificates.', walletErrors.unsupportedAction);
|
|
181
|
+
}
|
|
182
|
+
async discoverByIdentityKey(args, originator) {
|
|
183
|
+
throw new WalletError('ProtoWallet does not support resolving identities.', walletErrors.unsupportedAction);
|
|
184
|
+
}
|
|
185
|
+
async discoverByAttributes(args, originator) {
|
|
186
|
+
throw new WalletError('ProtoWallet does not support resolving identities.', walletErrors.unsupportedAction);
|
|
187
|
+
}
|
|
188
|
+
async isAuthenticated(args, originator) {
|
|
189
|
+
return { authenticated: true };
|
|
190
|
+
}
|
|
191
|
+
async waitForAuthentication(args, originator) {
|
|
192
|
+
return { authenticated: true };
|
|
193
|
+
}
|
|
194
|
+
async getHeight(args, originator) {
|
|
195
|
+
throw new WalletError('ProtoWallet does not support blockchain tracking.', walletErrors.unsupportedAction);
|
|
196
|
+
}
|
|
197
|
+
async getHeaderForHeight(args, originator) {
|
|
198
|
+
throw new WalletError('ProtoWallet does not support blockchain tracking.', walletErrors.unsupportedAction);
|
|
199
|
+
}
|
|
200
|
+
async getNetwork(args, originator) {
|
|
201
|
+
return { network: 'mainnet' };
|
|
202
|
+
}
|
|
203
|
+
async getVersion(args, originator) {
|
|
204
|
+
return { version: 'proto-1.0.0' };
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=ProtoWallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProtoWallet.js","sourceRoot":"","sources":["../../../../src/wallet/ProtoWallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Wallet.interfaces.js","sourceRoot":"","sources":["../../../../src/wallet/Wallet.interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import WindowCWISubstrate from './substrates/window.CWI.js';
|
|
2
|
+
import XDMSubstrate from './substrates/XDM.js';
|
|
3
|
+
import WalletWireTransceiver from './substrates/WalletWireTransceiver.js';
|
|
4
|
+
import HTTPWalletWire from './substrates/HTTPWalletWire.js';
|
|
5
|
+
const MAX_XDM_RESPONSE_WAIT = 200;
|
|
6
|
+
/**
|
|
7
|
+
* The SDK is how applications communicate with wallets over a communications substrate.
|
|
8
|
+
*/
|
|
9
|
+
export default class WalletClient {
|
|
10
|
+
substrate;
|
|
11
|
+
originator;
|
|
12
|
+
constructor(substrate = 'auto', originator) {
|
|
13
|
+
if (substrate === 'Cicada')
|
|
14
|
+
substrate = new WalletWireTransceiver(new HTTPWalletWire(originator));
|
|
15
|
+
if (substrate === 'window.CWI')
|
|
16
|
+
substrate = new WindowCWISubstrate();
|
|
17
|
+
if (substrate === 'XDM')
|
|
18
|
+
substrate = new XDMSubstrate();
|
|
19
|
+
this.substrate = substrate;
|
|
20
|
+
this.originator = originator;
|
|
21
|
+
}
|
|
22
|
+
async connectToSubstrate() {
|
|
23
|
+
if (typeof this.substrate === 'object') {
|
|
24
|
+
return; // substrate is already connected
|
|
25
|
+
}
|
|
26
|
+
let sub;
|
|
27
|
+
const checkSub = async (timeout) => {
|
|
28
|
+
let result;
|
|
29
|
+
if (typeof timeout === 'number') {
|
|
30
|
+
result = await Promise.race([
|
|
31
|
+
sub.getVersion({}),
|
|
32
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('Timed out.')), timeout))
|
|
33
|
+
]);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
result = await sub.getVersion({});
|
|
37
|
+
}
|
|
38
|
+
if (typeof result !== 'object' || typeof result.version !== 'string') {
|
|
39
|
+
throw new Error('Failed to use substrate.');
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
try {
|
|
43
|
+
sub = new WindowCWISubstrate();
|
|
44
|
+
await checkSub();
|
|
45
|
+
this.substrate = sub;
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
try {
|
|
49
|
+
sub = new XDMSubstrate();
|
|
50
|
+
await checkSub(MAX_XDM_RESPONSE_WAIT);
|
|
51
|
+
this.substrate = sub;
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
try {
|
|
55
|
+
sub = new WalletWireTransceiver(new HTTPWalletWire(this.originator));
|
|
56
|
+
await checkSub();
|
|
57
|
+
this.substrate = sub;
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
throw new Error('No wallet available over any communication substrate. Install a BSV wallet today!');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async createAction(args) {
|
|
66
|
+
await this.connectToSubstrate();
|
|
67
|
+
return await this.substrate.createAction(args, this.originator);
|
|
68
|
+
}
|
|
69
|
+
async signAction(args) {
|
|
70
|
+
await this.connectToSubstrate();
|
|
71
|
+
return await this.substrate.signAction(args, this.originator);
|
|
72
|
+
}
|
|
73
|
+
async abortAction(args) {
|
|
74
|
+
await this.connectToSubstrate();
|
|
75
|
+
return await this.substrate.abortAction(args, this.originator);
|
|
76
|
+
}
|
|
77
|
+
async listActions(args) {
|
|
78
|
+
await this.connectToSubstrate();
|
|
79
|
+
return await this.substrate.listActions(args, this.originator);
|
|
80
|
+
}
|
|
81
|
+
async internalizeAction(args) {
|
|
82
|
+
await this.connectToSubstrate();
|
|
83
|
+
return await this.substrate.internalizeAction(args, this.originator);
|
|
84
|
+
}
|
|
85
|
+
async listOutputs(args) {
|
|
86
|
+
await this.connectToSubstrate();
|
|
87
|
+
return await this.substrate.listOutputs(args, this.originator);
|
|
88
|
+
}
|
|
89
|
+
async relinquishOutput(args) {
|
|
90
|
+
await this.connectToSubstrate();
|
|
91
|
+
return await this.substrate.relinquishOutput(args, this.originator);
|
|
92
|
+
}
|
|
93
|
+
async getPublicKey(args) {
|
|
94
|
+
await this.connectToSubstrate();
|
|
95
|
+
return await this.substrate.getPublicKey(args, this.originator);
|
|
96
|
+
}
|
|
97
|
+
async revealCounterpartyKeyLinkage(args) {
|
|
98
|
+
await this.connectToSubstrate();
|
|
99
|
+
return await this.substrate.revealCounterpartyKeyLinkage(args, this.originator);
|
|
100
|
+
}
|
|
101
|
+
async revealSpecificKeyLinkage(args) {
|
|
102
|
+
await this.connectToSubstrate();
|
|
103
|
+
return await this.substrate.revealSpecificKeyLinkage(args, this.originator);
|
|
104
|
+
}
|
|
105
|
+
async encrypt(args) {
|
|
106
|
+
await this.connectToSubstrate();
|
|
107
|
+
return await this.substrate.encrypt(args, this.originator);
|
|
108
|
+
}
|
|
109
|
+
async decrypt(args) {
|
|
110
|
+
return await this.substrate.decrypt(args, this.originator);
|
|
111
|
+
}
|
|
112
|
+
async createHmac(args) {
|
|
113
|
+
await this.connectToSubstrate();
|
|
114
|
+
return await this.substrate.createHmac(args, this.originator);
|
|
115
|
+
}
|
|
116
|
+
async verifyHmac(args) {
|
|
117
|
+
await this.connectToSubstrate();
|
|
118
|
+
return await this.substrate.verifyHmac(args, this.originator);
|
|
119
|
+
}
|
|
120
|
+
async createSignature(args) {
|
|
121
|
+
await this.connectToSubstrate();
|
|
122
|
+
return await this.substrate.createSignature(args, this.originator);
|
|
123
|
+
}
|
|
124
|
+
async verifySignature(args) {
|
|
125
|
+
await this.connectToSubstrate();
|
|
126
|
+
return await this.substrate.verifySignature(args, this.originator);
|
|
127
|
+
}
|
|
128
|
+
async acquireCertificate(args) {
|
|
129
|
+
await this.connectToSubstrate();
|
|
130
|
+
return await this.substrate.acquireCertificate(args, this.originator);
|
|
131
|
+
}
|
|
132
|
+
async listCertificates(args) {
|
|
133
|
+
await this.connectToSubstrate();
|
|
134
|
+
return await this.substrate.listCertificates(args, this.originator);
|
|
135
|
+
}
|
|
136
|
+
async proveCertificate(args) {
|
|
137
|
+
await this.connectToSubstrate();
|
|
138
|
+
return await this.substrate.proveCertificate(args, this.originator);
|
|
139
|
+
}
|
|
140
|
+
async relinquishCertificate(args) {
|
|
141
|
+
await this.connectToSubstrate();
|
|
142
|
+
return await this.substrate.relinquishCertificate(args, this.originator);
|
|
143
|
+
}
|
|
144
|
+
async discoverByIdentityKey(args) {
|
|
145
|
+
await this.connectToSubstrate();
|
|
146
|
+
return await this.substrate.discoverByIdentityKey(args, this.originator);
|
|
147
|
+
}
|
|
148
|
+
async discoverByAttributes(args) {
|
|
149
|
+
await this.connectToSubstrate();
|
|
150
|
+
return await this.substrate.discoverByAttributes(args, this.originator);
|
|
151
|
+
}
|
|
152
|
+
async isAuthenticated(args = {}) {
|
|
153
|
+
await this.connectToSubstrate();
|
|
154
|
+
return await this.substrate.isAuthenticated(args, this.originator);
|
|
155
|
+
}
|
|
156
|
+
async waitForAuthentication(args = {}) {
|
|
157
|
+
await this.connectToSubstrate();
|
|
158
|
+
return await this.substrate.waitForAuthentication(args, this.originator);
|
|
159
|
+
}
|
|
160
|
+
async getHeight(args = {}) {
|
|
161
|
+
await this.connectToSubstrate();
|
|
162
|
+
return await this.substrate.getHeight(args, this.originator);
|
|
163
|
+
}
|
|
164
|
+
async getHeaderForHeight(args) {
|
|
165
|
+
await this.connectToSubstrate();
|
|
166
|
+
return await this.substrate.getHeaderForHeight(args, this.originator);
|
|
167
|
+
}
|
|
168
|
+
async getNetwork(args = {}) {
|
|
169
|
+
await this.connectToSubstrate();
|
|
170
|
+
return await this.substrate.getNetwork(args, this.originator);
|
|
171
|
+
}
|
|
172
|
+
async getVersion(args = {}) {
|
|
173
|
+
await this.connectToSubstrate();
|
|
174
|
+
return await this.substrate.getVersion(args, this.originator);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=WalletClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletClient.js","sourceRoot":"","sources":["../../../../src/wallet/WalletClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export class WalletError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
isError = true;
|
|
4
|
+
constructor(message, code = 1, stack) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.code = code;
|
|
7
|
+
this.name = this.constructor.name;
|
|
8
|
+
if (stack) {
|
|
9
|
+
this.stack = stack;
|
|
10
|
+
}
|
|
11
|
+
else if (Error.captureStackTrace) {
|
|
12
|
+
Error.captureStackTrace(this, this.constructor);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
// NOTE: Enum values must not exceed the UInt8 range (0–255)
|
|
17
|
+
var walletErrors;
|
|
18
|
+
(function (walletErrors) {
|
|
19
|
+
walletErrors[walletErrors["unknownError"] = 1] = "unknownError";
|
|
20
|
+
walletErrors[walletErrors["unsupportedAction"] = 2] = "unsupportedAction";
|
|
21
|
+
walletErrors[walletErrors["invalidHmac"] = 3] = "invalidHmac";
|
|
22
|
+
walletErrors[walletErrors["invalidSignature"] = 4] = "invalidSignature";
|
|
23
|
+
})(walletErrors || (walletErrors = {}));
|
|
24
|
+
export default walletErrors;
|
|
25
|
+
//# sourceMappingURL=WalletError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletError.js","sourceRoot":"","sources":["../../../../src/wallet/WalletError.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,IAAI,CAAQ;IACZ,OAAO,GAAY,IAAI,CAAA;IAEvB,YAAY,OAAe,EAAE,IAAI,GAAG,CAAC,EAAE,KAAc;QACnD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;QAEjC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QACpB,CAAC;aAAM,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACnC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;CACF;AAED,4DAA4D;AAC5D,IAAK,YAKJ;AALD,WAAK,YAAY;IACf,+DAAgB,CAAA;IAChB,yEAAqB,CAAA;IACrB,6DAAe,CAAA;IACf,uEAAoB,CAAA;AACtB,CAAC,EALI,YAAY,KAAZ,YAAY,QAKhB;AAED,eAAe,YAAY,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './Wallet.interfaces.js';
|
|
2
|
+
export { default as KeyDeriver } from './KeyDeriver.js';
|
|
3
|
+
export { default as CachedKeyDeriver } from './CachedKeyDeriver.js';
|
|
4
|
+
export { default as ProtoWallet } from './ProtoWallet.js';
|
|
5
|
+
export { default as WalletClient } from './WalletClient.js';
|
|
6
|
+
export { default as WalletErrors } from './WalletError.js';
|
|
7
|
+
export * from './WalletError.js';
|
|
8
|
+
export * from './substrates/index.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC1D,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import WalletWireCalls from './WalletWireCalls.js';
|
|
2
|
+
import { Utils } from '../../primitives/index.js';
|
|
3
|
+
export default class HTTPWalletWire {
|
|
4
|
+
baseUrl;
|
|
5
|
+
httpClient;
|
|
6
|
+
originator;
|
|
7
|
+
constructor(originator, baseUrl = 'http://localhost:3301', httpClient = fetch) {
|
|
8
|
+
this.baseUrl = baseUrl;
|
|
9
|
+
this.httpClient = httpClient;
|
|
10
|
+
this.originator = originator;
|
|
11
|
+
}
|
|
12
|
+
async transmitToWallet(message) {
|
|
13
|
+
const messageReader = new Utils.Reader(message);
|
|
14
|
+
// Read call code
|
|
15
|
+
const callCode = messageReader.readUInt8();
|
|
16
|
+
// Map call code to call name
|
|
17
|
+
const callName = WalletWireCalls[callCode]; // calls is enum
|
|
18
|
+
if (!callName) {
|
|
19
|
+
// Invalid call code
|
|
20
|
+
throw new Error(`Invalid call code: ${callCode}`);
|
|
21
|
+
}
|
|
22
|
+
// Read originator length
|
|
23
|
+
const originatorLength = messageReader.readUInt8();
|
|
24
|
+
let originator;
|
|
25
|
+
if (originatorLength > 0) {
|
|
26
|
+
const originatorBytes = messageReader.read(originatorLength);
|
|
27
|
+
originator = Utils.toUTF8(originatorBytes);
|
|
28
|
+
}
|
|
29
|
+
const payload = messageReader.read();
|
|
30
|
+
const response = await fetch(`${this.baseUrl}/${callName}`, {
|
|
31
|
+
method: 'POST',
|
|
32
|
+
headers: {
|
|
33
|
+
'Content-Type': 'application/octet-stream',
|
|
34
|
+
Origin: originator
|
|
35
|
+
},
|
|
36
|
+
body: new Uint8Array(payload)
|
|
37
|
+
});
|
|
38
|
+
const responseBuffer = await response.arrayBuffer();
|
|
39
|
+
return Array.from(new Uint8Array(responseBuffer));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=HTTPWalletWire.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HTTPWalletWire.js","sourceRoot":"","sources":["../../../../../src/wallet/substrates/HTTPWalletWire.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAEjD,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,OAAO,CAAQ;IACf,UAAU,CAAc;IACxB,UAAU,CAAoB;IAE9B,YAAY,UAA8B,EAAE,UAAkB,uBAAuB,EAAE,UAAU,GAAG,KAAK;QACvG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAiB;QACtC,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC/C,iBAAiB;QACjB,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,EAAE,CAAA;QAE1C,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA,CAAC,gBAAgB;QAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,oBAAoB;YACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAA;QACnD,CAAC;QAED,yBAAyB;QACzB,MAAM,gBAAgB,GAAG,aAAa,CAAC,SAAS,EAAE,CAAA;QAClD,IAAI,UAA8B,CAAA;QAClC,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAC5D,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;QAC5C,CAAC;QACD,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,CAAA;QACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,QAAQ,EAAE,EAAE;YAC1D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,0BAA0B;gBAC1C,MAAM,EAAE,UAAU;aACnB;YACD,IAAI,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAA;QACF,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;QACnD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,cAAc,CAAC,CAAC,CAAA;IACnD,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletWire.js","sourceRoot":"","sources":["../../../../../src/wallet/substrates/WalletWire.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// NOTE: Enum values must not exceed the UInt8 range (0–255)
|
|
2
|
+
var calls;
|
|
3
|
+
(function (calls) {
|
|
4
|
+
calls[calls["createAction"] = 1] = "createAction";
|
|
5
|
+
calls[calls["signAction"] = 2] = "signAction";
|
|
6
|
+
calls[calls["abortAction"] = 3] = "abortAction";
|
|
7
|
+
calls[calls["listActions"] = 4] = "listActions";
|
|
8
|
+
calls[calls["internalizeAction"] = 5] = "internalizeAction";
|
|
9
|
+
calls[calls["listOutputs"] = 6] = "listOutputs";
|
|
10
|
+
calls[calls["relinquishOutput"] = 7] = "relinquishOutput";
|
|
11
|
+
calls[calls["getPublicKey"] = 8] = "getPublicKey";
|
|
12
|
+
calls[calls["revealCounterpartyKeyLinkage"] = 9] = "revealCounterpartyKeyLinkage";
|
|
13
|
+
calls[calls["revealSpecificKeyLinkage"] = 10] = "revealSpecificKeyLinkage";
|
|
14
|
+
calls[calls["encrypt"] = 11] = "encrypt";
|
|
15
|
+
calls[calls["decrypt"] = 12] = "decrypt";
|
|
16
|
+
calls[calls["createHmac"] = 13] = "createHmac";
|
|
17
|
+
calls[calls["verifyHmac"] = 14] = "verifyHmac";
|
|
18
|
+
calls[calls["createSignature"] = 15] = "createSignature";
|
|
19
|
+
calls[calls["verifySignature"] = 16] = "verifySignature";
|
|
20
|
+
calls[calls["acquireCertificate"] = 17] = "acquireCertificate";
|
|
21
|
+
calls[calls["listCertificates"] = 18] = "listCertificates";
|
|
22
|
+
calls[calls["proveCertificate"] = 19] = "proveCertificate";
|
|
23
|
+
calls[calls["relinquishCertificate"] = 20] = "relinquishCertificate";
|
|
24
|
+
calls[calls["discoverByIdentityKey"] = 21] = "discoverByIdentityKey";
|
|
25
|
+
calls[calls["discoverByAttributes"] = 22] = "discoverByAttributes";
|
|
26
|
+
calls[calls["isAuthenticated"] = 23] = "isAuthenticated";
|
|
27
|
+
calls[calls["waitForAuthentication"] = 24] = "waitForAuthentication";
|
|
28
|
+
calls[calls["getHeight"] = 25] = "getHeight";
|
|
29
|
+
calls[calls["getHeaderForHeight"] = 26] = "getHeaderForHeight";
|
|
30
|
+
calls[calls["getNetwork"] = 27] = "getNetwork";
|
|
31
|
+
calls[calls["getVersion"] = 28] = "getVersion";
|
|
32
|
+
})(calls || (calls = {}));
|
|
33
|
+
export default calls;
|
|
34
|
+
//# sourceMappingURL=WalletWireCalls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletWireCalls.js","sourceRoot":"","sources":["../../../../../src/wallet/substrates/WalletWireCalls.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,IAAK,KA6BJ;AA7BD,WAAK,KAAK;IACR,iDAAgB,CAAA;IAChB,6CAAc,CAAA;IACd,+CAAe,CAAA;IACf,+CAAe,CAAA;IACf,2DAAqB,CAAA;IACrB,+CAAe,CAAA;IACf,yDAAoB,CAAA;IACpB,iDAAgB,CAAA;IAChB,iFAAgC,CAAA;IAChC,0EAA6B,CAAA;IAC7B,wCAAY,CAAA;IACZ,wCAAY,CAAA;IACZ,8CAAe,CAAA;IACf,8CAAe,CAAA;IACf,wDAAoB,CAAA;IACpB,wDAAoB,CAAA;IACpB,8DAAuB,CAAA;IACvB,0DAAqB,CAAA;IACrB,0DAAqB,CAAA;IACrB,oEAA0B,CAAA;IAC1B,oEAA0B,CAAA;IAC1B,kEAAyB,CAAA;IACzB,wDAAoB,CAAA;IACpB,oEAA0B,CAAA;IAC1B,4CAAc,CAAA;IACd,8DAAuB,CAAA;IACvB,8CAAe,CAAA;IACf,8CAAe,CAAA;AACjB,CAAC,EA7BI,KAAK,KAAL,KAAK,QA6BT;AAED,eAAe,KAAK,CAAA"}
|