ox 0.14.9 → 0.14.10
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/CHANGELOG.md +6 -0
- package/_cjs/core/Ed25519.js +18 -0
- package/_cjs/core/Ed25519.js.map +1 -1
- package/_cjs/version.js +1 -1
- package/_cjs/version.js.map +1 -1
- package/_esm/core/Ed25519.js +53 -1
- package/_esm/core/Ed25519.js.map +1 -1
- package/_esm/version.js +1 -1
- package/_esm/version.js.map +1 -1
- package/_types/core/Ed25519.d.ts +64 -0
- package/_types/core/Ed25519.d.ts.map +1 -1
- package/_types/version.d.ts +1 -1
- package/_types/version.d.ts.map +1 -1
- package/core/Ed25519.ts +103 -1
- package/package.json +1 -1
- package/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# ox
|
|
2
2
|
|
|
3
|
+
## 0.14.10
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#204](https://github.com/wevm/ox/pull/204) [`9aec6a9`](https://github.com/wevm/ox/commit/9aec6a94ba294c38ec937dc8522582e2f0a40ddc) Thanks [@jxom](https://github.com/jxom)! - Added `Ed25519.toX25519PublicKey` and `Ed25519.toX25519PrivateKey` for converting Ed25519 keys to X25519 keys. Useful for performing X25519 Diffie-Hellman key exchange using an Ed25519 signing key pair.
|
|
8
|
+
|
|
3
9
|
## 0.14.9
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
package/_cjs/core/Ed25519.js
CHANGED
|
@@ -6,6 +6,8 @@ exports.getPublicKey = getPublicKey;
|
|
|
6
6
|
exports.randomPrivateKey = randomPrivateKey;
|
|
7
7
|
exports.sign = sign;
|
|
8
8
|
exports.verify = verify;
|
|
9
|
+
exports.toX25519PublicKey = toX25519PublicKey;
|
|
10
|
+
exports.toX25519PrivateKey = toX25519PrivateKey;
|
|
9
11
|
const ed25519_1 = require("@noble/curves/ed25519");
|
|
10
12
|
const Bytes = require("./Bytes.js");
|
|
11
13
|
const Hex = require("./Hex.js");
|
|
@@ -50,4 +52,20 @@ function verify(options) {
|
|
|
50
52
|
const signatureBytes = Bytes.from(signature);
|
|
51
53
|
return ed25519_1.ed25519.verify(signatureBytes, payloadBytes, publicKeyBytes);
|
|
52
54
|
}
|
|
55
|
+
function toX25519PublicKey(options) {
|
|
56
|
+
const { as = 'Hex', publicKey } = options;
|
|
57
|
+
const publicKeyBytes = Bytes.from(publicKey);
|
|
58
|
+
const x25519PublicKeyBytes = (0, ed25519_1.edwardsToMontgomeryPub)(publicKeyBytes);
|
|
59
|
+
if (as === 'Hex')
|
|
60
|
+
return Hex.fromBytes(x25519PublicKeyBytes);
|
|
61
|
+
return x25519PublicKeyBytes;
|
|
62
|
+
}
|
|
63
|
+
function toX25519PrivateKey(options) {
|
|
64
|
+
const { as = 'Hex', privateKey } = options;
|
|
65
|
+
const privateKeyBytes = Bytes.from(privateKey);
|
|
66
|
+
const x25519PrivateKeyBytes = (0, ed25519_1.edwardsToMontgomeryPriv)(privateKeyBytes);
|
|
67
|
+
if (as === 'Hex')
|
|
68
|
+
return Hex.fromBytes(x25519PrivateKeyBytes);
|
|
69
|
+
return x25519PrivateKeyBytes;
|
|
70
|
+
}
|
|
53
71
|
//# sourceMappingURL=Ed25519.js.map
|
package/_cjs/core/Ed25519.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ed25519.js","sourceRoot":"","sources":["../../core/Ed25519.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Ed25519.js","sourceRoot":"","sources":["../../core/Ed25519.ts"],"names":[],"mappings":"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"}
|
package/_cjs/version.js
CHANGED
package/_cjs/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../version.ts"],"names":[],"mappings":";;;AACa,QAAA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../version.ts"],"names":[],"mappings":";;;AACa,QAAA,OAAO,GAAG,SAAS,CAAA"}
|
package/_esm/core/Ed25519.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ed25519 } from '@noble/curves/ed25519';
|
|
1
|
+
import { ed25519, edwardsToMontgomeryPriv, edwardsToMontgomeryPub, } from '@noble/curves/ed25519';
|
|
2
2
|
import * as Bytes from './Bytes.js';
|
|
3
3
|
import * as Hex from './Hex.js';
|
|
4
4
|
/** Re-export of noble/curves Ed25519 utilities. */
|
|
@@ -118,4 +118,56 @@ export function verify(options) {
|
|
|
118
118
|
const signatureBytes = Bytes.from(signature);
|
|
119
119
|
return ed25519.verify(signatureBytes, payloadBytes, publicKeyBytes);
|
|
120
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Converts an Ed25519 public key to an X25519 public key.
|
|
123
|
+
*
|
|
124
|
+
* This is useful for performing X25519 Diffie-Hellman key exchange
|
|
125
|
+
* using an Ed25519 signing key pair.
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```ts twoslash
|
|
129
|
+
* import { Ed25519, X25519 } from 'ox'
|
|
130
|
+
*
|
|
131
|
+
* const { privateKey, publicKey } = Ed25519.createKeyPair()
|
|
132
|
+
*
|
|
133
|
+
* const x25519PublicKey = Ed25519.toX25519PublicKey({ publicKey })
|
|
134
|
+
* ```
|
|
135
|
+
*
|
|
136
|
+
* @param options - The options.
|
|
137
|
+
* @returns The X25519 public key.
|
|
138
|
+
*/
|
|
139
|
+
export function toX25519PublicKey(options) {
|
|
140
|
+
const { as = 'Hex', publicKey } = options;
|
|
141
|
+
const publicKeyBytes = Bytes.from(publicKey);
|
|
142
|
+
const x25519PublicKeyBytes = edwardsToMontgomeryPub(publicKeyBytes);
|
|
143
|
+
if (as === 'Hex')
|
|
144
|
+
return Hex.fromBytes(x25519PublicKeyBytes);
|
|
145
|
+
return x25519PublicKeyBytes;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Converts an Ed25519 private key to an X25519 private key.
|
|
149
|
+
*
|
|
150
|
+
* This is useful for performing X25519 Diffie-Hellman key exchange
|
|
151
|
+
* using an Ed25519 signing key pair.
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ```ts twoslash
|
|
155
|
+
* import { Ed25519, X25519 } from 'ox'
|
|
156
|
+
*
|
|
157
|
+
* const { privateKey, publicKey } = Ed25519.createKeyPair()
|
|
158
|
+
*
|
|
159
|
+
* const x25519PrivateKey = Ed25519.toX25519PrivateKey({ privateKey })
|
|
160
|
+
* ```
|
|
161
|
+
*
|
|
162
|
+
* @param options - The options.
|
|
163
|
+
* @returns The X25519 private key.
|
|
164
|
+
*/
|
|
165
|
+
export function toX25519PrivateKey(options) {
|
|
166
|
+
const { as = 'Hex', privateKey } = options;
|
|
167
|
+
const privateKeyBytes = Bytes.from(privateKey);
|
|
168
|
+
const x25519PrivateKeyBytes = edwardsToMontgomeryPriv(privateKeyBytes);
|
|
169
|
+
if (as === 'Hex')
|
|
170
|
+
return Hex.fromBytes(x25519PrivateKeyBytes);
|
|
171
|
+
return x25519PrivateKeyBytes;
|
|
172
|
+
}
|
|
121
173
|
//# sourceMappingURL=Ed25519.js.map
|
package/_esm/core/Ed25519.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ed25519.js","sourceRoot":"","sources":["../../core/Ed25519.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Ed25519.js","sourceRoot":"","sources":["../../core/Ed25519.ts"],"names":[],"mappings":"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"}
|
package/_esm/version.js
CHANGED
package/_esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../version.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../version.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAA"}
|
package/_types/core/Ed25519.d.ts
CHANGED
|
@@ -153,4 +153,68 @@ export declare namespace verify {
|
|
|
153
153
|
};
|
|
154
154
|
type ErrorType = Bytes.from.ErrorType | Errors.GlobalErrorType;
|
|
155
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Converts an Ed25519 public key to an X25519 public key.
|
|
158
|
+
*
|
|
159
|
+
* This is useful for performing X25519 Diffie-Hellman key exchange
|
|
160
|
+
* using an Ed25519 signing key pair.
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* ```ts twoslash
|
|
164
|
+
* import { Ed25519, X25519 } from 'ox'
|
|
165
|
+
*
|
|
166
|
+
* const { privateKey, publicKey } = Ed25519.createKeyPair()
|
|
167
|
+
*
|
|
168
|
+
* const x25519PublicKey = Ed25519.toX25519PublicKey({ publicKey })
|
|
169
|
+
* ```
|
|
170
|
+
*
|
|
171
|
+
* @param options - The options.
|
|
172
|
+
* @returns The X25519 public key.
|
|
173
|
+
*/
|
|
174
|
+
export declare function toX25519PublicKey<as extends 'Hex' | 'Bytes' = 'Hex'>(options: toX25519PublicKey.Options<as>): toX25519PublicKey.ReturnType<as>;
|
|
175
|
+
export declare namespace toX25519PublicKey {
|
|
176
|
+
type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
|
|
177
|
+
/**
|
|
178
|
+
* Format of the returned public key.
|
|
179
|
+
* @default 'Hex'
|
|
180
|
+
*/
|
|
181
|
+
as?: as | 'Hex' | 'Bytes' | undefined;
|
|
182
|
+
/** Ed25519 public key to convert. */
|
|
183
|
+
publicKey: Hex.Hex | Bytes.Bytes;
|
|
184
|
+
};
|
|
185
|
+
type ReturnType<as extends 'Hex' | 'Bytes'> = (as extends 'Bytes' ? Bytes.Bytes : never) | (as extends 'Hex' ? Hex.Hex : never);
|
|
186
|
+
type ErrorType = Bytes.from.ErrorType | Hex.fromBytes.ErrorType | Errors.GlobalErrorType;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Converts an Ed25519 private key to an X25519 private key.
|
|
190
|
+
*
|
|
191
|
+
* This is useful for performing X25519 Diffie-Hellman key exchange
|
|
192
|
+
* using an Ed25519 signing key pair.
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* ```ts twoslash
|
|
196
|
+
* import { Ed25519, X25519 } from 'ox'
|
|
197
|
+
*
|
|
198
|
+
* const { privateKey, publicKey } = Ed25519.createKeyPair()
|
|
199
|
+
*
|
|
200
|
+
* const x25519PrivateKey = Ed25519.toX25519PrivateKey({ privateKey })
|
|
201
|
+
* ```
|
|
202
|
+
*
|
|
203
|
+
* @param options - The options.
|
|
204
|
+
* @returns The X25519 private key.
|
|
205
|
+
*/
|
|
206
|
+
export declare function toX25519PrivateKey<as extends 'Hex' | 'Bytes' = 'Hex'>(options: toX25519PrivateKey.Options<as>): toX25519PrivateKey.ReturnType<as>;
|
|
207
|
+
export declare namespace toX25519PrivateKey {
|
|
208
|
+
type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
|
|
209
|
+
/**
|
|
210
|
+
* Format of the returned private key.
|
|
211
|
+
* @default 'Hex'
|
|
212
|
+
*/
|
|
213
|
+
as?: as | 'Hex' | 'Bytes' | undefined;
|
|
214
|
+
/** Ed25519 private key to convert. */
|
|
215
|
+
privateKey: Hex.Hex | Bytes.Bytes;
|
|
216
|
+
};
|
|
217
|
+
type ReturnType<as extends 'Hex' | 'Bytes'> = (as extends 'Bytes' ? Bytes.Bytes : never) | (as extends 'Hex' ? Hex.Hex : never);
|
|
218
|
+
type ErrorType = Bytes.from.ErrorType | Hex.fromBytes.ErrorType | Errors.GlobalErrorType;
|
|
219
|
+
}
|
|
156
220
|
//# sourceMappingURL=Ed25519.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ed25519.d.ts","sourceRoot":"","sources":["../../core/Ed25519.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Ed25519.d.ts","sourceRoot":"","sources":["../../core/Ed25519.ts"],"names":[],"mappings":"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"}
|
package/_types/version.d.ts
CHANGED
package/_types/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../version.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../version.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,eAAO,MAAM,OAAO,YAAY,CAAA"}
|
package/core/Ed25519.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
ed25519,
|
|
3
|
+
edwardsToMontgomeryPriv,
|
|
4
|
+
edwardsToMontgomeryPub,
|
|
5
|
+
} from '@noble/curves/ed25519'
|
|
2
6
|
import * as Bytes from './Bytes.js'
|
|
3
7
|
import type * as Errors from './Errors.js'
|
|
4
8
|
import * as Hex from './Hex.js'
|
|
@@ -235,3 +239,101 @@ export declare namespace verify {
|
|
|
235
239
|
|
|
236
240
|
type ErrorType = Bytes.from.ErrorType | Errors.GlobalErrorType
|
|
237
241
|
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Converts an Ed25519 public key to an X25519 public key.
|
|
245
|
+
*
|
|
246
|
+
* This is useful for performing X25519 Diffie-Hellman key exchange
|
|
247
|
+
* using an Ed25519 signing key pair.
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* ```ts twoslash
|
|
251
|
+
* import { Ed25519, X25519 } from 'ox'
|
|
252
|
+
*
|
|
253
|
+
* const { privateKey, publicKey } = Ed25519.createKeyPair()
|
|
254
|
+
*
|
|
255
|
+
* const x25519PublicKey = Ed25519.toX25519PublicKey({ publicKey })
|
|
256
|
+
* ```
|
|
257
|
+
*
|
|
258
|
+
* @param options - The options.
|
|
259
|
+
* @returns The X25519 public key.
|
|
260
|
+
*/
|
|
261
|
+
export function toX25519PublicKey<as extends 'Hex' | 'Bytes' = 'Hex'>(
|
|
262
|
+
options: toX25519PublicKey.Options<as>,
|
|
263
|
+
): toX25519PublicKey.ReturnType<as> {
|
|
264
|
+
const { as = 'Hex', publicKey } = options
|
|
265
|
+
const publicKeyBytes = Bytes.from(publicKey)
|
|
266
|
+
const x25519PublicKeyBytes = edwardsToMontgomeryPub(publicKeyBytes)
|
|
267
|
+
if (as === 'Hex') return Hex.fromBytes(x25519PublicKeyBytes) as never
|
|
268
|
+
return x25519PublicKeyBytes as never
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
export declare namespace toX25519PublicKey {
|
|
272
|
+
type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
|
|
273
|
+
/**
|
|
274
|
+
* Format of the returned public key.
|
|
275
|
+
* @default 'Hex'
|
|
276
|
+
*/
|
|
277
|
+
as?: as | 'Hex' | 'Bytes' | undefined
|
|
278
|
+
/** Ed25519 public key to convert. */
|
|
279
|
+
publicKey: Hex.Hex | Bytes.Bytes
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
type ReturnType<as extends 'Hex' | 'Bytes'> =
|
|
283
|
+
| (as extends 'Bytes' ? Bytes.Bytes : never)
|
|
284
|
+
| (as extends 'Hex' ? Hex.Hex : never)
|
|
285
|
+
|
|
286
|
+
type ErrorType =
|
|
287
|
+
| Bytes.from.ErrorType
|
|
288
|
+
| Hex.fromBytes.ErrorType
|
|
289
|
+
| Errors.GlobalErrorType
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Converts an Ed25519 private key to an X25519 private key.
|
|
294
|
+
*
|
|
295
|
+
* This is useful for performing X25519 Diffie-Hellman key exchange
|
|
296
|
+
* using an Ed25519 signing key pair.
|
|
297
|
+
*
|
|
298
|
+
* @example
|
|
299
|
+
* ```ts twoslash
|
|
300
|
+
* import { Ed25519, X25519 } from 'ox'
|
|
301
|
+
*
|
|
302
|
+
* const { privateKey, publicKey } = Ed25519.createKeyPair()
|
|
303
|
+
*
|
|
304
|
+
* const x25519PrivateKey = Ed25519.toX25519PrivateKey({ privateKey })
|
|
305
|
+
* ```
|
|
306
|
+
*
|
|
307
|
+
* @param options - The options.
|
|
308
|
+
* @returns The X25519 private key.
|
|
309
|
+
*/
|
|
310
|
+
export function toX25519PrivateKey<as extends 'Hex' | 'Bytes' = 'Hex'>(
|
|
311
|
+
options: toX25519PrivateKey.Options<as>,
|
|
312
|
+
): toX25519PrivateKey.ReturnType<as> {
|
|
313
|
+
const { as = 'Hex', privateKey } = options
|
|
314
|
+
const privateKeyBytes = Bytes.from(privateKey)
|
|
315
|
+
const x25519PrivateKeyBytes = edwardsToMontgomeryPriv(privateKeyBytes)
|
|
316
|
+
if (as === 'Hex') return Hex.fromBytes(x25519PrivateKeyBytes) as never
|
|
317
|
+
return x25519PrivateKeyBytes as never
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
export declare namespace toX25519PrivateKey {
|
|
321
|
+
type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
|
|
322
|
+
/**
|
|
323
|
+
* Format of the returned private key.
|
|
324
|
+
* @default 'Hex'
|
|
325
|
+
*/
|
|
326
|
+
as?: as | 'Hex' | 'Bytes' | undefined
|
|
327
|
+
/** Ed25519 private key to convert. */
|
|
328
|
+
privateKey: Hex.Hex | Bytes.Bytes
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
type ReturnType<as extends 'Hex' | 'Bytes'> =
|
|
332
|
+
| (as extends 'Bytes' ? Bytes.Bytes : never)
|
|
333
|
+
| (as extends 'Hex' ? Hex.Hex : never)
|
|
334
|
+
|
|
335
|
+
type ErrorType =
|
|
336
|
+
| Bytes.from.ErrorType
|
|
337
|
+
| Hex.fromBytes.ErrorType
|
|
338
|
+
| Errors.GlobalErrorType
|
|
339
|
+
}
|
package/package.json
CHANGED
package/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** @internal */
|
|
2
|
-
export const version = '0.14.
|
|
2
|
+
export const version = '0.14.10'
|