@fleet-sdk/crypto 0.8.0 → 0.8.2

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 CHANGED
@@ -1,5 +1,12 @@
1
1
  # @fleet-sdk/crypto
2
2
 
3
+ ## 0.8.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 9a244b5: Add `blake2b` function
8
+ - 1b07c4a: Bump dependencies
9
+
3
10
  ## 0.8.0
4
11
 
5
12
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -17,8 +17,17 @@ interface BytesCoder extends Coder<Uint8Array, string> {
17
17
  decode: (str: string) => Uint8Array;
18
18
  }
19
19
 
20
+ type Blake2b256Options = {
21
+ key?: ByteInput;
22
+ salt?: ByteInput;
23
+ personalization?: ByteInput;
24
+ };
25
+ type Blake2bOptions = Blake2b256Options & {
26
+ dkLen?: number;
27
+ };
20
28
  declare function ensureBytes(input: ByteInput): Uint8Array;
21
- declare function blake2b256(message: ByteInput): Uint8Array;
29
+ declare function blake2b(message: ByteInput, options?: Blake2bOptions): Uint8Array;
30
+ declare function blake2b256(message: ByteInput, options?: Blake2b256Options): Uint8Array;
22
31
  declare function sha256(message: ByteInput): Uint8Array;
23
32
 
24
33
  declare const hex: BytesCoder;
@@ -47,4 +56,4 @@ declare function validateEcPoint(pointBytes: Uint8Array): boolean;
47
56
  */
48
57
  declare const randomBytes: (bytesLength?: number) => Uint8Array;
49
58
 
50
- export { type ByteInput, type BytesCoder, type Coder, base58, base58check, base64, bigintBE, blake2b256, ensureBytes, hex, randomBytes, sha256, utf8, validateEcPoint };
59
+ export { type Blake2b256Options, type Blake2bOptions, type ByteInput, type BytesCoder, type Coder, base58, base58check, base64, bigintBE, blake2b, blake2b256, ensureBytes, hex, randomBytes, sha256, utf8, validateEcPoint };
package/dist/index.d.ts CHANGED
@@ -17,8 +17,17 @@ interface BytesCoder extends Coder<Uint8Array, string> {
17
17
  decode: (str: string) => Uint8Array;
18
18
  }
19
19
 
20
+ type Blake2b256Options = {
21
+ key?: ByteInput;
22
+ salt?: ByteInput;
23
+ personalization?: ByteInput;
24
+ };
25
+ type Blake2bOptions = Blake2b256Options & {
26
+ dkLen?: number;
27
+ };
20
28
  declare function ensureBytes(input: ByteInput): Uint8Array;
21
- declare function blake2b256(message: ByteInput): Uint8Array;
29
+ declare function blake2b(message: ByteInput, options?: Blake2bOptions): Uint8Array;
30
+ declare function blake2b256(message: ByteInput, options?: Blake2b256Options): Uint8Array;
22
31
  declare function sha256(message: ByteInput): Uint8Array;
23
32
 
24
33
  declare const hex: BytesCoder;
@@ -47,4 +56,4 @@ declare function validateEcPoint(pointBytes: Uint8Array): boolean;
47
56
  */
48
57
  declare const randomBytes: (bytesLength?: number) => Uint8Array;
49
58
 
50
- export { type ByteInput, type BytesCoder, type Coder, base58, base58check, base64, bigintBE, blake2b256, ensureBytes, hex, randomBytes, sha256, utf8, validateEcPoint };
59
+ export { type Blake2b256Options, type Blake2bOptions, type ByteInput, type BytesCoder, type Coder, base58, base58check, base64, bigintBE, blake2b, blake2b256, ensureBytes, hex, randomBytes, sha256, utf8, validateEcPoint };
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var utils = require('@noble/hashes/utils');
4
- var blake2b = require('@noble/hashes/blake2b');
4
+ var blake2b$1 = require('@noble/hashes/blake2b');
5
5
  var sha256$1 = require('@noble/hashes/sha256');
6
6
  var base = require('@scure/base');
7
7
  var common = require('@fleet-sdk/common');
@@ -90,8 +90,15 @@ var base64 = base.base64;
90
90
  function ensureBytes(input) {
91
91
  return typeof input === "string" ? hex.decode(input) : input;
92
92
  }
93
- function blake2b256(message) {
94
- return blake2b.blake2b(ensureBytes(message), { dkLen: 32 });
93
+ function blake2b(message, options) {
94
+ if (options?.key) options.key = ensureBytes(options.key);
95
+ if (options?.salt) options.salt = ensureBytes(options.salt);
96
+ if (options?.personalization)
97
+ options.personalization = ensureBytes(options.personalization);
98
+ return blake2b$1.blake2b(ensureBytes(message), options);
99
+ }
100
+ function blake2b256(message, options) {
101
+ return blake2b(ensureBytes(message), { dkLen: 32, ...options });
95
102
  }
96
103
  function sha256(message) {
97
104
  return sha256$1.sha256(ensureBytes(message));
@@ -116,6 +123,7 @@ exports.base58 = base58;
116
123
  exports.base58check = base58check;
117
124
  exports.base64 = base64;
118
125
  exports.bigintBE = bigintBE;
126
+ exports.blake2b = blake2b;
119
127
  exports.blake2b256 = blake2b256;
120
128
  exports.ensureBytes = ensureBytes;
121
129
  exports.hex = hex;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/coders/hex.ts","../src/coders/utf8.ts","../src/coders/bigintBE.ts","../src/coders/index.ts","../src/hashes.ts","../src/ecpoint.ts","../src/index.ts"],"names":["assertInstanceOf","hex","assertTypeOf","assert","base58checkCoder","base58Coder","base64Coder","blake2b","_sha256","isEmpty","nobleRandomBytes"],"mappings":"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","file":"index.js","sourcesContent":["import { assert, assertInstanceOf, assertTypeOf } from \"@fleet-sdk/common\";\nimport type { BytesCoder } from \"../types\";\n\nconst HEXES = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, \"0\"));\n\nconst HexChar = {\n ZERO: 48, // 0\n NINE: 57, // 9\n A_UP: 65, // A\n F_UP: 70, // F\n A_LO: 97, // a\n F_LO: 102 // f\n} as const;\n\nfunction bytesToHex(bytes: Uint8Array): string {\n assertInstanceOf(bytes, Uint8Array);\n\n let hex = \"\";\n for (let i = 0, len = bytes.length; i < len; i++) {\n hex += HEXES[bytes[i]];\n }\n\n return hex;\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n assertTypeOf(hex, \"string\");\n assert(hex.length % 2 === 0, \"Invalid hex padding.\");\n\n const len = hex.length / 2;\n const bytes = new Uint8Array(len);\n for (let i = 0, j = 0; i < len; i++) {\n const n1 = charCodeToBase16(hex.charCodeAt(j++));\n const n2 = charCodeToBase16(hex.charCodeAt(j++));\n bytes[i] = n1 * 16 + n2;\n }\n\n return bytes;\n}\n\nfunction charCodeToBase16(char: number) {\n if (char >= HexChar.ZERO && char <= HexChar.NINE) return char - HexChar.ZERO;\n if (char >= HexChar.A_UP && char <= HexChar.F_UP) return char - (HexChar.A_UP - 10);\n if (char >= HexChar.A_LO && char <= HexChar.F_LO) return char - (HexChar.A_LO - 10);\n\n throw new Error(\"Invalid byte sequence.\");\n}\n\nexport const hex: BytesCoder = {\n encode: bytesToHex,\n decode: hexToBytes\n};\n","import { assertInstanceOf, assertTypeOf } from \"@fleet-sdk/common\";\nimport type { BytesCoder } from \"../types\";\n\nfunction bytesToUtf8(bytes: Uint8Array): string {\n assertInstanceOf(bytes, Uint8Array);\n\n return new TextDecoder().decode(bytes);\n}\n\nfunction utf8ToBytes(str: string): Uint8Array {\n assertTypeOf(str, \"string\");\n\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport const utf8: BytesCoder = {\n encode: bytesToUtf8,\n decode: utf8ToBytes\n};\n","import { hex } from \"@scure/base\";\nimport type { Coder } from \"../types\";\n\n/**\n * A coder for Big Endian `BigInt` <> `Uint8Array` conversion..\n */\nexport const bigintBE: Coder<Uint8Array, bigint> = {\n /**\n * Encode a `Uint8Array` to a `BigInt`.\n */\n encode(data) {\n const hexInput = hex.encode(data);\n return BigInt(hexInput === \"\" ? \"0\" : `0x${hexInput}`);\n },\n\n /**\n * Decode a `BigInt` to a `Uint8Array`.\n */\n decode(data) {\n const hexData = data.toString(16);\n return hex.decode(hexData.length % 2 ? `0${hexData}` : hexData);\n }\n};\n","import {\n base58check as base58checkCoder,\n base58 as base58Coder,\n base64 as base64Coder\n} from \"@scure/base\";\nimport { sha256 } from \"../hashes\";\nimport type { BytesCoder } from \"../types\";\n\nexport const base58check = base58checkCoder(sha256);\nexport const base58 = base58Coder as BytesCoder;\nexport const base64 = base64Coder as BytesCoder;\n\nexport { hex } from \"./hex\";\nexport { utf8 } from \"./utf8\";\nexport { bigintBE } from \"./bigintBE\";\n","import { blake2b } from \"@noble/hashes/blake2b\";\nimport { sha256 as _sha256 } from \"@noble/hashes/sha256\";\nimport { hex } from \"./coders\";\nimport type { ByteInput } from \"./types\";\n\nexport function ensureBytes(input: ByteInput): Uint8Array {\n return typeof input === \"string\" ? hex.decode(input) : input;\n}\n\nexport function blake2b256(message: ByteInput): Uint8Array {\n return blake2b(ensureBytes(message), { dkLen: 32 });\n}\n\nexport function sha256(message: ByteInput): Uint8Array {\n return _sha256(ensureBytes(message));\n}\n","import { isEmpty } from \"@fleet-sdk/common\";\n\n/**\n * EC point type\n */\nenum EcPointType {\n /**\n * Compressed, positive Y coordinate\n */\n Compressed = 0x02,\n /**\n * Compressed, negative Y coordinate\n */\n CompressedOdd = 0x03,\n /**\n * Uncompressed\n */\n Uncompressed = 0x04\n}\n\n/**\n * Validate Elliptic Curve point\n *\n * @param pointBytes EC point bytes\n * @returns True if the point is valid\n */\nexport function validateEcPoint(pointBytes: Uint8Array) {\n if (isEmpty(pointBytes)) return false;\n\n switch (pointBytes[0]) {\n case EcPointType.Compressed:\n case EcPointType.CompressedOdd:\n return pointBytes.length === 33;\n case EcPointType.Uncompressed:\n return pointBytes.length === 65;\n default:\n return false;\n }\n}\n","import { randomBytes as nobleRandomBytes } from \"@noble/hashes/utils\";\n\n/**\n * Secure PRNG from \"@noble/hashes\". Uses crypto.getRandomValues, which defers to OS.\n */\nexport const randomBytes = nobleRandomBytes as (bytesLength?: number) => Uint8Array;\n\nexport * from \"./hashes\";\nexport * from \"./types\";\nexport * from \"./coders\";\nexport * from \"./ecpoint\";\n"]}
1
+ {"version":3,"sources":["../src/coders/hex.ts","../src/coders/utf8.ts","../src/coders/bigintBE.ts","../src/coders/index.ts","../src/hashes.ts","../src/ecpoint.ts","../src/index.ts"],"names":["assertInstanceOf","hex","assertTypeOf","assert","base58checkCoder","base58Coder","base64Coder","_blake2b","_sha256","isEmpty","nobleRandomBytes"],"mappings":"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","file":"index.js","sourcesContent":["import { assert, assertInstanceOf, assertTypeOf } from \"@fleet-sdk/common\";\nimport type { BytesCoder } from \"../types\";\n\nconst HEXES = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, \"0\"));\n\nconst HexChar = {\n ZERO: 48, // 0\n NINE: 57, // 9\n A_UP: 65, // A\n F_UP: 70, // F\n A_LO: 97, // a\n F_LO: 102 // f\n} as const;\n\nfunction bytesToHex(bytes: Uint8Array): string {\n assertInstanceOf(bytes, Uint8Array);\n\n let hex = \"\";\n for (let i = 0, len = bytes.length; i < len; i++) {\n hex += HEXES[bytes[i]];\n }\n\n return hex;\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n assertTypeOf(hex, \"string\");\n assert(hex.length % 2 === 0, \"Invalid hex padding.\");\n\n const len = hex.length / 2;\n const bytes = new Uint8Array(len);\n for (let i = 0, j = 0; i < len; i++) {\n const n1 = charCodeToBase16(hex.charCodeAt(j++));\n const n2 = charCodeToBase16(hex.charCodeAt(j++));\n bytes[i] = n1 * 16 + n2;\n }\n\n return bytes;\n}\n\nfunction charCodeToBase16(char: number) {\n if (char >= HexChar.ZERO && char <= HexChar.NINE) return char - HexChar.ZERO;\n if (char >= HexChar.A_UP && char <= HexChar.F_UP) return char - (HexChar.A_UP - 10);\n if (char >= HexChar.A_LO && char <= HexChar.F_LO) return char - (HexChar.A_LO - 10);\n\n throw new Error(\"Invalid byte sequence.\");\n}\n\nexport const hex: BytesCoder = {\n encode: bytesToHex,\n decode: hexToBytes\n};\n","import { assertInstanceOf, assertTypeOf } from \"@fleet-sdk/common\";\nimport type { BytesCoder } from \"../types\";\n\nfunction bytesToUtf8(bytes: Uint8Array): string {\n assertInstanceOf(bytes, Uint8Array);\n\n return new TextDecoder().decode(bytes);\n}\n\nfunction utf8ToBytes(str: string): Uint8Array {\n assertTypeOf(str, \"string\");\n\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport const utf8: BytesCoder = {\n encode: bytesToUtf8,\n decode: utf8ToBytes\n};\n","import { hex } from \"@scure/base\";\nimport type { Coder } from \"../types\";\n\n/**\n * A coder for Big Endian `BigInt` <> `Uint8Array` conversion..\n */\nexport const bigintBE: Coder<Uint8Array, bigint> = {\n /**\n * Encode a `Uint8Array` to a `BigInt`.\n */\n encode(data) {\n const hexInput = hex.encode(data);\n return BigInt(hexInput === \"\" ? \"0\" : `0x${hexInput}`);\n },\n\n /**\n * Decode a `BigInt` to a `Uint8Array`.\n */\n decode(data) {\n const hexData = data.toString(16);\n return hex.decode(hexData.length % 2 ? `0${hexData}` : hexData);\n }\n};\n","import {\n base58check as base58checkCoder,\n base58 as base58Coder,\n base64 as base64Coder\n} from \"@scure/base\";\nimport { sha256 } from \"../hashes\";\nimport type { BytesCoder } from \"../types\";\n\nexport const base58check = base58checkCoder(sha256);\nexport const base58 = base58Coder as BytesCoder;\nexport const base64 = base64Coder as BytesCoder;\n\nexport { hex } from \"./hex\";\nexport { utf8 } from \"./utf8\";\nexport { bigintBE } from \"./bigintBE\";\n","import { blake2b as _blake2b } from \"@noble/hashes/blake2b\";\nimport { sha256 as _sha256 } from \"@noble/hashes/sha256\";\nimport { hex } from \"./coders\";\nimport type { ByteInput } from \"./types\";\n\nexport type Blake2b256Options = {\n key?: ByteInput;\n salt?: ByteInput;\n personalization?: ByteInput;\n};\n\nexport type Blake2bOptions = Blake2b256Options & {\n dkLen?: number;\n};\n\nexport function ensureBytes(input: ByteInput): Uint8Array {\n return typeof input === \"string\" ? hex.decode(input) : input;\n}\n\nexport function blake2b(message: ByteInput, options?: Blake2bOptions): Uint8Array {\n if (options?.key) options.key = ensureBytes(options.key);\n if (options?.salt) options.salt = ensureBytes(options.salt);\n if (options?.personalization)\n options.personalization = ensureBytes(options.personalization);\n\n return _blake2b(ensureBytes(message), options);\n}\n\nexport function blake2b256(message: ByteInput, options?: Blake2b256Options): Uint8Array {\n return blake2b(ensureBytes(message), { dkLen: 32, ...options });\n}\n\nexport function sha256(message: ByteInput): Uint8Array {\n return _sha256(ensureBytes(message));\n}\n","import { isEmpty } from \"@fleet-sdk/common\";\n\n/**\n * EC point type\n */\nenum EcPointType {\n /**\n * Compressed, positive Y coordinate\n */\n Compressed = 0x02,\n /**\n * Compressed, negative Y coordinate\n */\n CompressedOdd = 0x03,\n /**\n * Uncompressed\n */\n Uncompressed = 0x04\n}\n\n/**\n * Validate Elliptic Curve point\n *\n * @param pointBytes EC point bytes\n * @returns True if the point is valid\n */\nexport function validateEcPoint(pointBytes: Uint8Array) {\n if (isEmpty(pointBytes)) return false;\n\n switch (pointBytes[0]) {\n case EcPointType.Compressed:\n case EcPointType.CompressedOdd:\n return pointBytes.length === 33;\n case EcPointType.Uncompressed:\n return pointBytes.length === 65;\n default:\n return false;\n }\n}\n","import { randomBytes as nobleRandomBytes } from \"@noble/hashes/utils\";\n\n/**\n * Secure PRNG from \"@noble/hashes\". Uses crypto.getRandomValues, which defers to OS.\n */\nexport const randomBytes = nobleRandomBytes as (bytesLength?: number) => Uint8Array;\n\nexport * from \"./hashes\";\nexport * from \"./types\";\nexport * from \"./coders\";\nexport * from \"./ecpoint\";\n"]}
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import { randomBytes as randomBytes$1 } from '@noble/hashes/utils';
2
- import { blake2b } from '@noble/hashes/blake2b';
2
+ import { blake2b as blake2b$1 } from '@noble/hashes/blake2b';
3
3
  import { sha256 as sha256$1 } from '@noble/hashes/sha256';
4
4
  import { base58check as base58check$1, hex as hex$1, base58 as base58$1, base64 as base64$1 } from '@scure/base';
5
5
  import { isEmpty, assertInstanceOf, assertTypeOf, assert } from '@fleet-sdk/common';
@@ -88,8 +88,15 @@ var base64 = base64$1;
88
88
  function ensureBytes(input) {
89
89
  return typeof input === "string" ? hex.decode(input) : input;
90
90
  }
91
- function blake2b256(message) {
92
- return blake2b(ensureBytes(message), { dkLen: 32 });
91
+ function blake2b(message, options) {
92
+ if (options?.key) options.key = ensureBytes(options.key);
93
+ if (options?.salt) options.salt = ensureBytes(options.salt);
94
+ if (options?.personalization)
95
+ options.personalization = ensureBytes(options.personalization);
96
+ return blake2b$1(ensureBytes(message), options);
97
+ }
98
+ function blake2b256(message, options) {
99
+ return blake2b(ensureBytes(message), { dkLen: 32, ...options });
93
100
  }
94
101
  function sha256(message) {
95
102
  return sha256$1(ensureBytes(message));
@@ -110,6 +117,6 @@ function validateEcPoint(pointBytes) {
110
117
  // src/index.ts
111
118
  var randomBytes = randomBytes$1;
112
119
 
113
- export { base58, base58check, base64, bigintBE, blake2b256, ensureBytes, hex, randomBytes, sha256, utf8, validateEcPoint };
120
+ export { base58, base58check, base64, bigintBE, blake2b, blake2b256, ensureBytes, hex, randomBytes, sha256, utf8, validateEcPoint };
114
121
  //# sourceMappingURL=index.mjs.map
115
122
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/coders/hex.ts","../src/coders/utf8.ts","../src/coders/bigintBE.ts","../src/coders/index.ts","../src/hashes.ts","../src/ecpoint.ts","../src/index.ts"],"names":["hex","assertInstanceOf","assertTypeOf","base58checkCoder","base58Coder","base64Coder","_sha256","nobleRandomBytes"],"mappings":"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","file":"index.mjs","sourcesContent":["import { assert, assertInstanceOf, assertTypeOf } from \"@fleet-sdk/common\";\nimport type { BytesCoder } from \"../types\";\n\nconst HEXES = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, \"0\"));\n\nconst HexChar = {\n ZERO: 48, // 0\n NINE: 57, // 9\n A_UP: 65, // A\n F_UP: 70, // F\n A_LO: 97, // a\n F_LO: 102 // f\n} as const;\n\nfunction bytesToHex(bytes: Uint8Array): string {\n assertInstanceOf(bytes, Uint8Array);\n\n let hex = \"\";\n for (let i = 0, len = bytes.length; i < len; i++) {\n hex += HEXES[bytes[i]];\n }\n\n return hex;\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n assertTypeOf(hex, \"string\");\n assert(hex.length % 2 === 0, \"Invalid hex padding.\");\n\n const len = hex.length / 2;\n const bytes = new Uint8Array(len);\n for (let i = 0, j = 0; i < len; i++) {\n const n1 = charCodeToBase16(hex.charCodeAt(j++));\n const n2 = charCodeToBase16(hex.charCodeAt(j++));\n bytes[i] = n1 * 16 + n2;\n }\n\n return bytes;\n}\n\nfunction charCodeToBase16(char: number) {\n if (char >= HexChar.ZERO && char <= HexChar.NINE) return char - HexChar.ZERO;\n if (char >= HexChar.A_UP && char <= HexChar.F_UP) return char - (HexChar.A_UP - 10);\n if (char >= HexChar.A_LO && char <= HexChar.F_LO) return char - (HexChar.A_LO - 10);\n\n throw new Error(\"Invalid byte sequence.\");\n}\n\nexport const hex: BytesCoder = {\n encode: bytesToHex,\n decode: hexToBytes\n};\n","import { assertInstanceOf, assertTypeOf } from \"@fleet-sdk/common\";\nimport type { BytesCoder } from \"../types\";\n\nfunction bytesToUtf8(bytes: Uint8Array): string {\n assertInstanceOf(bytes, Uint8Array);\n\n return new TextDecoder().decode(bytes);\n}\n\nfunction utf8ToBytes(str: string): Uint8Array {\n assertTypeOf(str, \"string\");\n\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport const utf8: BytesCoder = {\n encode: bytesToUtf8,\n decode: utf8ToBytes\n};\n","import { hex } from \"@scure/base\";\nimport type { Coder } from \"../types\";\n\n/**\n * A coder for Big Endian `BigInt` <> `Uint8Array` conversion..\n */\nexport const bigintBE: Coder<Uint8Array, bigint> = {\n /**\n * Encode a `Uint8Array` to a `BigInt`.\n */\n encode(data) {\n const hexInput = hex.encode(data);\n return BigInt(hexInput === \"\" ? \"0\" : `0x${hexInput}`);\n },\n\n /**\n * Decode a `BigInt` to a `Uint8Array`.\n */\n decode(data) {\n const hexData = data.toString(16);\n return hex.decode(hexData.length % 2 ? `0${hexData}` : hexData);\n }\n};\n","import {\n base58check as base58checkCoder,\n base58 as base58Coder,\n base64 as base64Coder\n} from \"@scure/base\";\nimport { sha256 } from \"../hashes\";\nimport type { BytesCoder } from \"../types\";\n\nexport const base58check = base58checkCoder(sha256);\nexport const base58 = base58Coder as BytesCoder;\nexport const base64 = base64Coder as BytesCoder;\n\nexport { hex } from \"./hex\";\nexport { utf8 } from \"./utf8\";\nexport { bigintBE } from \"./bigintBE\";\n","import { blake2b } from \"@noble/hashes/blake2b\";\nimport { sha256 as _sha256 } from \"@noble/hashes/sha256\";\nimport { hex } from \"./coders\";\nimport type { ByteInput } from \"./types\";\n\nexport function ensureBytes(input: ByteInput): Uint8Array {\n return typeof input === \"string\" ? hex.decode(input) : input;\n}\n\nexport function blake2b256(message: ByteInput): Uint8Array {\n return blake2b(ensureBytes(message), { dkLen: 32 });\n}\n\nexport function sha256(message: ByteInput): Uint8Array {\n return _sha256(ensureBytes(message));\n}\n","import { isEmpty } from \"@fleet-sdk/common\";\n\n/**\n * EC point type\n */\nenum EcPointType {\n /**\n * Compressed, positive Y coordinate\n */\n Compressed = 0x02,\n /**\n * Compressed, negative Y coordinate\n */\n CompressedOdd = 0x03,\n /**\n * Uncompressed\n */\n Uncompressed = 0x04\n}\n\n/**\n * Validate Elliptic Curve point\n *\n * @param pointBytes EC point bytes\n * @returns True if the point is valid\n */\nexport function validateEcPoint(pointBytes: Uint8Array) {\n if (isEmpty(pointBytes)) return false;\n\n switch (pointBytes[0]) {\n case EcPointType.Compressed:\n case EcPointType.CompressedOdd:\n return pointBytes.length === 33;\n case EcPointType.Uncompressed:\n return pointBytes.length === 65;\n default:\n return false;\n }\n}\n","import { randomBytes as nobleRandomBytes } from \"@noble/hashes/utils\";\n\n/**\n * Secure PRNG from \"@noble/hashes\". Uses crypto.getRandomValues, which defers to OS.\n */\nexport const randomBytes = nobleRandomBytes as (bytesLength?: number) => Uint8Array;\n\nexport * from \"./hashes\";\nexport * from \"./types\";\nexport * from \"./coders\";\nexport * from \"./ecpoint\";\n"]}
1
+ {"version":3,"sources":["../src/coders/hex.ts","../src/coders/utf8.ts","../src/coders/bigintBE.ts","../src/coders/index.ts","../src/hashes.ts","../src/ecpoint.ts","../src/index.ts"],"names":["hex","assertInstanceOf","assertTypeOf","base58checkCoder","base58Coder","base64Coder","_blake2b","_sha256","nobleRandomBytes"],"mappings":"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","file":"index.mjs","sourcesContent":["import { assert, assertInstanceOf, assertTypeOf } from \"@fleet-sdk/common\";\nimport type { BytesCoder } from \"../types\";\n\nconst HEXES = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, \"0\"));\n\nconst HexChar = {\n ZERO: 48, // 0\n NINE: 57, // 9\n A_UP: 65, // A\n F_UP: 70, // F\n A_LO: 97, // a\n F_LO: 102 // f\n} as const;\n\nfunction bytesToHex(bytes: Uint8Array): string {\n assertInstanceOf(bytes, Uint8Array);\n\n let hex = \"\";\n for (let i = 0, len = bytes.length; i < len; i++) {\n hex += HEXES[bytes[i]];\n }\n\n return hex;\n}\n\nfunction hexToBytes(hex: string): Uint8Array {\n assertTypeOf(hex, \"string\");\n assert(hex.length % 2 === 0, \"Invalid hex padding.\");\n\n const len = hex.length / 2;\n const bytes = new Uint8Array(len);\n for (let i = 0, j = 0; i < len; i++) {\n const n1 = charCodeToBase16(hex.charCodeAt(j++));\n const n2 = charCodeToBase16(hex.charCodeAt(j++));\n bytes[i] = n1 * 16 + n2;\n }\n\n return bytes;\n}\n\nfunction charCodeToBase16(char: number) {\n if (char >= HexChar.ZERO && char <= HexChar.NINE) return char - HexChar.ZERO;\n if (char >= HexChar.A_UP && char <= HexChar.F_UP) return char - (HexChar.A_UP - 10);\n if (char >= HexChar.A_LO && char <= HexChar.F_LO) return char - (HexChar.A_LO - 10);\n\n throw new Error(\"Invalid byte sequence.\");\n}\n\nexport const hex: BytesCoder = {\n encode: bytesToHex,\n decode: hexToBytes\n};\n","import { assertInstanceOf, assertTypeOf } from \"@fleet-sdk/common\";\nimport type { BytesCoder } from \"../types\";\n\nfunction bytesToUtf8(bytes: Uint8Array): string {\n assertInstanceOf(bytes, Uint8Array);\n\n return new TextDecoder().decode(bytes);\n}\n\nfunction utf8ToBytes(str: string): Uint8Array {\n assertTypeOf(str, \"string\");\n\n return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\nexport const utf8: BytesCoder = {\n encode: bytesToUtf8,\n decode: utf8ToBytes\n};\n","import { hex } from \"@scure/base\";\nimport type { Coder } from \"../types\";\n\n/**\n * A coder for Big Endian `BigInt` <> `Uint8Array` conversion..\n */\nexport const bigintBE: Coder<Uint8Array, bigint> = {\n /**\n * Encode a `Uint8Array` to a `BigInt`.\n */\n encode(data) {\n const hexInput = hex.encode(data);\n return BigInt(hexInput === \"\" ? \"0\" : `0x${hexInput}`);\n },\n\n /**\n * Decode a `BigInt` to a `Uint8Array`.\n */\n decode(data) {\n const hexData = data.toString(16);\n return hex.decode(hexData.length % 2 ? `0${hexData}` : hexData);\n }\n};\n","import {\n base58check as base58checkCoder,\n base58 as base58Coder,\n base64 as base64Coder\n} from \"@scure/base\";\nimport { sha256 } from \"../hashes\";\nimport type { BytesCoder } from \"../types\";\n\nexport const base58check = base58checkCoder(sha256);\nexport const base58 = base58Coder as BytesCoder;\nexport const base64 = base64Coder as BytesCoder;\n\nexport { hex } from \"./hex\";\nexport { utf8 } from \"./utf8\";\nexport { bigintBE } from \"./bigintBE\";\n","import { blake2b as _blake2b } from \"@noble/hashes/blake2b\";\nimport { sha256 as _sha256 } from \"@noble/hashes/sha256\";\nimport { hex } from \"./coders\";\nimport type { ByteInput } from \"./types\";\n\nexport type Blake2b256Options = {\n key?: ByteInput;\n salt?: ByteInput;\n personalization?: ByteInput;\n};\n\nexport type Blake2bOptions = Blake2b256Options & {\n dkLen?: number;\n};\n\nexport function ensureBytes(input: ByteInput): Uint8Array {\n return typeof input === \"string\" ? hex.decode(input) : input;\n}\n\nexport function blake2b(message: ByteInput, options?: Blake2bOptions): Uint8Array {\n if (options?.key) options.key = ensureBytes(options.key);\n if (options?.salt) options.salt = ensureBytes(options.salt);\n if (options?.personalization)\n options.personalization = ensureBytes(options.personalization);\n\n return _blake2b(ensureBytes(message), options);\n}\n\nexport function blake2b256(message: ByteInput, options?: Blake2b256Options): Uint8Array {\n return blake2b(ensureBytes(message), { dkLen: 32, ...options });\n}\n\nexport function sha256(message: ByteInput): Uint8Array {\n return _sha256(ensureBytes(message));\n}\n","import { isEmpty } from \"@fleet-sdk/common\";\n\n/**\n * EC point type\n */\nenum EcPointType {\n /**\n * Compressed, positive Y coordinate\n */\n Compressed = 0x02,\n /**\n * Compressed, negative Y coordinate\n */\n CompressedOdd = 0x03,\n /**\n * Uncompressed\n */\n Uncompressed = 0x04\n}\n\n/**\n * Validate Elliptic Curve point\n *\n * @param pointBytes EC point bytes\n * @returns True if the point is valid\n */\nexport function validateEcPoint(pointBytes: Uint8Array) {\n if (isEmpty(pointBytes)) return false;\n\n switch (pointBytes[0]) {\n case EcPointType.Compressed:\n case EcPointType.CompressedOdd:\n return pointBytes.length === 33;\n case EcPointType.Uncompressed:\n return pointBytes.length === 65;\n default:\n return false;\n }\n}\n","import { randomBytes as nobleRandomBytes } from \"@noble/hashes/utils\";\n\n/**\n * Secure PRNG from \"@noble/hashes\". Uses crypto.getRandomValues, which defers to OS.\n */\nexport const randomBytes = nobleRandomBytes as (bytesLength?: number) => Uint8Array;\n\nexport * from \"./hashes\";\nexport * from \"./types\";\nexport * from \"./coders\";\nexport * from \"./ecpoint\";\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fleet-sdk/crypto",
3
- "version": "0.8.0",
3
+ "version": "0.8.2",
4
4
  "description": "Ergo blockchain crypto primitives.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -33,8 +33,8 @@
33
33
  "node": ">=18"
34
34
  },
35
35
  "dependencies": {
36
- "@noble/hashes": "^1.5.0",
37
- "@scure/base": "^1.1.9",
36
+ "@noble/hashes": "^1.7.1",
37
+ "@scure/base": "^1.2.4",
38
38
  "@fleet-sdk/common": "^0.8.0"
39
39
  },
40
40
  "files": [