@did-btcr2/keypair 0.5.1 → 0.7.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/README.md CHANGED
@@ -1,4 +1,4 @@
1
1
  # Keypair
2
2
 
3
3
  TypeScript implementation of secp256k1 public/private key pairs with [BIP340](https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki) schnorr signatures.
4
- Designed for use by [@did-btc1/cryptosuite](../cryptosuite/README.md) and [@did-btc1/method](../method/README.md).
4
+ Designed for use by [@did-btcr2/cryptosuite](../cryptosuite/README.md) and [@did-btcr2/method](../method/README.md).
package/dist/cjs/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './pair.js';
2
2
  export * from './secret.js';
3
3
  export * from './public.js';
4
+ export * from './types.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
package/dist/cjs/pair.js CHANGED
@@ -1,15 +1,15 @@
1
1
  import { KeyPairError } from '@did-btcr2/common';
2
- import { PublicKey } from './public.js';
3
- import { SecretKey } from './secret.js';
2
+ import { CompressedSecp256k1PublicKey } from './public.js';
3
+ import { Secp256k1SecretKey } from './secret.js';
4
4
  /**
5
- * Encapsulates a PublicKey and a SecretKey object as a single Keys object.
5
+ * Encapsulates a CompressedSecp256k1PublicKey and a Secp256k1SecretKey object as a single SchnorrKeyPair object.
6
6
  * @class SchnorrKeyPair
7
7
  * @type {SchnorrKeyPair}
8
8
  */
9
9
  export class SchnorrKeyPair {
10
- /** @type {SecretKey} The secret key object */
10
+ /** @type {Secp256k1SecretKey} The secret key object */
11
11
  _secretKey;
12
- /** @type {PublicKey} The public key object */ ;
12
+ /** @type {CompressedSecp256k1PublicKey} The public key object */ ;
13
13
  _publicKey;
14
14
  /** @type {string} The public key in multibase format */
15
15
  _publicKeyMultibase;
@@ -17,37 +17,41 @@ export class SchnorrKeyPair {
17
17
  _secretKeyMultibase;
18
18
  /**
19
19
  * Creates an instance of Keys. Must provide a at least a secret key.
20
- * Can optionally provide both a private and public key, but must be a valid pair.
21
- * @param {SecretKey} secretKey The secret key object
20
+ * Can optionally provide both a secret and public key, but must be a valid pair.
21
+ * @param {SchnorrKeyPairParams} params The parameters to initialize the Keys object.
22
+ * @param {CompressedSecp256k1PublicKey | KeyBytes} params.publicKey The public key object or bytes
23
+ * @param {Secp256k1SecretKey | KeyBytes} [params.secret] The secret key object or bytes
24
+ * @throws {KeyPairError} If neither a public key or secret key is provided.
25
+ * @throws {KeyPairError} If the public key is not a valid pair with the secret key.
22
26
  */
23
- constructor({ secretKey, publicKey } = {}) {
27
+ constructor(params = {}) {
24
28
  // If no secret key or public key, throw an error
25
- if (!publicKey && !secretKey) {
29
+ if (!params.publicKey && !params.secretKey) {
26
30
  throw new KeyPairError('Argument missing: must at least provide a publicKey', 'CONSTRUCTOR_ERROR');
27
31
  }
28
- // Set the secret key
29
- if (secretKey instanceof Uint8Array) {
30
- this._secretKey = new SecretKey(secretKey);
32
+ // Set the secretKey
33
+ if (params.secretKey instanceof Uint8Array) {
34
+ this._secretKey = new Secp256k1SecretKey(params.secretKey);
31
35
  }
32
- else if (secretKey instanceof SecretKey) {
33
- this._secretKey = secretKey;
36
+ else if (params.secretKey instanceof Secp256k1SecretKey) {
37
+ this._secretKey = params.secretKey;
34
38
  }
35
- // Set the public key
36
- if (publicKey instanceof PublicKey) {
37
- this._publicKey = publicKey;
39
+ // Set the publicKey
40
+ if (params.publicKey instanceof CompressedSecp256k1PublicKey) {
41
+ this._publicKey = params.publicKey;
38
42
  }
39
- else if (publicKey instanceof Uint8Array) {
40
- this._publicKey = new PublicKey(publicKey);
43
+ else if (params.publicKey instanceof Uint8Array) {
44
+ this._publicKey = new CompressedSecp256k1PublicKey(params.publicKey);
41
45
  }
42
46
  else {
43
- this._publicKey = new PublicKey(this._secretKey.computePublicKey());
47
+ this._publicKey = this._secretKey.computePublicKey();
44
48
  }
45
- this._publicKeyMultibase = this._publicKey.multibase.address;
49
+ this._publicKeyMultibase = this._publicKey.multibase.encoded;
46
50
  this._secretKeyMultibase = this._secretKey ? this._secretKey.multibase : '';
47
51
  }
48
52
  /**
49
- * Get the SecretKey.
50
- * @returns {SecretKey} The SecretKey object
53
+ * Get the Secp256k1SecretKey.
54
+ * @returns {Secp256k1SecretKey} The Secp256k1SecretKey object
51
55
  * @throws {KeyPairError} If the secret key is not available
52
56
  */
53
57
  get secretKey() {
@@ -60,34 +64,39 @@ export class SchnorrKeyPair {
60
64
  throw new KeyPairError('Secret key is not valid', 'SECRET_KEY_ERROR');
61
65
  }
62
66
  // Return a copy of the secret key
63
- const secretKey = this._secretKey;
64
- return secretKey;
67
+ const secret = this._secretKey;
68
+ return secret;
65
69
  }
66
70
  /**
67
- * Set the PublicKey.
68
- * @param {PublicKey} publicKey The PublicKey object
71
+ * Set the CompressedSecp256k1PublicKey.
72
+ * @param {CompressedSecp256k1PublicKey} publicKey The CompressedSecp256k1PublicKey object
69
73
  * @throws {KeyPairError} If the public key is not a valid pair with the secret key.
70
74
  */
71
75
  set publicKey(publicKey) {
72
76
  // If the public key is not a valid pair with the secret key, throw an error
73
- if (this.secretKey && !this.secretKey.isValidPair(publicKey)) {
74
- throw new KeyPairError('Public key is not a valid pair with the secret key', 'PUBLIC_KEY_ERROR');
77
+ if (this.secretKey) {
78
+ if (!this.secretKey.hasValidPublicKey()) {
79
+ throw new KeyPairError('Secret key is not valid', 'SECRET_KEY_ERROR');
80
+ }
81
+ const cPk = this.secretKey.computePublicKey();
82
+ if (!publicKey.equals(cPk))
83
+ throw new KeyPairError('Public key is not a valid pair with the secret key', 'PUBLIC_KEY_ERROR');
75
84
  }
76
85
  this._publicKey = publicKey;
77
- this._publicKeyMultibase = publicKey.multibase.address;
86
+ this._publicKeyMultibase = publicKey.multibase.encoded;
78
87
  this._secretKeyMultibase = this._secretKey ? this._secretKey.multibase : '';
79
88
  }
80
89
  /**
81
- * Get the PublicKey.
82
- * @returns {PublicKey} The PublicKey object
90
+ * Get the CompressedSecp256k1PublicKey.
91
+ * @returns {CompressedSecp256k1PublicKey} The CompressedSecp256k1PublicKey object
83
92
  */
84
93
  get publicKey() {
85
94
  const publicKey = this._publicKey;
86
95
  return publicKey;
87
96
  }
88
97
  /**
89
- * Get the Keys as a raw key pair.
90
- * @returns {RawKeyPair} The Keys as a raw key pair
98
+ * Get the raw bytes of each key in the SchnorrKeyPair.
99
+ * @returns {RawSchnorrKeyPair} JSON object with the SchnorrKeyPair raw bytes.
91
100
  */
92
101
  get raw() {
93
102
  return {
@@ -97,7 +106,7 @@ export class SchnorrKeyPair {
97
106
  }
98
107
  /**
99
108
  * Get the Keys in multibase format.
100
- * @returns {MultibaseKeys} The SecretKey in multibase format
109
+ * @returns {MultibaseKeys} The Secp256k1SecretKey in multibase format
101
110
  */
102
111
  get multibase() {
103
112
  return {
@@ -121,42 +130,44 @@ export class SchnorrKeyPair {
121
130
  * @returns {SchnorrKeyPair} The initialized Keys object.
122
131
  */
123
132
  static fromJSON(keys) {
124
- const secretKey = SecretKey.fromJSON(keys.secretKey);
125
- const publicKey = PublicKey.fromJSON(keys.publicKey);
126
- return new SchnorrKeyPair({ secretKey, publicKey });
133
+ return new SchnorrKeyPair({
134
+ secretKey: Secp256k1SecretKey.fromJSON(keys.secretKey),
135
+ publicKey: CompressedSecp256k1PublicKey.fromJSON(keys.publicKey)
136
+ });
127
137
  }
128
138
  /**
129
- * Static method creates a new SchnorrKeyPair from a SecretKey object or secret key bytes.
130
- * @param {SecretKey | KeyBytes} data The secret key bytes
139
+ * Static method creates a new SchnorrKeyPair from a Secp256k1SecretKey object or secret key bytes.
140
+ * @param {Secp256k1SecretKey | KeyBytes} data The secret key bytes
131
141
  * @returns {SchnorrKeyPair} A new SchnorrKeyPair object
132
142
  */
133
143
  static fromPrivateKey(data) {
134
- // If the secret key is a SecretKey object, get the raw bytes else use the bytes
135
- const bytes = data instanceof SecretKey ? data.bytes : data;
144
+ // If the secret key is a Secp256k1SecretKey object, get the raw bytes else use the bytes
145
+ const bytes = data instanceof Secp256k1SecretKey ? data.bytes : data;
136
146
  // Throw error if the secret key is not 32 bytes
137
147
  if (bytes.length !== 32) {
138
148
  throw new KeyPairError('Invalid arg: must be 32 byte secret key', 'FROM_PRIVATE_KEY_ERROR');
139
149
  }
140
- // If pk Uint8Array, construct SecretKey object else use the object
141
- const secretKey = data instanceof Uint8Array ? new SecretKey(data) : data;
142
- // Compute the public key from the secret key
143
- const publicKey = secretKey.computePublicKey();
150
+ // If pk Uint8Array, construct Secp256k1SecretKey object else use the object
151
+ const secret = data instanceof Uint8Array ? new Secp256k1SecretKey(data) : data;
144
152
  // Return a new Keys object
145
- return new SchnorrKeyPair({ secretKey, publicKey });
153
+ return new SchnorrKeyPair({
154
+ secretKey: data instanceof Uint8Array ? new Secp256k1SecretKey(data) : data,
155
+ publicKey: secret.computePublicKey()
156
+ });
146
157
  }
147
158
  /**
148
- * Static method creates a new Keys (SecretKey/PublicKey) bigint secret.
149
- * @param {bigint} secret The secret key secret
150
- * @returns {Keys} A new Keys object
159
+ * Static method creates a new Keys (Secp256k1SecretKey/CompressedSecp256k1PublicKey) from bigint entropy.
160
+ * @param {bigint} entropy The entropy in bigint form
161
+ * @returns {SchnorrKeyPair} A new SchnorrKeyPair object
151
162
  */
152
- static fromSecret(secret) {
153
- const secretKey = SecretKey.fromSecret(secret);
163
+ static fromEntropy(entropy) {
164
+ const secretKey = Secp256k1SecretKey.fromEntropy(entropy);
154
165
  const publicKey = secretKey.computePublicKey();
155
166
  return new SchnorrKeyPair({ secretKey, publicKey });
156
167
  }
157
168
  /**
158
169
  * Converts key bytes to a hex string.
159
- * @param {KeyBytes} keyBytes The key bytes (private or public).
170
+ * @param {KeyBytes} keyBytes The key bytes (secret or public).
160
171
  * @returns {Hex} The key bytes as a hex string.
161
172
  */
162
173
  static toHex(keyBytes) {
@@ -164,21 +175,21 @@ export class SchnorrKeyPair {
164
175
  }
165
176
  /**
166
177
  * Compares two Keys objects for equality.
167
- * @param {SchnorrKeyPair} keys The main keys.
168
- * @param {SchnorrKeyPair} otherKeys The other keys to compare.
178
+ * @param {SchnorrKeyPair} kp The main keys.
179
+ * @param {SchnorrKeyPair} otherKp The other keys to compare.
169
180
  * @returns {boolean} True if the public key and secret key are equal, false otherwise.
170
181
  */
171
- static equals(keys, otherKeys) {
182
+ static equals(kp, otherKp) {
172
183
  // Deconstruct the public keys from the key pairs
173
- const pk = keys.publicKey;
174
- const otherPk = otherKeys.publicKey;
184
+ const pk = kp.publicKey;
185
+ const otherPk = otherKp.publicKey;
175
186
  // If publicKeys present, use to compare as hex strings.
176
187
  if (pk && otherPk) {
177
188
  return pk.hex === otherPk.hex;
178
189
  }
179
- // Deconstruct the private keys from the key pairs
180
- const sk = keys.secretKey;
181
- const otherSk = otherKeys.secretKey;
190
+ // Deconstruct the secret keys from the key pairs
191
+ const sk = kp.secretKey;
192
+ const otherSk = otherKp.secretKey;
182
193
  if (sk && otherSk) {
183
194
  // Get the public key hex strings for both key pair publicKeys
184
195
  return sk.hex === otherSk.hex;
@@ -187,13 +198,13 @@ export class SchnorrKeyPair {
187
198
  }
188
199
  /**
189
200
  * Static method to generate a new random SchnorrKeyPair instance.
190
- * @returns {SchnorrKeyPair} A new SecretKey object.
201
+ * @returns {SchnorrKeyPair} A new Secp256k1SecretKey object.
191
202
  */
192
203
  static generate() {
193
204
  // Generate random secret key bytes
194
- const skBytes = SecretKey.random();
195
- // Construct a new SecretKey object
196
- const secretKey = new SecretKey(skBytes);
205
+ const sk = Secp256k1SecretKey.random();
206
+ // Construct a new Secp256k1SecretKey object
207
+ const secretKey = new Secp256k1SecretKey(sk);
197
208
  // Compute the public key from the secret key
198
209
  const publicKey = secretKey.computePublicKey();
199
210
  // Return a new Keys object
@@ -1 +1 @@
1
- {"version":3,"file":"pair.js","sourceRoot":"","sources":["../../src/pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAEb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAyCxC;;;;GAIG;AACH,MAAM,OAAO,cAAc;IACzB,8CAA8C;IACtC,UAAU,CAAa;IAE/B,8CAA8C,CAAA,CAAC;IACvC,UAAU,CAAY;IAE9B,wDAAwD;IAChD,mBAAmB,CAAS;IAEpC,wDAAwD;IAChD,mBAAmB,CAAS;IAEpC;;;;OAIG;IACH,YAAY,EAAE,SAAS,EAAE,SAAS,KAAgB,EAAE;QAClD,iDAAiD;QACjD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,YAAY,CAAC,qDAAqD,EAAE,mBAAmB,CAAC,CAAC;QACrG,CAAC;QAED,qBAAqB;QACrB,IAAG,SAAS,YAAY,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,SAAS,YAAY,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC9B,CAAC;QAED,qBAAqB;QACrB,IAAG,SAAS,YAAY,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC9B,CAAC;aAAM,IAAI,SAAS,YAAY,UAAU,EAAE,CAAC;YAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,UAAW,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC;QAC7D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,CAAC;IAED;;;;OAIG;IACH,IAAI,SAAS;QACX,qDAAqD;QACrD,IAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,YAAY,CAAC,0BAA0B,EAAE,kBAAkB,CAAC,CAAC;QACzE,CAAC;QACD,iDAAiD;QACjD,IAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9B,MAAM,IAAI,YAAY,CAAC,yBAAyB,EAAE,kBAAkB,CAAC,CAAC;QACxE,CAAC;QACD,kCAAkC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,IAAI,SAAS,CAAC,SAAoB;QAChC,4EAA4E;QAC5E,IAAG,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,YAAY,CAAC,oDAAoD,EAAE,kBAAkB,CAAC,CAAC;QACnG,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC;QACvD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,CAAC;IAED;;;OAGG;IACH,IAAI,SAAS;QACX,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,IAAI,GAAG;QACL,OAAO;YACL,MAAM,EAAG,IAAI,CAAC,SAAS,CAAC,CAAC;YACzB,MAAM,EAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SAC3D,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI,SAAS;QACX,OAAO;YACL,kBAAkB,EAAI,IAAI,CAAC,mBAAmB;YAC9C,kBAAkB,EAAG,IAAI,CAAC,mBAAmB;SAC9C,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,IAAI;QACT,OAAO;YACL,SAAS,EAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YACjC,SAAS,EAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;SAClC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,QAAQ,CAAC,IAA0B;QAC/C,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,OAAO,IAAI,cAAc,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,cAAc,CAAC,IAA0B;QAErD,gFAAgF;QAChF,MAAM,KAAK,GAAG,IAAI,YAAY,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAE5D,gDAAgD;QAChD,IAAG,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACvB,MAAM,IAAI,YAAY,CAAC,yCAAyC,EAAE,wBAAwB,CAAC,CAAC;QAC9F,CAAC;QAED,mEAAmE;QACnE,MAAM,SAAS,GAAG,IAAI,YAAY,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE1E,6CAA6C;QAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAE/C,2BAA2B;QAC3B,OAAO,IAAI,cAAc,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,UAAU,CAAC,MAAc;QACrC,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAC/C,OAAO,IAAI,cAAc,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,KAAK,CAAC,QAAkB;QACpC,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,MAAM,CAAC,IAAoB,EAAE,SAAyB;QAClE,iDAAiD;QACjD,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC;QAEpC,wDAAwD;QACxD,IAAG,EAAE,IAAI,OAAO,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC;QAChC,CAAC;QAED,kDAAkD;QAClD,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC;QACpC,IAAG,EAAE,IAAI,OAAO,EAAE,CAAC;YACjB,8DAA8D;YAC9D,OAAO,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC;QAChC,CAAC;QAED,MAAM,IAAI,YAAY,CAAC,oCAAoC,EAAE,sBAAsB,CAAC,CAAC;IACvF,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,QAAQ;QACpB,mCAAmC;QACnC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QAEnC,mCAAmC;QACnC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;QAEzC,6CAA6C;QAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAE/C,2BAA2B;QAC3B,OAAO,IAAI,cAAc,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IACtD,CAAC;CACF"}
1
+ {"version":3,"file":"pair.js","sourceRoot":"","sources":["../../src/pair.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,26 @@
1
1
  import { BIP340_PUBLIC_KEY_MULTIBASE_PREFIX, BIP340_PUBLIC_KEY_MULTIBASE_PREFIX_HASH, CURVE, PublicKeyError } from '@did-btcr2/common';
2
2
  import { sha256 } from '@noble/hashes/sha2';
3
3
  import { base58btc } from 'multiformats/bases/base58';
4
- import { SecretKey } from './secret.js';
4
+ import * as tinysecp from 'tiny-secp256k1';
5
+ import { Secp256k1SecretKey } from './secret.js';
5
6
  /**
6
7
  * Encapsulates a secp256k1 public key compliant to BIP-340 BIP schnorr signature scheme.
7
8
  * Provides get methods for different formats (compressed, x-only, multibase).
8
9
  * Provides helpers methods for comparison and serialization.
9
- * @class PublicKey
10
- * @type {PublicKey}
10
+ * @class CompressedSecp256k1PublicKey
11
+ * @type {CompressedSecp256k1PublicKey}
11
12
  */
12
- export class PublicKey {
13
+ export class CompressedSecp256k1PublicKey {
13
14
  /** @type {KeyBytes} The public key bytes */
14
15
  _bytes;
15
16
  /** @type {MultibaseObject} The public key as a MultibaseObject */
16
17
  _multibase = {
17
18
  prefix: BIP340_PUBLIC_KEY_MULTIBASE_PREFIX,
18
19
  key: [],
19
- address: ''
20
+ encoded: ''
20
21
  };
21
22
  /**
22
- * Creates a PublicKey instance.
23
+ * Creates a CompressedSecp256k1PublicKey instance.
23
24
  * @param {KeyBytes} bytes The public key byte array.
24
25
  * @throws {PublicKeyError} if the byte length is not 32 (x-only) or 33 (compressed)
25
26
  */
@@ -28,10 +29,14 @@ export class PublicKey {
28
29
  if (bytes.length !== 33) {
29
30
  throw new PublicKeyError('Invalid argument: byte length must be 33 (compressed)', 'CONSTRUCTOR_ERROR', { bytes });
30
31
  }
32
+ // 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 });
35
+ }
31
36
  // Set the bytes
32
37
  this._bytes = bytes;
33
38
  // Set multibase
34
- this._multibase.address = this.encode();
39
+ this._multibase.encoded = this.encode();
35
40
  this._multibase.key = [...this._multibase.prefix, ...this.compressed];
36
41
  }
37
42
  /**
@@ -52,13 +57,30 @@ export class PublicKey {
52
57
  return uncompressed;
53
58
  }
54
59
  /**
55
- * Get the parity byte of the public key.
56
- * @returns {number} The parity byte of the public key.
60
+ * X-only (32-byte) view of the public key per BIP-340.
61
+ */
62
+ get xOnly() {
63
+ return this._bytes.slice(1);
64
+ }
65
+ /**
66
+ * Parity of the SEC compressed public key.
67
+ * @returns {0x02 | 0x03} The parity byte (0x02 if even, 0x03 if odd).
68
+ * @throws {PublicKeyError} If the parity byte is not 0x02 or 0x03.
57
69
  */
58
70
  get parity() {
59
- const parity = this.compressed[0];
71
+ const parity = this._bytes[0];
72
+ if (![0x02, 0x03].includes(parity)) {
73
+ throw new PublicKeyError('Invalid state: parity byte must be 2 or 3', 'PARITY_ERROR', { parity });
74
+ }
60
75
  return parity;
61
76
  }
77
+ /**
78
+ * Whether the SEC compressed public key has even Y.
79
+ * @returns {boolean} True if the public key has even Y.
80
+ */
81
+ get isEven() {
82
+ return this._bytes[0] === 0x02;
83
+ }
62
84
  /**
63
85
  * Get the x-coordinate of the public key.
64
86
  * @returns {Uint8Array} The 32-byte x-coordinate of the public key.
@@ -101,6 +123,13 @@ export class PublicKey {
101
123
  y: this.y
102
124
  };
103
125
  }
126
+ /**
127
+ * Returns the BIP-340 (x-only) representation of this key.
128
+ * @returns {KeyBytes} The BIP-340 (x-only) representation of the public key.
129
+ */
130
+ bip340() {
131
+ return this.xOnly;
132
+ }
104
133
  /**
105
134
  * Returns the point of the public key.
106
135
  * @param {Hex} pk The public key in hex (Uint8Array or string) format.
@@ -108,14 +137,14 @@ export class PublicKey {
108
137
  * @throws {PublicKeyError} If the public key is not a valid hex string or byte array.
109
138
  */
110
139
  static point(pk) {
111
- // If the public key is a hex string, convert it to a PublicKey object and return the point
140
+ // If the public key is a hex string, convert it to a CompressedSecp256k1PublicKey object and return the point
112
141
  if (typeof pk === 'string' && /^[0-9a-fA-F]+$/.test(pk)) {
113
- const publicKey = new PublicKey(Buffer.fromHex(pk));
142
+ const publicKey = new CompressedSecp256k1PublicKey(Buffer.fromHex(pk));
114
143
  return publicKey.point;
115
144
  }
116
- // If the public key is a byte array or ArrayBuffer, convert it to a PublicKey object and return the point
145
+ // If the public key is a byte array or ArrayBuffer, convert it to a CompressedSecp256k1PublicKey object and return the point
117
146
  if (pk instanceof Uint8Array || ArrayBuffer.isView(pk)) {
118
- const publicKey = new PublicKey(pk);
147
+ const publicKey = new CompressedSecp256k1PublicKey(pk);
119
148
  return publicKey.point;
120
149
  }
121
150
  // If the public key is neither a hex string nor a byte array, throw an error
@@ -127,7 +156,7 @@ export class PublicKey {
127
156
  */
128
157
  decode() {
129
158
  // Decode the public key multibase string
130
- const decoded = base58btc.decode(this.multibase.address);
159
+ const decoded = base58btc.decode(this.multibase.encoded);
131
160
  // If the public key bytes are not 35 bytes, throw an error
132
161
  if (decoded.length !== 35) {
133
162
  throw new PublicKeyError('Invalid argument: must be 35 byte publicKeyMultibase', 'DECODE_MULTIBASE_ERROR');
@@ -163,15 +192,15 @@ export class PublicKey {
163
192
  }
164
193
  /**
165
194
  * Compares this public key to another public key.
166
- * @param {PublicKey} other The other public key to compare
195
+ * @param {CompressedSecp256k1PublicKey} other The other public key to compare
167
196
  * @returns {boolean} True if the public keys are equal, false otherwise.
168
197
  */
169
198
  equals(other) {
170
199
  return this.hex === other.hex;
171
200
  }
172
201
  /**
173
- * JSON representation of a PublicKey object.
174
- * @returns {PublicKeyObject} The PublicKey as a JSON object.
202
+ * JSON representation of a CompressedSecp256k1PublicKey object.
203
+ * @returns {PublicKeyObject} The CompressedSecp256k1PublicKey as a JSON object.
175
204
  */
176
205
  json() {
177
206
  return {
@@ -185,30 +214,32 @@ export class PublicKey {
185
214
  };
186
215
  }
187
216
  /**
188
- * Creates a PublicKey object from a JSON representation.
189
- * @param {PublicKeyObject} json The JSON object to initialize the PublicKey.
190
- * @returns {PublicKey} The initialized PublicKey object.
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.
191
220
  */
192
221
  static fromJSON(json) {
193
222
  json.x.unshift(json.parity);
194
- return new PublicKey(json.x.toUint8Array());
223
+ return new CompressedSecp256k1PublicKey(json.x.toUint8Array());
195
224
  }
196
225
  /**
197
- * Computes the deterministic public key for a given private key.
198
- * @param {PrivateKey | KeyBytes} sk The PrivateKey object or the private key bytes
199
- * @returns {PublicKey} A new PublicKey object
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
200
229
  */
201
230
  static fromSecretKey(sk) {
202
- // If the private key is a PrivateKey object, get the raw bytes else use the bytes
203
- const bytes = sk instanceof SecretKey ? sk.bytes : sk;
204
- // Throw error if the private key is not 32 bytes
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
205
234
  if (bytes.length !== 32) {
206
- throw new PublicKeyError('Invalid arg: must be 32 byte private key', 'FROM_PRIVATE_KEY_ERROR');
235
+ throw new PublicKeyError('Invalid arg: must be 32 byte secret key', 'FROM_SECRET_KEY_ERROR');
207
236
  }
208
- // Compute the public key from the private key
209
- const privateKey = sk instanceof SecretKey ? sk : new SecretKey(sk);
210
- // Return a new PublicKey object
211
- return new PublicKey(privateKey.computePublicKey());
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();
212
243
  }
213
244
  /**
214
245
  * Computes modular exponentiation: (base^exp) % mod.
@@ -265,19 +296,5 @@ export class PublicKey {
265
296
  return new Uint8Array(Buffer.concat([Buffer.from([0x04]), Buffer.from(this.x), yBytes]));
266
297
  }
267
298
  ;
268
- /**
269
- * Static version of liftX method.
270
- * @param {KeyBytes} x The 32-byte x-coordinate to lift.
271
- * @returns {Uint8Array} The 65-byte uncompressed public key (0x04, x, y).
272
- */
273
- static xOnly(x) {
274
- // Ensure x-coordinate is 32 bytes
275
- if (x.length !== 32) {
276
- throw new PublicKeyError('Invalid argument: x-coordinate length must be 32 bytes', 'LIFT_X_ERROR');
277
- }
278
- // Create a PublicKey instance and lift the x-coordinate
279
- const publicKey = new PublicKey(x);
280
- return publicKey.x;
281
- }
282
299
  }
283
300
  //# 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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"}