cafe-utility 27.2.0 → 27.4.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.
Files changed (3) hide show
  1. package/index.d.ts +4 -0
  2. package/index.js +42 -28
  3. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -520,8 +520,10 @@ declare function binaryPadEndToMultiple(bytes: Uint8Array, multiple: number, pad
520
520
  declare function xorCypher(bytes: Uint8Array, key: Uint8Array): Uint8Array;
521
521
  declare function binaryEquals(a: Uint8Array, b: Uint8Array): boolean;
522
522
  declare function privateKeyToPublicKey(privateKey: bigint): [bigint, bigint];
523
+ declare function compressPublicKey(publicKey: [bigint, bigint]): Uint8Array;
523
524
  declare function publicKeyFromCompressed(compressed: Uint8Array): [bigint, bigint];
524
525
  declare function publicKeyToAddress(publicKey: [bigint, bigint]): Uint8Array;
526
+ declare function checksumEncode(addressBytes: Uint8Array): string;
525
527
  declare function signMessage(message: Uint8Array, privateKey: bigint, nonce?: bigint): [bigint, bigint, 27n | 28n];
526
528
  declare function signHash(hash: bigint, privateKey: bigint, nonce?: bigint): [bigint, bigint, 27n | 28n];
527
529
  declare function recoverPublicKey(message: Uint8Array, r: bigint, s: bigint, v: 27n | 28n): [bigint, bigint];
@@ -665,12 +667,14 @@ export declare const Binary: {
665
667
  };
666
668
  export declare const Elliptic: {
667
669
  privateKeyToPublicKey: typeof privateKeyToPublicKey;
670
+ compressPublicKey: typeof compressPublicKey;
668
671
  publicKeyFromCompressed: typeof publicKeyFromCompressed;
669
672
  publicKeyToAddress: typeof publicKeyToAddress;
670
673
  signMessage: typeof signMessage;
671
674
  signHash: typeof signHash;
672
675
  verifySignature: typeof verifySignature;
673
676
  recoverPublicKey: typeof recoverPublicKey;
677
+ checksumEncode: typeof checksumEncode;
674
678
  };
675
679
  export declare const Random: {
676
680
  intBetween: typeof intBetween;
package/index.js CHANGED
@@ -2267,21 +2267,21 @@ function keccakPermutate(n) {
2267
2267
  T = (n[5] << 30) | (n[4] >>> 2),
2268
2268
  S = (n[4] << 30) | (n[5] >>> 2),
2269
2269
  R = (n[6] << 28) | (n[7] >>> 4),
2270
- D = (n[7] << 28) | (n[6] >>> 4),
2271
- C = (n[8] << 27) | (n[9] >>> 5),
2270
+ C = (n[7] << 28) | (n[6] >>> 4),
2271
+ D = (n[8] << 27) | (n[9] >>> 5),
2272
2272
  I = (n[9] << 27) | (n[8] >>> 5),
2273
2273
  B = (n[11] << 4) | (n[10] >>> 28),
2274
2274
  P = (n[10] << 4) | (n[11] >>> 28),
2275
- v = (n[13] << 12) | (n[12] >>> 20),
2276
- L = (n[12] << 12) | (n[13] >>> 20),
2277
- U = (n[14] << 6) | (n[15] >>> 26),
2275
+ U = (n[13] << 12) | (n[12] >>> 20),
2276
+ v = (n[12] << 12) | (n[13] >>> 20),
2277
+ L = (n[14] << 6) | (n[15] >>> 26),
2278
2278
  N = (n[15] << 6) | (n[14] >>> 26),
2279
2279
  j = (n[17] << 23) | (n[16] >>> 9),
2280
2280
  z = (n[16] << 23) | (n[17] >>> 9),
2281
2281
  F = (n[18] << 20) | (n[19] >>> 12),
2282
2282
  q = (n[19] << 20) | (n[18] >>> 12),
2283
- W = (n[20] << 3) | (n[21] >>> 29),
2284
- H = (n[21] << 3) | (n[20] >>> 29),
2283
+ H = (n[20] << 3) | (n[21] >>> 29),
2284
+ W = (n[21] << 3) | (n[20] >>> 29),
2285
2285
  V = (n[22] << 10) | (n[23] >>> 22),
2286
2286
  J = (n[23] << 10) | (n[22] >>> 22),
2287
2287
  K = (n[25] << 11) | (n[24] >>> 21),
@@ -2310,45 +2310,45 @@ function keccakPermutate(n) {
2310
2310
  wn = (n[46] << 24) | (n[47] >>> 8),
2311
2311
  yn = (n[48] << 14) | (n[49] >>> 18),
2312
2312
  xn = (n[49] << 14) | (n[48] >>> 18)
2313
- ;(n[0] = E ^ (~v & K)),
2314
- (n[1] = M ^ (~L & Z)),
2315
- (n[2] = v ^ (~K & un)),
2316
- (n[3] = L ^ (~Z & cn)),
2313
+ ;(n[0] = E ^ (~U & K)),
2314
+ (n[1] = M ^ (~v & Z)),
2315
+ (n[2] = U ^ (~K & un)),
2316
+ (n[3] = v ^ (~Z & cn)),
2317
2317
  (n[4] = K ^ (~un & yn)),
2318
2318
  (n[5] = Z ^ (~cn & xn)),
2319
2319
  (n[6] = un ^ (~yn & E)),
2320
2320
  (n[7] = cn ^ (~xn & M)),
2321
- (n[8] = yn ^ (~E & v)),
2322
- (n[9] = xn ^ (~M & L)),
2323
- (n[10] = R ^ (~F & W)),
2324
- (n[11] = D ^ (~q & H)),
2325
- (n[12] = F ^ (~W & en)),
2326
- (n[13] = q ^ (~H & tn)),
2327
- (n[14] = W ^ (~en & dn)),
2328
- (n[15] = H ^ (~tn & mn)),
2321
+ (n[8] = yn ^ (~E & U)),
2322
+ (n[9] = xn ^ (~M & v)),
2323
+ (n[10] = R ^ (~F & H)),
2324
+ (n[11] = C ^ (~q & W)),
2325
+ (n[12] = F ^ (~H & en)),
2326
+ (n[13] = q ^ (~W & tn)),
2327
+ (n[14] = H ^ (~en & dn)),
2328
+ (n[15] = W ^ (~tn & mn)),
2329
2329
  (n[16] = en ^ (~dn & R)),
2330
- (n[17] = tn ^ (~mn & D)),
2330
+ (n[17] = tn ^ (~mn & C)),
2331
2331
  (n[18] = dn ^ (~R & F)),
2332
- (n[19] = mn ^ (~D & q)),
2333
- (n[20] = O ^ (~U & _)),
2332
+ (n[19] = mn ^ (~C & q)),
2333
+ (n[20] = O ^ (~L & _)),
2334
2334
  (n[21] = k ^ (~N & Q)),
2335
- (n[22] = U ^ (~_ & sn)),
2335
+ (n[22] = L ^ (~_ & sn)),
2336
2336
  (n[23] = N ^ (~Q & fn)),
2337
2337
  (n[24] = _ ^ (~sn & ln)),
2338
2338
  (n[25] = Q ^ (~fn & an)),
2339
2339
  (n[26] = sn ^ (~ln & O)),
2340
2340
  (n[27] = fn ^ (~an & k)),
2341
- (n[28] = ln ^ (~O & U)),
2341
+ (n[28] = ln ^ (~O & L)),
2342
2342
  (n[29] = an ^ (~k & N)),
2343
- (n[30] = C ^ (~B & V)),
2343
+ (n[30] = D ^ (~B & V)),
2344
2344
  (n[31] = I ^ (~P & J)),
2345
2345
  (n[32] = B ^ (~V & rn)),
2346
2346
  (n[33] = P ^ (~J & on)),
2347
2347
  (n[34] = V ^ (~rn & gn)),
2348
2348
  (n[35] = J ^ (~on & wn)),
2349
- (n[36] = rn ^ (~gn & C)),
2349
+ (n[36] = rn ^ (~gn & D)),
2350
2350
  (n[37] = on ^ (~wn & I)),
2351
- (n[38] = gn ^ (~C & B)),
2351
+ (n[38] = gn ^ (~D & B)),
2352
2352
  (n[39] = wn ^ (~I & P)),
2353
2353
  (n[40] = T ^ (~j & G)),
2354
2354
  (n[41] = S ^ (~z & Y)),
@@ -2538,6 +2538,10 @@ function privateKeyToPublicKey(n) {
2538
2538
  if (n <= 0n || n >= SECP256K1_N) throw new Error('Invalid private key')
2539
2539
  return doubleAndAdd(SECP256K1_X, SECP256K1_Y, n, SECP256K1_P)
2540
2540
  }
2541
+ function compressPublicKey(n) {
2542
+ const t = n[1] % 2n === 0n ? 2 : 3
2543
+ return new Uint8Array([t, ...numberToUint256(n[0], 'BE')])
2544
+ }
2541
2545
  function publicKeyFromCompressed(n) {
2542
2546
  if (n.length !== 33 || (n[0] !== 2 && n[0] !== 3)) throw new Error('Invalid compressed public key')
2543
2547
  const e = uint256ToNumber(n.slice(1), 'BE'),
@@ -2552,6 +2556,14 @@ function publicKeyToAddress(n) {
2552
2556
  t = keccak256(concatBytes(numberToUint256(n[0], 'BE'), numberToUint256(n[1], 'BE')))
2553
2557
  return e.set(t.subarray(12)), e
2554
2558
  }
2559
+ function checksumEncode(n) {
2560
+ const e = exports.Binary.uint8ArrayToHex(n),
2561
+ t = exports.Binary.uint8ArrayToHex(exports.Binary.keccak256(new Uint8Array([...e].map(o => o.charCodeAt(0)))))
2562
+ console.log({ address: e, hash: t })
2563
+ let r = '0x'
2564
+ for (let o = 0; o < e.length; o++) parseInt(t[o], 16) > 7 ? (r += e[o].toUpperCase()) : (r += e[o])
2565
+ return r
2566
+ }
2555
2567
  function doubleAndAdd(n, e, t, r) {
2556
2568
  let o = [0n, 0n],
2557
2569
  i = [n, e]
@@ -3028,12 +3040,14 @@ class AsyncQueue {
3028
3040
  }),
3029
3041
  (exports.Elliptic = {
3030
3042
  privateKeyToPublicKey,
3043
+ compressPublicKey,
3031
3044
  publicKeyFromCompressed,
3032
3045
  publicKeyToAddress,
3033
3046
  signMessage,
3034
3047
  signHash,
3035
3048
  verifySignature,
3036
- recoverPublicKey
3049
+ recoverPublicKey,
3050
+ checksumEncode
3037
3051
  }),
3038
3052
  (exports.Random = {
3039
3053
  intBetween,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cafe-utility",
3
- "version": "27.2.0",
3
+ "version": "27.4.0",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "exports": {