@did-btcr2/keypair 0.7.1 → 0.8.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.
package/dist/cjs/pair.js CHANGED
@@ -8,13 +8,13 @@ import { Secp256k1SecretKey } from './secret.js';
8
8
  */
9
9
  export class SchnorrKeyPair {
10
10
  /** @type {Secp256k1SecretKey} The secret key object */
11
- _secretKey;
11
+ #secretKey;
12
12
  /** @type {CompressedSecp256k1PublicKey} The public key object */ ;
13
- _publicKey;
13
+ #publicKey;
14
14
  /** @type {string} The public key in multibase format */
15
- _publicKeyMultibase;
15
+ #publicKeyMultibase;
16
16
  /** @type {string} The secret key in multibase format */
17
- _secretKeyMultibase;
17
+ #secretKeyMultibase;
18
18
  /**
19
19
  * Creates an instance of Keys. Must provide a at least a secret key.
20
20
  * Can optionally provide both a secret and public key, but must be a valid pair.
@@ -31,23 +31,23 @@ export class SchnorrKeyPair {
31
31
  }
32
32
  // Set the secretKey
33
33
  if (params.secretKey instanceof Uint8Array) {
34
- this._secretKey = new Secp256k1SecretKey(params.secretKey);
34
+ this.#secretKey = new Secp256k1SecretKey(params.secretKey);
35
35
  }
36
36
  else if (params.secretKey instanceof Secp256k1SecretKey) {
37
- this._secretKey = params.secretKey;
37
+ this.#secretKey = params.secretKey;
38
38
  }
39
39
  // Set the publicKey
40
40
  if (params.publicKey instanceof CompressedSecp256k1PublicKey) {
41
- this._publicKey = params.publicKey;
41
+ this.#publicKey = params.publicKey;
42
42
  }
43
43
  else if (params.publicKey instanceof Uint8Array) {
44
- this._publicKey = new CompressedSecp256k1PublicKey(params.publicKey);
44
+ this.#publicKey = new CompressedSecp256k1PublicKey(params.publicKey);
45
45
  }
46
46
  else {
47
- this._publicKey = this._secretKey.computePublicKey();
47
+ this.#publicKey = this.#secretKey.computePublicKey();
48
48
  }
49
- this._publicKeyMultibase = this._publicKey.multibase.encoded;
50
- this._secretKeyMultibase = this._secretKey ? this._secretKey.multibase : '';
49
+ this.#publicKeyMultibase = this.#publicKey.multibase.encoded;
50
+ this.#secretKeyMultibase = this.#secretKey ? this.#secretKey.multibase : '';
51
51
  }
52
52
  /**
53
53
  * Get the Secp256k1SecretKey.
@@ -56,15 +56,15 @@ export class SchnorrKeyPair {
56
56
  */
57
57
  get secretKey() {
58
58
  // If the secret key is not available, throw an error
59
- if (!this._secretKey) {
59
+ if (!this.#secretKey) {
60
60
  throw new KeyPairError('Secret key not available', 'SECRET_KEY_ERROR');
61
61
  }
62
62
  // If the secret key is not valid, throw an error
63
- if (!this._secretKey.isValid()) {
63
+ if (!this.#secretKey.isValid()) {
64
64
  throw new KeyPairError('Secret key is not valid', 'SECRET_KEY_ERROR');
65
65
  }
66
66
  // Return a copy of the secret key
67
- const secret = this._secretKey;
67
+ const secret = this.#secretKey;
68
68
  return secret;
69
69
  }
70
70
  /**
@@ -82,16 +82,16 @@ export class SchnorrKeyPair {
82
82
  if (!publicKey.equals(cPk))
83
83
  throw new KeyPairError('Public key is not a valid pair with the secret key', 'PUBLIC_KEY_ERROR');
84
84
  }
85
- this._publicKey = publicKey;
86
- this._publicKeyMultibase = publicKey.multibase.encoded;
87
- this._secretKeyMultibase = this._secretKey ? this._secretKey.multibase : '';
85
+ this.#publicKey = publicKey;
86
+ this.#publicKeyMultibase = publicKey.multibase.encoded;
87
+ this.#secretKeyMultibase = this.#secretKey ? this.#secretKey.multibase : '';
88
88
  }
89
89
  /**
90
90
  * Get the CompressedSecp256k1PublicKey.
91
91
  * @returns {CompressedSecp256k1PublicKey} The CompressedSecp256k1PublicKey object
92
92
  */
93
93
  get publicKey() {
94
- const publicKey = this._publicKey;
94
+ const publicKey = this.#publicKey;
95
95
  return publicKey;
96
96
  }
97
97
  /**
@@ -111,7 +111,7 @@ export class SchnorrKeyPair {
111
111
  get hex() {
112
112
  return {
113
113
  public: this.publicKey.hex,
114
- secret: this._secretKey ? this.secretKey.hex : undefined
114
+ secret: this.#secretKey ? this.secretKey.hex : undefined
115
115
  };
116
116
  }
117
117
  /**
@@ -120,8 +120,8 @@ export class SchnorrKeyPair {
120
120
  */
121
121
  get multibase() {
122
122
  return {
123
- publicKeyMultibase: this._publicKeyMultibase,
124
- secretKeyMultibase: this._secretKeyMultibase,
123
+ publicKeyMultibase: this.#publicKeyMultibase,
124
+ secretKeyMultibase: this.#secretKeyMultibase,
125
125
  };
126
126
  }
127
127
  /**
@@ -150,20 +150,22 @@ export class SchnorrKeyPair {
150
150
  * @param {Secp256k1SecretKey | KeyBytes} data The secret key bytes
151
151
  * @returns {SchnorrKeyPair} A new SchnorrKeyPair object
152
152
  */
153
- static fromPrivateKey(data) {
154
- // If the secret key is a Secp256k1SecretKey object, get the raw bytes else use the bytes
155
- const bytes = data instanceof Secp256k1SecretKey ? data.bytes : data;
156
- // Throw error if the secret key is not 32 bytes
157
- if (bytes.length !== 32) {
158
- throw new KeyPairError('Invalid arg: must be 32 byte secret key', 'FROM_PRIVATE_KEY_ERROR');
153
+ static fromSecret(data) {
154
+ // If the data is Secp256k1SecretKey object, get the raw bytes
155
+ // Else if data is string, convert to byte array
156
+ // Else must be bytes, use them
157
+ const secret = typeof data === 'string'
158
+ ? Buffer.from(data, 'hex')
159
+ : data;
160
+ // Check the lenth
161
+ if (secret.length !== 32) {
162
+ throw new KeyPairError('Invalid arg: must be 32 byte secret key', 'FROM_SECRET_KEY_ERROR');
159
163
  }
160
164
  // If pk Uint8Array, construct Secp256k1SecretKey object else use the object
161
- const secret = data instanceof Uint8Array ? new Secp256k1SecretKey(data) : data;
165
+ const secretKey = new Secp256k1SecretKey(secret);
166
+ const publicKey = secretKey.computePublicKey();
162
167
  // Return a new Keys object
163
- return new SchnorrKeyPair({
164
- secretKey: data instanceof Uint8Array ? new Secp256k1SecretKey(data) : data,
165
- publicKey: secret.computePublicKey()
166
- });
168
+ return new SchnorrKeyPair({ secretKey, publicKey });
167
169
  }
168
170
  /**
169
171
  * Static method creates a new Keys (Secp256k1SecretKey/CompressedSecp256k1PublicKey) from bigint entropy.
@@ -1 +1 @@
1
- {"version":3,"file":"pair.js","sourceRoot":"","sources":["../../src/pair.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pair.js","sourceRoot":"","sources":["../../src/pair.ts"],"names":[],"mappings":"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"}
@@ -12,39 +12,43 @@ import { Secp256k1SecretKey } from './secret.js';
12
12
  */
13
13
  export class CompressedSecp256k1PublicKey {
14
14
  /** @type {KeyBytes} The public key bytes */
15
- _bytes;
15
+ #bytes;
16
16
  /** @type {MultibaseObject} The public key as a MultibaseObject */
17
- _multibase = {
17
+ #multibase = {
18
18
  prefix: BIP340_PUBLIC_KEY_MULTIBASE_PREFIX,
19
19
  key: [],
20
20
  encoded: ''
21
21
  };
22
22
  /**
23
23
  * Creates a CompressedSecp256k1PublicKey instance.
24
- * @param {KeyBytes} bytes The public key byte array.
24
+ * @param {Hex} initialBytes The public key byte array.
25
25
  * @throws {PublicKeyError} if the byte length is not 32 (x-only) or 33 (compressed)
26
26
  */
27
- constructor(bytes) {
27
+ constructor(initialBytes) {
28
+ // Convert hex string to Uint8Array if necessary
29
+ const keyBytes = initialBytes instanceof Uint8Array
30
+ ? initialBytes
31
+ : Uint8Array.from(Buffer.from(initialBytes, 'hex'));
28
32
  // If the byte length is not 33, throw an error
29
- if (bytes.length !== 33) {
30
- throw new PublicKeyError('Invalid argument: byte length must be 33 (compressed)', 'CONSTRUCTOR_ERROR', { bytes });
33
+ if (!keyBytes || keyBytes.length !== 33) {
34
+ throw new PublicKeyError('Invalid argument: byte length must be 33 (compressed)', 'CONSTRUCTOR_ERROR', { keyBytes });
31
35
  }
32
36
  // Validate the point is on curve and in compressed form
33
- if (!tinysecp.isPoint(bytes)) {
34
- throw new PublicKeyError('Invalid argument: bytes are not a valid secp256k1 compressed point', 'CONSTRUCTOR_ERROR', { bytes });
37
+ if (!tinysecp.isPoint(keyBytes)) {
38
+ throw new PublicKeyError('Invalid argument: not a valid secp256k1 compressed point', 'CONSTRUCTOR_ERROR', { keyBytes });
35
39
  }
36
40
  // Set the bytes
37
- this._bytes = bytes;
41
+ this.#bytes = keyBytes;
38
42
  // Set multibase
39
- this._multibase.encoded = this.encode();
40
- this._multibase.key = [...this._multibase.prefix, ...this.compressed];
43
+ this.#multibase.encoded = this.encode();
44
+ this.#multibase.key = [...this.#multibase.prefix, ...this.compressed];
41
45
  }
42
46
  /**
43
47
  * Get the compressed public key.
44
48
  * @returns {KeyBytes} The 33-byte compressed public key (0x02 or 0x03, x).
45
49
  */
46
50
  get compressed() {
47
- const bytes = new Uint8Array(this._bytes);
51
+ const bytes = new Uint8Array(this.#bytes);
48
52
  return bytes;
49
53
  }
50
54
  ;
@@ -60,7 +64,8 @@ export class CompressedSecp256k1PublicKey {
60
64
  * X-only (32-byte) view of the public key per BIP-340.
61
65
  */
62
66
  get xOnly() {
63
- return this._bytes.slice(1);
67
+ const xOnly = this.compressed.slice(1);
68
+ return xOnly;
64
69
  }
65
70
  /**
66
71
  * Parity of the SEC compressed public key.
@@ -68,7 +73,7 @@ export class CompressedSecp256k1PublicKey {
68
73
  * @throws {PublicKeyError} If the parity byte is not 0x02 or 0x03.
69
74
  */
70
75
  get parity() {
71
- const parity = this._bytes[0];
76
+ const parity = this.compressed[0];
72
77
  if (![0x02, 0x03].includes(parity)) {
73
78
  throw new PublicKeyError('Invalid state: parity byte must be 2 or 3', 'PARITY_ERROR', { parity });
74
79
  }
@@ -79,7 +84,7 @@ export class CompressedSecp256k1PublicKey {
79
84
  * @returns {boolean} True if the public key has even Y.
80
85
  */
81
86
  get isEven() {
82
- return this._bytes[0] === 0x02;
87
+ return this.parity === 0x02;
83
88
  }
84
89
  /**
85
90
  * Get the x-coordinate of the public key.
@@ -102,12 +107,12 @@ export class CompressedSecp256k1PublicKey {
102
107
  * @returns {MultibaseObject} An object containing the multibase bytes, address and prefix.
103
108
  */
104
109
  get multibase() {
105
- const multibase = this._multibase;
110
+ const multibase = this.#multibase;
106
111
  return multibase;
107
112
  }
108
113
  /**
109
114
  * Returns the raw public key as a hex string.
110
- * @returns {Hex} The public key as a hex string.
115
+ * @returns {string} The public key as a hex string.
111
116
  */
112
117
  get hex() {
113
118
  const hex = Buffer.from(this.compressed).toString('hex');
@@ -130,26 +135,6 @@ export class CompressedSecp256k1PublicKey {
130
135
  bip340() {
131
136
  return this.xOnly;
132
137
  }
133
- /**
134
- * Returns the point of the public key.
135
- * @param {Hex} pk The public key in hex (Uint8Array or string) format.
136
- * @returns {Point} The point of the public key.
137
- * @throws {PublicKeyError} If the public key is not a valid hex string or byte array.
138
- */
139
- static point(pk) {
140
- // If the public key is a hex string, convert it to a CompressedSecp256k1PublicKey object and return the point
141
- if (typeof pk === 'string' && /^[0-9a-fA-F]+$/.test(pk)) {
142
- const publicKey = new CompressedSecp256k1PublicKey(Buffer.fromHex(pk));
143
- return publicKey.point;
144
- }
145
- // If the public key is a byte array or ArrayBuffer, convert it to a CompressedSecp256k1PublicKey object and return the point
146
- if (pk instanceof Uint8Array || ArrayBuffer.isView(pk)) {
147
- const publicKey = new CompressedSecp256k1PublicKey(pk);
148
- return publicKey.point;
149
- }
150
- // If the public key is neither a hex string nor a byte array, throw an error
151
- throw new PublicKeyError('Invalid publicKey: must be a hex string or byte array', 'POINT_ERROR', { publicKey: pk });
152
- }
153
138
  /**
154
139
  * Decodes the multibase string to the 35-byte corresponding public key (2 byte prefix + 32 byte public key).
155
140
  * @returns {KeyBytes} The decoded public key: prefix and public key bytes
@@ -178,17 +163,36 @@ export class CompressedSecp256k1PublicKey {
178
163
  */
179
164
  encode() {
180
165
  // Convert public key bytes to an array
181
- const pk = this.compressed.toArray();
166
+ const pk = Array.from(this.compressed);
182
167
  // Ensure the public key is 33-byte secp256k1 compressed public key
183
168
  if (pk.length !== 33) {
184
169
  throw new PublicKeyError('Invalid argument: must be 33-byte (compressed) public key', 'ENCODE_MULTIBASE_ERROR');
185
170
  }
186
171
  // Convert prefix to an array
187
- const publicKeyMultibase = BIP340_PUBLIC_KEY_MULTIBASE_PREFIX.toArray();
172
+ const publicKeyMultibase = Array.from(BIP340_PUBLIC_KEY_MULTIBASE_PREFIX);
188
173
  // Push the public key bytes at the end of the prefix
189
174
  publicKeyMultibase.push(...pk);
190
175
  // Encode the bytes in base58btc format and return
191
- return base58btc.encode(publicKeyMultibase.toUint8Array());
176
+ return base58btc.encode(Uint8Array.from(publicKeyMultibase));
177
+ }
178
+ /**
179
+ * Verify a signature using schnorr or ecdsa.
180
+ * @param {SignatureBytes} signature Signature for verification.
181
+ * @param {string} data Data for verification.
182
+ * @param {CryptoOptions} opts Options for signing.
183
+ * @param {('ecdsa' | 'schnorr')} opts.scheme The signature scheme to use. Default is 'schnorr'.
184
+ * @returns {boolean} If the signature is valid against the public key.
185
+ */
186
+ verify(signature, data, opts) {
187
+ opts ??= { scheme: 'schnorr' };
188
+ // Verify the signature depending on the scheme and return the result
189
+ if (opts.scheme === 'ecdsa') {
190
+ return tinysecp.verify(data, this.compressed, signature);
191
+ }
192
+ else if (opts.scheme === 'schnorr') {
193
+ return tinysecp.verifySchnorr(data, this.x, signature);
194
+ }
195
+ throw new PublicKeyError(`Invalid scheme: ${opts.scheme}.`, 'VERIFY_SIGNATURE_ERROR', opts);
192
196
  }
193
197
  /**
194
198
  * Compares this public key to another public key.
@@ -207,40 +211,12 @@ export class CompressedSecp256k1PublicKey {
207
211
  hex: this.hex,
208
212
  multibase: this.multibase,
209
213
  point: {
210
- x: this.x.toArray(),
211
- y: this.y.toArray(),
214
+ x: Array.from(this.x),
215
+ y: Array.from(this.y),
212
216
  parity: this.parity,
213
217
  },
214
218
  };
215
219
  }
216
- /**
217
- * Creates a CompressedSecp256k1PublicKey object from a JSON representation.
218
- * @param {PublicKeyObject} json The JSON object to initialize the CompressedSecp256k1PublicKey.
219
- * @returns {CompressedSecp256k1PublicKey} The initialized CompressedSecp256k1PublicKey object.
220
- */
221
- static fromJSON(json) {
222
- json.point.x.unshift(json.point.parity);
223
- return new CompressedSecp256k1PublicKey(json.point.x.toUint8Array());
224
- }
225
- /**
226
- * Computes the deterministic public key for a given secret key.
227
- * @param {Secp256k1SecretKey | KeyBytes} sk The Secp256k1SecretKey object or the secret key bytes
228
- * @returns {CompressedSecp256k1PublicKey} A new CompressedSecp256k1PublicKey object
229
- */
230
- static fromSecretKey(sk) {
231
- // If the secret key is a Secp256k1SecretKey object, get the raw bytes else use the bytes
232
- const bytes = sk instanceof Secp256k1SecretKey ? sk.bytes : sk;
233
- // Throw error if the secret key is not 32 bytes
234
- if (bytes.length !== 32) {
235
- throw new PublicKeyError('Invalid arg: must be 32 byte secret key', 'FROM_SECRET_KEY_ERROR');
236
- }
237
- // Compute the public key from the secret key
238
- const secret = sk instanceof Secp256k1SecretKey
239
- ? sk
240
- : new Secp256k1SecretKey(sk);
241
- // Return a new CompressedSecp256k1PublicKey object
242
- return secret.computePublicKey();
243
- }
244
220
  /**
245
221
  * Computes modular exponentiation: (base^exp) % mod.
246
222
  * Used for computing modular square roots.
@@ -291,10 +267,72 @@ export class CompressedSecp256k1PublicKey {
291
267
  // Compute y (do not enforce parity)
292
268
  const y = this.sqrtMod(ySquared, CURVE.p);
293
269
  // Convert x and y to Uint8Array
294
- const yBytes = Buffer.fromHex(y.toString(16).padStart(64, '0'));
270
+ const yBytes = Buffer.from(y.toString(16).padStart(64, '0'), 'hex');
295
271
  // Return 65-byte uncompressed public key: `0x04 || x || y`
296
272
  return new Uint8Array(Buffer.concat([Buffer.from([0x04]), Buffer.from(this.x), yBytes]));
297
273
  }
298
274
  ;
275
+ /**
276
+ * Static method to validate a public key.
277
+ * @param {Hex} pk The public key in hex (Uint8Array or string) format.
278
+ * @returns {boolean} True if the public key is valid, false otherwise.
279
+ */
280
+ static isValid(pk) {
281
+ try {
282
+ new CompressedSecp256k1PublicKey(pk);
283
+ return true;
284
+ }
285
+ catch {
286
+ return false;
287
+ }
288
+ }
289
+ /**
290
+ * Returns the point of the public key.
291
+ * @param {Hex} pk The public key in hex (Uint8Array or string) format.
292
+ * @returns {Point} The point of the public key.
293
+ * @throws {PublicKeyError} If the public key is not a valid hex string or byte array.
294
+ */
295
+ static point(pk) {
296
+ // If the public key is a hex string, convert it to a CompressedSecp256k1PublicKey object and return the point
297
+ if (typeof pk === 'string' && /^[0-9a-fA-F]+$/.test(pk)) {
298
+ const publicKey = new CompressedSecp256k1PublicKey(Buffer.from(pk, 'hex'));
299
+ return publicKey.point;
300
+ }
301
+ // If the public key is a byte array or ArrayBuffer, convert it to a CompressedSecp256k1PublicKey object and return the point
302
+ if (pk instanceof Uint8Array || ArrayBuffer.isView(pk)) {
303
+ const publicKey = new CompressedSecp256k1PublicKey(pk);
304
+ return publicKey.point;
305
+ }
306
+ // If the public key is neither a hex string nor a byte array, throw an error
307
+ throw new PublicKeyError('Invalid publicKey: must be a hex string or byte array', 'POINT_ERROR', { publicKey: pk });
308
+ }
309
+ /**
310
+ * Creates a CompressedSecp256k1PublicKey object from a JSON representation.
311
+ * @param {PublicKeyObject} json The JSON object to initialize the CompressedSecp256k1PublicKey.
312
+ * @returns {CompressedSecp256k1PublicKey} The initialized CompressedSecp256k1PublicKey object.
313
+ */
314
+ static fromJSON(json) {
315
+ json.point.x.unshift(json.point.parity);
316
+ return new CompressedSecp256k1PublicKey(Uint8Array.from(json.point.x));
317
+ }
318
+ /**
319
+ * Computes the deterministic public key for a given secret key.
320
+ * @param {Secp256k1SecretKey | KeyBytes} sk The Secp256k1SecretKey object or the secret key bytes
321
+ * @returns {CompressedSecp256k1PublicKey} A new CompressedSecp256k1PublicKey object
322
+ */
323
+ static fromSecretKey(sk) {
324
+ // If the secret key is a Secp256k1SecretKey object, get the raw bytes else use the bytes
325
+ const bytes = sk instanceof Secp256k1SecretKey ? sk.bytes : sk;
326
+ // Throw error if the secret key is not 32 bytes
327
+ if (bytes.length !== 32) {
328
+ throw new PublicKeyError('Invalid arg: must be 32 byte secret key', 'FROM_SECRET_KEY_ERROR');
329
+ }
330
+ // Compute the public key from the secret key
331
+ const secret = sk instanceof Secp256k1SecretKey
332
+ ? sk
333
+ : new Secp256k1SecretKey(sk);
334
+ // Return a new CompressedSecp256k1PublicKey object
335
+ return secret.computePublicKey();
336
+ }
299
337
  }
300
338
  //# sourceMappingURL=public.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/public.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../src/public.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { BIP340_SECRET_KEY_MULTIBASE_PREFIX, BIP340_SECRET_KEY_MULTIBASE_PREFIX_HASH, CURVE, SecretKeyError } from '@did-btcr2/common';
2
2
  import { sha256 } from '@noble/hashes/sha2';
3
- import { getRandomValues } from 'crypto';
3
+ import { getRandomValues, randomBytes } from 'crypto';
4
4
  import { base58btc } from 'multiformats/bases/base58';
5
5
  import * as tinysecp from 'tiny-secp256k1';
6
6
  import { SchnorrKeyPair } from './pair.js';
@@ -15,11 +15,11 @@ import { CompressedSecp256k1PublicKey } from './public.js';
15
15
  */
16
16
  export class Secp256k1SecretKey {
17
17
  /** @type {KeyBytes} The entropy for the secret key as a byte array */
18
- _bytes;
18
+ #bytes;
19
19
  /** @type {bigint} The entropy for the secret key as a bigint */
20
- _seed;
20
+ #seed;
21
21
  /** @type {string} The secret key as a secretKeyMultibase */
22
- _multibase;
22
+ #multibase;
23
23
  /**
24
24
  * Instantiates an instance of Secp256k1SecretKey.
25
25
  * @param {Entropy} entropy bytes (Uint8Array) or secret (bigint)
@@ -34,22 +34,22 @@ export class Secp256k1SecretKey {
34
34
  }
35
35
  // If bytes and bytes are not length 32
36
36
  if (isBytes && entropy.length === 32) {
37
- this._bytes = entropy;
38
- this._seed = Secp256k1SecretKey.toSecret(entropy);
37
+ this.#bytes = entropy;
38
+ this.#seed = Secp256k1SecretKey.toSecret(entropy);
39
39
  }
40
40
  // If secret and secret is not a valid bigint, throw error
41
41
  if (isSecret && !(entropy < 1n || entropy >= CURVE.n)) {
42
- this._bytes = Secp256k1SecretKey.toBytes(entropy);
43
- this._seed = entropy;
42
+ this.#bytes = Secp256k1SecretKey.toBytes(entropy);
43
+ this.#seed = entropy;
44
44
  }
45
- if (!this._bytes || this._bytes.length !== 32) {
45
+ if (!this.#bytes || this.#bytes.length !== 32) {
46
46
  throw new SecretKeyError('Invalid bytes: must be a valid 32-byte secret key', 'CONSTRUCTOR_ERROR');
47
47
  }
48
- if (!this._seed || (this._seed < 1n || this._seed >= CURVE.n)) {
48
+ if (!this.#seed || (this.#seed < 1n || this.#seed >= CURVE.n)) {
49
49
  throw new SecretKeyError('Invalid seed: must must be valid bigint', 'CONSTRUCTOR_ERROR');
50
50
  }
51
51
  // Set the secret key multibase
52
- this._multibase = this.encode();
52
+ this.#multibase = this.encode();
53
53
  }
54
54
  /**
55
55
  * Get the secret key entropy as a byte array.
@@ -57,7 +57,7 @@ export class Secp256k1SecretKey {
57
57
  */
58
58
  get bytes() {
59
59
  // Return a copy of the secret key bytes
60
- const bytes = new Uint8Array(this._bytes);
60
+ const bytes = new Uint8Array(this.#bytes);
61
61
  return bytes;
62
62
  }
63
63
  /**
@@ -66,7 +66,7 @@ export class Secp256k1SecretKey {
66
66
  */
67
67
  get seed() {
68
68
  // Memoize the secret and return
69
- const seed = BigInt(this._seed);
69
+ const seed = BigInt(this.#seed);
70
70
  return seed;
71
71
  }
72
72
  /**
@@ -82,7 +82,7 @@ export class Secp256k1SecretKey {
82
82
  * @returns {string} The secret key in base58btc multibase format
83
83
  */
84
84
  get multibase() {
85
- const multibase = this._multibase;
85
+ const multibase = this.#multibase;
86
86
  return multibase;
87
87
  }
88
88
  /**
@@ -91,16 +91,16 @@ export class Secp256k1SecretKey {
91
91
  */
92
92
  encode() {
93
93
  // Convert Uint8Array bytes to an Array
94
- const secretKeyBytes = this.bytes.toArray();
94
+ const secretKeyBytes = Array.from(this.bytes);
95
95
  if (secretKeyBytes.length !== 32) {
96
96
  throw new SecretKeyError('Invalid secret key: must be a valid 32-byte secret key', 'ENCODE_MULTIBASE_ERROR');
97
97
  }
98
98
  // Convert prefix to an array
99
- const mbaseBytes = BIP340_SECRET_KEY_MULTIBASE_PREFIX.toArray();
99
+ const mbaseBytes = Array.from(BIP340_SECRET_KEY_MULTIBASE_PREFIX);
100
100
  // Push the secret key bytes at the end of the prefix
101
101
  mbaseBytes.push(...secretKeyBytes);
102
102
  // Encode the bytes in base58btc format and return
103
- return base58btc.encode(mbaseBytes.toUint8Array());
103
+ return base58btc.encode(Uint8Array.from(mbaseBytes));
104
104
  }
105
105
  /**
106
106
  * Checks if this secret key is equal to another.
@@ -134,7 +134,7 @@ export class Secp256k1SecretKey {
134
134
  */
135
135
  json() {
136
136
  return {
137
- bytes: this.bytes.toArray(),
137
+ bytes: Array.from(this.bytes),
138
138
  seed: this.seed.toString(),
139
139
  hex: this.hex,
140
140
  };
@@ -160,6 +160,27 @@ export class Secp256k1SecretKey {
160
160
  // Return true if the computed public key equals the provided public key
161
161
  return true;
162
162
  }
163
+ /**
164
+ * Produce a signature over arbitrary data using schnorr or ecdsa.
165
+ * @param {MessageBytes} data Data to be signed.
166
+ * @param {CryptoOptions} opts Options for signing.
167
+ * @param {('ecdsa' | 'schnorr')} opts.scheme The signature scheme to use. Default is 'schnorr'.
168
+ * @returns {SignatureBytes} Signature byte array.
169
+ * @throws {SecretKeyError} if no private key is provided.
170
+ */
171
+ sign(data, opts) {
172
+ // Set default options if not provided
173
+ opts ??= { scheme: 'schnorr' };
174
+ // Sign ecdsa and return
175
+ if (opts.scheme === 'ecdsa') {
176
+ return tinysecp.sign(data, this.bytes);
177
+ }
178
+ // Sign schnorr and return
179
+ if (opts.scheme === 'schnorr') {
180
+ return tinysecp.signSchnorr(data, this.bytes, randomBytes(32));
181
+ }
182
+ throw new SecretKeyError(`Invalid scheme: ${opts.scheme}.`, 'SIGN_ERROR', opts);
183
+ }
163
184
  /**
164
185
  * Decodes the multibase string to the 34-byte secret key (2 byte prefix + 32 byte key).
165
186
  * @param {string} multibase The multibase string to decode