@taquito/signer 23.0.0-beta.0 → 23.0.0

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.
@@ -22,14 +22,26 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
22
22
  step((generator = generator.apply(thisArg, _arguments || [])).next());
23
23
  });
24
24
  };
25
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
26
+ if (kind === "m") throw new TypeError("Private method is not writable");
27
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
28
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
29
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
30
+ };
31
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
32
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
33
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
34
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
35
+ };
36
+ var _InMemorySigner_key;
25
37
  Object.defineProperty(exports, "__esModule", { value: true });
26
38
  exports.InMemorySigner = exports.InvalidPassphraseError = exports.VERSION = void 0;
39
+ exports.publicKeyFromString = publicKeyFromString;
27
40
  /**
28
41
  * @packageDocumentation
29
42
  * @module @taquito/signer
30
43
  */
31
44
  const nacl_1 = require("@stablelib/nacl");
32
- const blake2b_1 = require("@stablelib/blake2b");
33
45
  const utils_1 = require("@taquito/utils");
34
46
  const typedarray_to_buffer_1 = require("typedarray-to-buffer");
35
47
  const ed_key_1 = require("./ed-key");
@@ -39,6 +51,8 @@ const Bip39 = require("bip39");
39
51
  const helpers_1 = require("./helpers");
40
52
  const errors_1 = require("./errors");
41
53
  const core_1 = require("@taquito/core");
54
+ const key_interface_1 = require("./key-interface");
55
+ const bls_key_1 = require("./bls-key");
42
56
  __exportStar(require("./import-key"), exports);
43
57
  var version_1 = require("./version");
44
58
  Object.defineProperty(exports, "VERSION", { enumerable: true, get: function () { return version_1.VERSION; } });
@@ -58,7 +72,7 @@ class InMemorySigner {
58
72
  throw new errors_1.InvalidMnemonicError(mnemonic);
59
73
  }
60
74
  const seed = Bip39.mnemonicToSeedSync(mnemonic, `${email}${password}`);
61
- const key = (0, utils_1.b58cencode)(seed.slice(0, 32), utils_1.prefix.edsk2);
75
+ const key = (0, utils_1.b58Encode)(seed.subarray(0, 32), utils_1.PrefixV2.Ed25519Seed);
62
76
  return new InMemorySigner(key);
63
77
  }
64
78
  static fromSecretKey(key, passphrase) {
@@ -94,34 +108,63 @@ class InMemorySigner {
94
108
  *
95
109
  */
96
110
  constructor(key, passphrase) {
97
- const encrypted = key.substring(2, 3) === 'e';
98
- let decrypt = (k) => k;
111
+ _InMemorySigner_key.set(this, void 0);
112
+ const keyPrefixes = [
113
+ utils_1.PrefixV2.Ed25519EncryptedSeed,
114
+ utils_1.PrefixV2.Ed25519Seed,
115
+ utils_1.PrefixV2.Ed25519SecretKey,
116
+ utils_1.PrefixV2.Secp256k1EncryptedSecretKey,
117
+ utils_1.PrefixV2.Secp256k1SecretKey,
118
+ utils_1.PrefixV2.P256EncryptedSecretKey,
119
+ utils_1.PrefixV2.P256SecretKey,
120
+ utils_1.PrefixV2.BLS12_381EncryptedSecretKey,
121
+ utils_1.PrefixV2.BLS12_381SecretKey,
122
+ ];
123
+ const pre = (() => {
124
+ try {
125
+ const [, pre] = (0, utils_1.b58DecodeAndCheckPrefix)(key, keyPrefixes);
126
+ return pre;
127
+ }
128
+ catch (_a) {
129
+ throw new core_1.InvalidKeyError(`Invalid private key, expecting one of the following prefixes '${keyPrefixes}'.`);
130
+ }
131
+ })();
132
+ const encrypted = pre === utils_1.PrefixV2.Ed25519EncryptedSeed ||
133
+ pre === utils_1.PrefixV2.Secp256k1EncryptedSecretKey ||
134
+ pre === utils_1.PrefixV2.P256EncryptedSecretKey ||
135
+ pre === utils_1.PrefixV2.BLS12_381EncryptedSecretKey;
136
+ let decrypt;
99
137
  if (encrypted) {
100
138
  if (!passphrase) {
101
139
  throw new errors_1.InvalidPassphraseError('No passphrase provided to decrypt encrypted key');
102
140
  }
103
- decrypt = (constructedKey) => {
104
- const salt = (0, typedarray_to_buffer_1.default)(constructedKey.slice(0, 8));
105
- const encryptedSk = constructedKey.slice(8);
141
+ decrypt = (data) => {
142
+ const salt = (0, typedarray_to_buffer_1.default)(data.slice(0, 8));
143
+ const encryptedSk = data.slice(8);
106
144
  const encryptionKey = pbkdf2_1.default.pbkdf2Sync(passphrase, salt, 32768, 32, 'sha512');
107
- return (0, nacl_1.openSecretBox)(new Uint8Array(encryptionKey), new Uint8Array(24), new Uint8Array(encryptedSk));
145
+ const res = (0, nacl_1.openSecretBox)(new Uint8Array(encryptionKey), new Uint8Array(24), new Uint8Array(encryptedSk));
146
+ if (!res) {
147
+ throw new Error("can't decrypt secret key");
148
+ }
149
+ return res;
108
150
  };
109
151
  }
110
- switch (key.substring(0, 4)) {
111
- case 'edes':
112
- case 'edsk':
113
- this._key = new ed_key_1.Tz1(key, encrypted, decrypt);
152
+ switch (pre) {
153
+ case utils_1.PrefixV2.Ed25519EncryptedSeed:
154
+ case utils_1.PrefixV2.Ed25519Seed:
155
+ case utils_1.PrefixV2.Ed25519SecretKey:
156
+ __classPrivateFieldSet(this, _InMemorySigner_key, new ed_key_1.EdKey(key, decrypt), "f");
114
157
  break;
115
- case 'spsk':
116
- case 'spes':
117
- this._key = new ec_key_1.Tz2(key, encrypted, decrypt);
158
+ case utils_1.PrefixV2.Secp256k1EncryptedSecretKey:
159
+ case utils_1.PrefixV2.Secp256k1SecretKey:
160
+ case utils_1.PrefixV2.P256EncryptedSecretKey:
161
+ case utils_1.PrefixV2.P256SecretKey:
162
+ __classPrivateFieldSet(this, _InMemorySigner_key, new ec_key_1.ECKey(key, decrypt), "f");
118
163
  break;
119
- case 'p2sk':
120
- case 'p2es':
121
- this._key = new ec_key_1.Tz3(key, encrypted, decrypt);
164
+ case utils_1.PrefixV2.BLS12_381EncryptedSecretKey:
165
+ case utils_1.PrefixV2.BLS12_381SecretKey:
166
+ __classPrivateFieldSet(this, _InMemorySigner_key, new bls_key_1.BLSKey(key, decrypt), "f");
122
167
  break;
123
- default:
124
- throw new core_1.InvalidKeyError(`${(0, utils_1.invalidDetail)(utils_1.ValidationResult.NO_PREFIX_MATCHED)} expecting one of the following '${utils_1.Prefix.EDESK}', '${utils_1.Prefix.EDSK}', '${utils_1.Prefix.SPSK}', '${utils_1.Prefix.SPESK}', '${utils_1.Prefix.P2SK}' or '${utils_1.Prefix.P2ESK}'.`);
125
168
  }
126
169
  }
127
170
  /**
@@ -129,39 +172,70 @@ class InMemorySigner {
129
172
  * @param bytes Bytes to sign
130
173
  * @param watermark Watermark to append to the bytes
131
174
  */
132
- sign(bytes, watermark) {
175
+ sign(message, watermark) {
133
176
  return __awaiter(this, void 0, void 0, function* () {
134
- let bb = (0, utils_1.hex2buf)(bytes);
135
- if (typeof watermark !== 'undefined') {
136
- bb = (0, utils_1.mergebuf)(watermark, bb);
177
+ const msg = typeof message == 'string' ? (0, utils_1.hex2buf)(message) : message;
178
+ const watermarkMsg = watermark !== undefined ? (0, utils_1.mergebuf)(watermark, msg) : msg;
179
+ const { rawSignature, sig: signature, prefixSig: prefixedSignature, } = yield __classPrivateFieldGet(this, _InMemorySigner_key, "f").sign(watermarkMsg);
180
+ return {
181
+ bytes: (0, utils_1.buf2hex)(msg),
182
+ sig: signature,
183
+ prefixSig: prefixedSignature,
184
+ sbytes: (0, utils_1.buf2hex)((0, utils_1.mergebuf)(msg,
185
+ // bls only Signature_prefix ff03 ref:https://octez.tezos.com/docs/shell/p2p_api.html#signature-prefix-tag-255 & https://octez.tezos.com/docs/shell/p2p_api.html#bls-prefix-tag-3
186
+ (0, key_interface_1.isPOP)(__classPrivateFieldGet(this, _InMemorySigner_key, "f")) ? (0, utils_1.mergebuf)(new Uint8Array([255, 3]), rawSignature) : rawSignature)),
187
+ };
188
+ });
189
+ }
190
+ provePossession() {
191
+ return __awaiter(this, void 0, void 0, function* () {
192
+ if ((0, key_interface_1.isPOP)(__classPrivateFieldGet(this, _InMemorySigner_key, "f"))) {
193
+ return __classPrivateFieldGet(this, _InMemorySigner_key, "f").provePossession();
194
+ }
195
+ else {
196
+ throw new core_1.ProhibitedActionError('Only BLS keys can prove possession');
137
197
  }
138
- const bytesHash = (0, blake2b_1.hash)(bb, 32);
139
- return this._key.sign(bytes, bytesHash);
140
198
  });
141
199
  }
200
+ get canProvePossession() {
201
+ return (0, key_interface_1.isPOP)(__classPrivateFieldGet(this, _InMemorySigner_key, "f"));
202
+ }
142
203
  /**
143
204
  * @returns Encoded public key
144
205
  */
145
206
  publicKey() {
146
- return __awaiter(this, void 0, void 0, function* () {
147
- return this._key.publicKey();
148
- });
207
+ return Promise.resolve(String(__classPrivateFieldGet(this, _InMemorySigner_key, "f").publicKey()));
149
208
  }
150
209
  /**
151
210
  * @returns Encoded public key hash
152
211
  */
153
212
  publicKeyHash() {
154
- return __awaiter(this, void 0, void 0, function* () {
155
- return this._key.publicKeyHash();
156
- });
213
+ return Promise.resolve(__classPrivateFieldGet(this, _InMemorySigner_key, "f").publicKey().hash());
157
214
  }
158
215
  /**
159
216
  * @returns Encoded private key
160
217
  */
161
218
  secretKey() {
162
- return __awaiter(this, void 0, void 0, function* () {
163
- return this._key.secretKey();
164
- });
219
+ return Promise.resolve(__classPrivateFieldGet(this, _InMemorySigner_key, "f").secretKey());
165
220
  }
166
221
  }
167
222
  exports.InMemorySigner = InMemorySigner;
223
+ _InMemorySigner_key = new WeakMap();
224
+ function publicKeyFromString(src) {
225
+ const [keyData, pre] = (0, utils_1.b58DecodeAndCheckPrefix)(src, [
226
+ utils_1.PrefixV2.Ed25519PublicKey,
227
+ utils_1.PrefixV2.Secp256k1PublicKey,
228
+ utils_1.PrefixV2.P256PublicKey,
229
+ utils_1.PrefixV2.BLS12_381PublicKey,
230
+ ]);
231
+ switch (pre) {
232
+ case utils_1.PrefixV2.Ed25519PublicKey:
233
+ return new ed_key_1.EdPublicKey(keyData);
234
+ case utils_1.PrefixV2.Secp256k1PublicKey:
235
+ return new ec_key_1.ECPublicKey(keyData, 'secp256k1');
236
+ case utils_1.PrefixV2.P256PublicKey:
237
+ return new ec_key_1.ECPublicKey(keyData, 'p256');
238
+ case utils_1.PrefixV2.BLS12_381PublicKey:
239
+ return new bls_key_1.BLSPublicKey(keyData);
240
+ }
241
+ }
@@ -3,6 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  // IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!
5
5
  exports.VERSION = {
6
- "commitHash": "7af2138a9e5c5b230c4b4c726f35c2f2e67b721c",
7
- "version": "23.0.0-beta.0"
6
+ "commitHash": "9065acc1b41ec205a49e64b54ef89f50bafa6210",
7
+ "version": "23.0.0"
8
8
  };