@fleet-sdk/crypto 0.3.2 → 0.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.
- package/CHANGELOG.md +15 -0
- package/dist/index.d.mts +16 -3
- package/dist/index.d.ts +16 -3
- package/dist/{index.cjs.js → index.js} +46 -15
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +107 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +17 -10
- package/dist/index.cjs.js.map +0 -1
- package/dist/index.esm.js +0 -78
- package/dist/index.esm.js.map +0 -1
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# @fleet-sdk/crypto
|
2
2
|
|
3
|
+
## 0.4.0
|
4
|
+
|
5
|
+
### Minor Changes
|
6
|
+
|
7
|
+
- 70aea89: Add `bigintBE` coder
|
8
|
+
- 253d37a: Add `validateEcPoint()` function
|
9
|
+
|
10
|
+
## 0.3.4
|
11
|
+
|
12
|
+
### Patch Changes
|
13
|
+
|
14
|
+
- 9f02ca0: Fix ESM and CJS modules export
|
15
|
+
- Updated dependencies [9f02ca0]
|
16
|
+
- @fleet-sdk/common@0.3.4
|
17
|
+
|
3
18
|
## 0.3.2
|
4
19
|
|
5
20
|
### Patch Changes
|
package/dist/index.d.mts
CHANGED
@@ -2,8 +2,8 @@ import * as _scure_base from '@scure/base';
|
|
2
2
|
|
3
3
|
type BytesInput = Uint8Array | string;
|
4
4
|
interface Coder<F, T> {
|
5
|
-
encode(
|
6
|
-
decode(
|
5
|
+
encode(decoded: F): T;
|
6
|
+
decode(encoded: T): F;
|
7
7
|
}
|
8
8
|
interface BytesCoder extends Coder<Uint8Array, string> {
|
9
9
|
/**
|
@@ -23,13 +23,26 @@ declare const hex: BytesCoder;
|
|
23
23
|
|
24
24
|
declare const utf8: BytesCoder;
|
25
25
|
|
26
|
+
/**
|
27
|
+
* A coder for Big Endian `BigInt` <> `Uint8Array` conversion..
|
28
|
+
*/
|
29
|
+
declare const bigintBE: Coder<Uint8Array, bigint>;
|
30
|
+
|
26
31
|
declare const base58check: _scure_base.BytesCoder;
|
27
32
|
declare const base58: BytesCoder;
|
28
33
|
declare const base64: BytesCoder;
|
29
34
|
|
35
|
+
/**
|
36
|
+
* Validate Elliptic Curve point
|
37
|
+
*
|
38
|
+
* @param pointBytes EC point bytes
|
39
|
+
* @returns True if the point is valid
|
40
|
+
*/
|
41
|
+
declare function validateEcPoint(pointBytes: Uint8Array): boolean;
|
42
|
+
|
30
43
|
/**
|
31
44
|
* Secure PRNG from "@noble/hashes". Uses crypto.getRandomValues, which defers to OS.
|
32
45
|
*/
|
33
46
|
declare const randomBytes: (bytesLength?: number) => Uint8Array;
|
34
47
|
|
35
|
-
export { BytesCoder, BytesInput, Coder, base58, base58check, base64, blake2b256, hex, randomBytes, sha256, utf8 };
|
48
|
+
export { BytesCoder, BytesInput, Coder, base58, base58check, base64, bigintBE, blake2b256, hex, randomBytes, sha256, utf8, validateEcPoint };
|
package/dist/index.d.ts
CHANGED
@@ -2,8 +2,8 @@ import * as _scure_base from '@scure/base';
|
|
2
2
|
|
3
3
|
type BytesInput = Uint8Array | string;
|
4
4
|
interface Coder<F, T> {
|
5
|
-
encode(
|
6
|
-
decode(
|
5
|
+
encode(decoded: F): T;
|
6
|
+
decode(encoded: T): F;
|
7
7
|
}
|
8
8
|
interface BytesCoder extends Coder<Uint8Array, string> {
|
9
9
|
/**
|
@@ -23,13 +23,26 @@ declare const hex: BytesCoder;
|
|
23
23
|
|
24
24
|
declare const utf8: BytesCoder;
|
25
25
|
|
26
|
+
/**
|
27
|
+
* A coder for Big Endian `BigInt` <> `Uint8Array` conversion..
|
28
|
+
*/
|
29
|
+
declare const bigintBE: Coder<Uint8Array, bigint>;
|
30
|
+
|
26
31
|
declare const base58check: _scure_base.BytesCoder;
|
27
32
|
declare const base58: BytesCoder;
|
28
33
|
declare const base64: BytesCoder;
|
29
34
|
|
35
|
+
/**
|
36
|
+
* Validate Elliptic Curve point
|
37
|
+
*
|
38
|
+
* @param pointBytes EC point bytes
|
39
|
+
* @returns True if the point is valid
|
40
|
+
*/
|
41
|
+
declare function validateEcPoint(pointBytes: Uint8Array): boolean;
|
42
|
+
|
30
43
|
/**
|
31
44
|
* Secure PRNG from "@noble/hashes". Uses crypto.getRandomValues, which defers to OS.
|
32
45
|
*/
|
33
46
|
declare const randomBytes: (bytesLength?: number) => Uint8Array;
|
34
47
|
|
35
|
-
export { BytesCoder, BytesInput, Coder, base58, base58check, base64, blake2b256, hex, randomBytes, sha256, utf8 };
|
48
|
+
export { BytesCoder, BytesInput, Coder, base58, base58check, base64, bigintBE, blake2b256, hex, randomBytes, sha256, utf8, validateEcPoint };
|
@@ -10,31 +10,31 @@ var common = require('@fleet-sdk/common');
|
|
10
10
|
var HEXES = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0"));
|
11
11
|
function bytesToHex(bytes) {
|
12
12
|
common.assertInstanceOf(bytes, Uint8Array);
|
13
|
-
let
|
13
|
+
let hex3 = "";
|
14
14
|
for (let i = 0, len = bytes.length; i < len; i++) {
|
15
|
-
|
15
|
+
hex3 += HEXES[bytes[i]];
|
16
16
|
}
|
17
|
-
return
|
17
|
+
return hex3;
|
18
18
|
}
|
19
|
-
function hexToBytes(
|
20
|
-
common.assertTypeOf(
|
21
|
-
common.assert(
|
22
|
-
const
|
23
|
-
|
24
|
-
|
25
|
-
const
|
19
|
+
function hexToBytes(hex3) {
|
20
|
+
common.assertTypeOf(hex3, "string");
|
21
|
+
common.assert(hex3.length % 2 === 0, "Invalid hex padding.");
|
22
|
+
const len = hex3.length / 2;
|
23
|
+
const bytes = new Uint8Array(len);
|
24
|
+
for (let i = 0, j = 0; i < len; i++) {
|
25
|
+
const n1 = charCodeToBase16(hex3.charCodeAt(j++));
|
26
|
+
const n2 = charCodeToBase16(hex3.charCodeAt(j++));
|
26
27
|
bytes[i] = n1 * 16 + n2;
|
27
28
|
}
|
28
29
|
return bytes;
|
29
30
|
}
|
30
31
|
function charCodeToBase16(char) {
|
31
|
-
if (char >= 48 /* ZERO */ && char <= 57 /* NINE */)
|
32
|
+
if (char >= 48 /* ZERO */ && char <= 57 /* NINE */)
|
32
33
|
return char - 48 /* ZERO */;
|
33
|
-
|
34
|
+
if (char >= 65 /* A_UP */ && char <= 70 /* F_UP */)
|
34
35
|
return char - (65 /* A_UP */ - 10);
|
35
|
-
|
36
|
+
if (char >= 97 /* A_LO */ && char <= 102 /* F_LO */)
|
36
37
|
return char - (97 /* A_LO */ - 10);
|
37
|
-
}
|
38
38
|
throw new Error("Invalid byte sequence.");
|
39
39
|
}
|
40
40
|
var hex = {
|
@@ -53,6 +53,22 @@ var utf8 = {
|
|
53
53
|
encode: bytesToUtf8,
|
54
54
|
decode: utf8ToBytes
|
55
55
|
};
|
56
|
+
var bigintBE = {
|
57
|
+
/**
|
58
|
+
* Encode a `Uint8Array` to a `BigInt`.
|
59
|
+
*/
|
60
|
+
encode(data) {
|
61
|
+
const hexInput = base.hex.encode(data);
|
62
|
+
return BigInt(hexInput == "" ? "0" : "0x" + hexInput);
|
63
|
+
},
|
64
|
+
/**
|
65
|
+
* Decode a `BigInt` to a `Uint8Array`.
|
66
|
+
*/
|
67
|
+
decode(data) {
|
68
|
+
const hexData = data.toString(16);
|
69
|
+
return base.hex.decode(hexData.length % 2 ? "0" + hexData : hexData);
|
70
|
+
}
|
71
|
+
};
|
56
72
|
|
57
73
|
// src/coders/index.ts
|
58
74
|
var base58check = base.base58check(sha256);
|
@@ -71,6 +87,19 @@ function blake2b256(message) {
|
|
71
87
|
function sha256(message) {
|
72
88
|
return sha256$1.sha256(ensureBytes(message));
|
73
89
|
}
|
90
|
+
function validateEcPoint(pointBytes) {
|
91
|
+
if (common.isEmpty(pointBytes))
|
92
|
+
return false;
|
93
|
+
switch (pointBytes[0]) {
|
94
|
+
case 2 /* Compressed */:
|
95
|
+
case 3 /* CompressedOdd */:
|
96
|
+
return pointBytes.length === 33;
|
97
|
+
case 4 /* Uncompressed */:
|
98
|
+
return pointBytes.length === 65;
|
99
|
+
default:
|
100
|
+
return false;
|
101
|
+
}
|
102
|
+
}
|
74
103
|
|
75
104
|
// src/index.ts
|
76
105
|
var randomBytes = utils.randomBytes;
|
@@ -78,10 +107,12 @@ var randomBytes = utils.randomBytes;
|
|
78
107
|
exports.base58 = base58;
|
79
108
|
exports.base58check = base58check;
|
80
109
|
exports.base64 = base64;
|
110
|
+
exports.bigintBE = bigintBE;
|
81
111
|
exports.blake2b256 = blake2b256;
|
82
112
|
exports.hex = hex;
|
83
113
|
exports.randomBytes = randomBytes;
|
84
114
|
exports.sha256 = sha256;
|
85
115
|
exports.utf8 = utf8;
|
116
|
+
exports.validateEcPoint = validateEcPoint;
|
86
117
|
//# sourceMappingURL=out.js.map
|
87
|
-
//# sourceMappingURL=index.
|
118
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/hashes.ts","../src/coders/index.ts","../src/coders/hex.ts","../src/coders/utf8.ts","../src/coders/bigintBE.ts","../src/ecpoint.ts"],"names":["hex","assertInstanceOf","assertTypeOf"],"mappings":"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","sourcesContent":["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","import { blake2b } from \"@noble/hashes/blake2b\";\nimport { sha256 as _sha256 } from \"@noble/hashes/sha256\";\nimport { hex } from \"./coders\";\nimport { BytesInput } from \"./types\";\n\nfunction ensureBytes(input: BytesInput): Uint8Array {\n if (input instanceof Uint8Array) return input;\n\n return hex.decode(input);\n}\n\nexport function blake2b256(message: BytesInput): Uint8Array {\n return blake2b(ensureBytes(message), { dkLen: 32 });\n}\n\nexport function sha256(message: BytesInput): Uint8Array {\n return _sha256(ensureBytes(message));\n}\n","import {\n base58check as base58checkCoder,\n base58 as base58Coder,\n base64 as base64Coder\n} from \"@scure/base\";\nimport { sha256 } from \"../hashes\";\nimport { 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 { assert, assertInstanceOf, assertTypeOf } from \"@fleet-sdk/common\";\nimport { BytesCoder } from \"../types\";\n\nconst HEXES = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, \"0\"));\n\nconst enum 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}\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 { 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 { 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 { 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"]}
|
package/dist/index.mjs
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
import { randomBytes as randomBytes$1 } from '@noble/hashes/utils';
|
2
|
+
import { blake2b } from '@noble/hashes/blake2b';
|
3
|
+
import { sha256 as sha256$1 } from '@noble/hashes/sha256';
|
4
|
+
import { base58check as base58check$1, hex as hex$1, base58 as base58$1, base64 as base64$1 } from '@scure/base';
|
5
|
+
import { isEmpty, assertInstanceOf, assertTypeOf, assert } from '@fleet-sdk/common';
|
6
|
+
|
7
|
+
// src/index.ts
|
8
|
+
var HEXES = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0"));
|
9
|
+
function bytesToHex(bytes) {
|
10
|
+
assertInstanceOf(bytes, Uint8Array);
|
11
|
+
let hex3 = "";
|
12
|
+
for (let i = 0, len = bytes.length; i < len; i++) {
|
13
|
+
hex3 += HEXES[bytes[i]];
|
14
|
+
}
|
15
|
+
return hex3;
|
16
|
+
}
|
17
|
+
function hexToBytes(hex3) {
|
18
|
+
assertTypeOf(hex3, "string");
|
19
|
+
assert(hex3.length % 2 === 0, "Invalid hex padding.");
|
20
|
+
const len = hex3.length / 2;
|
21
|
+
const bytes = new Uint8Array(len);
|
22
|
+
for (let i = 0, j = 0; i < len; i++) {
|
23
|
+
const n1 = charCodeToBase16(hex3.charCodeAt(j++));
|
24
|
+
const n2 = charCodeToBase16(hex3.charCodeAt(j++));
|
25
|
+
bytes[i] = n1 * 16 + n2;
|
26
|
+
}
|
27
|
+
return bytes;
|
28
|
+
}
|
29
|
+
function charCodeToBase16(char) {
|
30
|
+
if (char >= 48 /* ZERO */ && char <= 57 /* NINE */)
|
31
|
+
return char - 48 /* ZERO */;
|
32
|
+
if (char >= 65 /* A_UP */ && char <= 70 /* F_UP */)
|
33
|
+
return char - (65 /* A_UP */ - 10);
|
34
|
+
if (char >= 97 /* A_LO */ && char <= 102 /* F_LO */)
|
35
|
+
return char - (97 /* A_LO */ - 10);
|
36
|
+
throw new Error("Invalid byte sequence.");
|
37
|
+
}
|
38
|
+
var hex = {
|
39
|
+
encode: bytesToHex,
|
40
|
+
decode: hexToBytes
|
41
|
+
};
|
42
|
+
function bytesToUtf8(bytes) {
|
43
|
+
assertInstanceOf(bytes, Uint8Array);
|
44
|
+
return new TextDecoder().decode(bytes);
|
45
|
+
}
|
46
|
+
function utf8ToBytes(str) {
|
47
|
+
assertTypeOf(str, "string");
|
48
|
+
return new Uint8Array(new TextEncoder().encode(str));
|
49
|
+
}
|
50
|
+
var utf8 = {
|
51
|
+
encode: bytesToUtf8,
|
52
|
+
decode: utf8ToBytes
|
53
|
+
};
|
54
|
+
var bigintBE = {
|
55
|
+
/**
|
56
|
+
* Encode a `Uint8Array` to a `BigInt`.
|
57
|
+
*/
|
58
|
+
encode(data) {
|
59
|
+
const hexInput = hex$1.encode(data);
|
60
|
+
return BigInt(hexInput == "" ? "0" : "0x" + hexInput);
|
61
|
+
},
|
62
|
+
/**
|
63
|
+
* Decode a `BigInt` to a `Uint8Array`.
|
64
|
+
*/
|
65
|
+
decode(data) {
|
66
|
+
const hexData = data.toString(16);
|
67
|
+
return hex$1.decode(hexData.length % 2 ? "0" + hexData : hexData);
|
68
|
+
}
|
69
|
+
};
|
70
|
+
|
71
|
+
// src/coders/index.ts
|
72
|
+
var base58check = base58check$1(sha256);
|
73
|
+
var base58 = base58$1;
|
74
|
+
var base64 = base64$1;
|
75
|
+
|
76
|
+
// src/hashes.ts
|
77
|
+
function ensureBytes(input) {
|
78
|
+
if (input instanceof Uint8Array)
|
79
|
+
return input;
|
80
|
+
return hex.decode(input);
|
81
|
+
}
|
82
|
+
function blake2b256(message) {
|
83
|
+
return blake2b(ensureBytes(message), { dkLen: 32 });
|
84
|
+
}
|
85
|
+
function sha256(message) {
|
86
|
+
return sha256$1(ensureBytes(message));
|
87
|
+
}
|
88
|
+
function validateEcPoint(pointBytes) {
|
89
|
+
if (isEmpty(pointBytes))
|
90
|
+
return false;
|
91
|
+
switch (pointBytes[0]) {
|
92
|
+
case 2 /* Compressed */:
|
93
|
+
case 3 /* CompressedOdd */:
|
94
|
+
return pointBytes.length === 33;
|
95
|
+
case 4 /* Uncompressed */:
|
96
|
+
return pointBytes.length === 65;
|
97
|
+
default:
|
98
|
+
return false;
|
99
|
+
}
|
100
|
+
}
|
101
|
+
|
102
|
+
// src/index.ts
|
103
|
+
var randomBytes = randomBytes$1;
|
104
|
+
|
105
|
+
export { base58, base58check, base64, bigintBE, blake2b256, hex, randomBytes, sha256, utf8, validateEcPoint };
|
106
|
+
//# sourceMappingURL=out.js.map
|
107
|
+
//# sourceMappingURL=index.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/hashes.ts","../src/coders/index.ts","../src/coders/hex.ts","../src/coders/utf8.ts","../src/coders/bigintBE.ts","../src/ecpoint.ts"],"names":["hex","assertInstanceOf","assertTypeOf"],"mappings":"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","sourcesContent":["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","import { blake2b } from \"@noble/hashes/blake2b\";\nimport { sha256 as _sha256 } from \"@noble/hashes/sha256\";\nimport { hex } from \"./coders\";\nimport { BytesInput } from \"./types\";\n\nfunction ensureBytes(input: BytesInput): Uint8Array {\n if (input instanceof Uint8Array) return input;\n\n return hex.decode(input);\n}\n\nexport function blake2b256(message: BytesInput): Uint8Array {\n return blake2b(ensureBytes(message), { dkLen: 32 });\n}\n\nexport function sha256(message: BytesInput): Uint8Array {\n return _sha256(ensureBytes(message));\n}\n","import {\n base58check as base58checkCoder,\n base58 as base58Coder,\n base64 as base64Coder\n} from \"@scure/base\";\nimport { sha256 } from \"../hashes\";\nimport { 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 { assert, assertInstanceOf, assertTypeOf } from \"@fleet-sdk/common\";\nimport { BytesCoder } from \"../types\";\n\nconst HEXES = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, \"0\"));\n\nconst enum 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}\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 { 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 { 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 { 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"]}
|
package/package.json
CHANGED
@@ -1,16 +1,23 @@
|
|
1
1
|
{
|
2
2
|
"name": "@fleet-sdk/crypto",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.4.0",
|
4
4
|
"description": "Ergo blockchain crypto primitives.",
|
5
|
-
"main": "./dist/index.
|
6
|
-
"module": "./dist/index.
|
5
|
+
"main": "./dist/index.js",
|
6
|
+
"module": "./dist/index.mjs",
|
7
7
|
"types": "./dist/index.d.ts",
|
8
8
|
"exports": {
|
9
|
-
"
|
10
|
-
|
11
|
-
|
9
|
+
".": {
|
10
|
+
"import": {
|
11
|
+
"types": "./dist/index.d.mts",
|
12
|
+
"default": "./dist/index.mjs"
|
13
|
+
},
|
14
|
+
"require": {
|
15
|
+
"types": "./dist/index.d.ts",
|
16
|
+
"default": "./dist/index.js"
|
17
|
+
}
|
18
|
+
}
|
12
19
|
},
|
13
|
-
"sideEffects":
|
20
|
+
"sideEffects": false,
|
14
21
|
"repository": "fleet-sdk/fleet",
|
15
22
|
"license": "MIT",
|
16
23
|
"publishConfig": {
|
@@ -26,9 +33,9 @@
|
|
26
33
|
"node": ">=14"
|
27
34
|
},
|
28
35
|
"dependencies": {
|
29
|
-
"@noble/hashes": "^1.
|
30
|
-
"@scure/base": "^1.1.
|
31
|
-
"@fleet-sdk/common": "^0.3.
|
36
|
+
"@noble/hashes": "^1.4.0",
|
37
|
+
"@scure/base": "^1.1.6",
|
38
|
+
"@fleet-sdk/common": "^0.3.4"
|
32
39
|
},
|
33
40
|
"files": [
|
34
41
|
"dist",
|
package/dist/index.cjs.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/hashes.ts","../src/coders/index.ts","../src/coders/hex.ts","../src/coders/utf8.ts"],"names":["hex","assertInstanceOf","assertTypeOf"],"mappings":";AAAA,SAAS,eAAe,wBAAwB;;;ACAhD,SAAS,eAAe;AACxB,SAAS,UAAU,eAAe;;;ACDlC;AAAA,EACE,eAAe;AAAA,EACf,UAAU;AAAA,EACV,UAAU;AAAA,OACL;;;ACJP,SAAS,QAAQ,kBAAkB,oBAAoB;AAGvD,IAAM,QAAQ,MAAM,KAAK,EAAE,QAAQ,IAAI,GAAG,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAWnF,SAAS,WAAW,OAA2B;AAC7C,mBAAiB,OAAO,UAAU;AAElC,MAAIA,OAAM;AACV,WAAS,IAAI,GAAG,MAAM,MAAM,QAAQ,IAAI,KAAK,KAAK;AAChD,IAAAA,QAAO,MAAM,MAAM,CAAC,CAAC;AAAA,EACvB;AAEA,SAAOA;AACT;AAEA,SAAS,WAAWA,MAAyB;AAC3C,eAAaA,MAAK,QAAQ;AAC1B,SAAOA,KAAI,SAAS,MAAM,GAAG,sBAAsB;AAEnD,QAAM,QAAQ,IAAI,WAAWA,KAAI,SAAS,CAAC;AAC3C,WAAS,IAAI,GAAG,IAAI,GAAG,MAAM,MAAM,QAAQ,IAAI,KAAK,KAAK;AACvD,UAAM,KAAK,iBAAiBA,KAAI,WAAW,GAAG,CAAC;AAC/C,UAAM,KAAK,iBAAiBA,KAAI,WAAW,GAAG,CAAC;AAC/C,UAAM,CAAC,IAAI,KAAK,KAAK;AAAA,EACvB;AAEA,SAAO;AACT;AAEA,SAAS,iBAAiB,MAAc;AACtC,MAAI,QAAQ,iBAAoB,QAAQ,eAAkB;AACxD,WAAO,OAAO;AAAA,EAChB,WAAW,QAAQ,iBAAoB,QAAQ,eAAkB;AAC/D,WAAO,QAAQ,gBAAmB;AAAA,EACpC,WAAW,QAAQ,iBAAoB,QAAQ,gBAAkB;AAC/D,WAAO,QAAQ,gBAAmB;AAAA,EACpC;AAEA,QAAM,IAAI,MAAM,wBAAwB;AAC1C;AAEO,IAAM,MAAkB;AAAA,EAC7B,QAAQ;AAAA,EACR,QAAQ;AACV;;;ACtDA,SAAS,oBAAAC,mBAAkB,gBAAAC,qBAAoB;AAG/C,SAAS,YAAY,OAA2B;AAC9C,EAAAD,kBAAiB,OAAO,UAAU;AAElC,SAAO,IAAI,YAAY,EAAE,OAAO,KAAK;AACvC;AAEA,SAAS,YAAY,KAAyB;AAC5C,EAAAC,cAAa,KAAK,QAAQ;AAE1B,SAAO,IAAI,WAAW,IAAI,YAAY,EAAE,OAAO,GAAG,CAAC;AACrD;AAEO,IAAM,OAAmB;AAAA,EAC9B,QAAQ;AAAA,EACR,QAAQ;AACV;;;AFVO,IAAM,cAAc,iBAAiB,MAAM;AAC3C,IAAM,SAAS;AACf,IAAM,SAAS;;;ADLtB,SAAS,YAAY,OAA+B;AAClD,MAAI,iBAAiB;AAAY,WAAO;AAExC,SAAO,IAAI,OAAO,KAAK;AACzB;AAEO,SAAS,WAAW,SAAiC;AAC1D,SAAO,QAAQ,YAAY,OAAO,GAAG,EAAE,OAAO,GAAG,CAAC;AACpD;AAEO,SAAS,OAAO,SAAiC;AACtD,SAAO,QAAQ,YAAY,OAAO,CAAC;AACrC;;;ADZO,IAAM,cAAc","sourcesContent":["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\";\n","import { blake2b } from \"@noble/hashes/blake2b\";\nimport { sha256 as _sha256 } from \"@noble/hashes/sha256\";\nimport { hex } from \"./coders\";\nimport { BytesInput } from \"./types\";\n\nfunction ensureBytes(input: BytesInput): Uint8Array {\n if (input instanceof Uint8Array) return input;\n\n return hex.decode(input);\n}\n\nexport function blake2b256(message: BytesInput): Uint8Array {\n return blake2b(ensureBytes(message), { dkLen: 32 });\n}\n\nexport function sha256(message: BytesInput): Uint8Array {\n return _sha256(ensureBytes(message));\n}\n","import {\n base58check as base58checkCoder,\n base58 as base58Coder,\n base64 as base64Coder\n} from \"@scure/base\";\nimport { sha256 } from \"../hashes\";\nimport { 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\";\n","import { assert, assertInstanceOf, assertTypeOf } from \"@fleet-sdk/common\";\nimport { BytesCoder } from \"../types\";\n\nconst HEXES = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, \"0\"));\n\nconst enum HexCharCode {\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}\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 bytes = new Uint8Array(hex.length / 2);\n for (let i = 0, j = 0, len = bytes.length; 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 >= HexCharCode.ZERO && char <= HexCharCode.NINE) {\n return char - HexCharCode.ZERO;\n } else if (char >= HexCharCode.A_UP && char <= HexCharCode.F_UP) {\n return char - (HexCharCode.A_UP - 10);\n } else if (char >= HexCharCode.A_LO && char <= HexCharCode.F_LO) {\n return char - (HexCharCode.A_LO - 10);\n }\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 { 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"]}
|
package/dist/index.esm.js
DELETED
@@ -1,78 +0,0 @@
|
|
1
|
-
import { randomBytes as randomBytes$1 } from '@noble/hashes/utils';
|
2
|
-
import { blake2b } from '@noble/hashes/blake2b';
|
3
|
-
import { sha256 as sha256$1 } from '@noble/hashes/sha256';
|
4
|
-
import { base58check as base58check$1, base58 as base58$1, base64 as base64$1 } from '@scure/base';
|
5
|
-
import { assertInstanceOf, assertTypeOf, assert } from '@fleet-sdk/common';
|
6
|
-
|
7
|
-
// src/index.ts
|
8
|
-
var HEXES = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0"));
|
9
|
-
function bytesToHex(bytes) {
|
10
|
-
assertInstanceOf(bytes, Uint8Array);
|
11
|
-
let hex2 = "";
|
12
|
-
for (let i = 0, len = bytes.length; i < len; i++) {
|
13
|
-
hex2 += HEXES[bytes[i]];
|
14
|
-
}
|
15
|
-
return hex2;
|
16
|
-
}
|
17
|
-
function hexToBytes(hex2) {
|
18
|
-
assertTypeOf(hex2, "string");
|
19
|
-
assert(hex2.length % 2 === 0, "Invalid hex padding.");
|
20
|
-
const bytes = new Uint8Array(hex2.length / 2);
|
21
|
-
for (let i = 0, j = 0, len = bytes.length; i < len; i++) {
|
22
|
-
const n1 = charCodeToBase16(hex2.charCodeAt(j++));
|
23
|
-
const n2 = charCodeToBase16(hex2.charCodeAt(j++));
|
24
|
-
bytes[i] = n1 * 16 + n2;
|
25
|
-
}
|
26
|
-
return bytes;
|
27
|
-
}
|
28
|
-
function charCodeToBase16(char) {
|
29
|
-
if (char >= 48 /* ZERO */ && char <= 57 /* NINE */) {
|
30
|
-
return char - 48 /* ZERO */;
|
31
|
-
} else if (char >= 65 /* A_UP */ && char <= 70 /* F_UP */) {
|
32
|
-
return char - (65 /* A_UP */ - 10);
|
33
|
-
} else if (char >= 97 /* A_LO */ && char <= 102 /* F_LO */) {
|
34
|
-
return char - (97 /* A_LO */ - 10);
|
35
|
-
}
|
36
|
-
throw new Error("Invalid byte sequence.");
|
37
|
-
}
|
38
|
-
var hex = {
|
39
|
-
encode: bytesToHex,
|
40
|
-
decode: hexToBytes
|
41
|
-
};
|
42
|
-
function bytesToUtf8(bytes) {
|
43
|
-
assertInstanceOf(bytes, Uint8Array);
|
44
|
-
return new TextDecoder().decode(bytes);
|
45
|
-
}
|
46
|
-
function utf8ToBytes(str) {
|
47
|
-
assertTypeOf(str, "string");
|
48
|
-
return new Uint8Array(new TextEncoder().encode(str));
|
49
|
-
}
|
50
|
-
var utf8 = {
|
51
|
-
encode: bytesToUtf8,
|
52
|
-
decode: utf8ToBytes
|
53
|
-
};
|
54
|
-
|
55
|
-
// src/coders/index.ts
|
56
|
-
var base58check = base58check$1(sha256);
|
57
|
-
var base58 = base58$1;
|
58
|
-
var base64 = base64$1;
|
59
|
-
|
60
|
-
// src/hashes.ts
|
61
|
-
function ensureBytes(input) {
|
62
|
-
if (input instanceof Uint8Array)
|
63
|
-
return input;
|
64
|
-
return hex.decode(input);
|
65
|
-
}
|
66
|
-
function blake2b256(message) {
|
67
|
-
return blake2b(ensureBytes(message), { dkLen: 32 });
|
68
|
-
}
|
69
|
-
function sha256(message) {
|
70
|
-
return sha256$1(ensureBytes(message));
|
71
|
-
}
|
72
|
-
|
73
|
-
// src/index.ts
|
74
|
-
var randomBytes = randomBytes$1;
|
75
|
-
|
76
|
-
export { base58, base58check, base64, blake2b256, hex, randomBytes, sha256, utf8 };
|
77
|
-
//# sourceMappingURL=out.js.map
|
78
|
-
//# sourceMappingURL=index.esm.js.map
|
package/dist/index.esm.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/hashes.ts","../src/coders/index.ts","../src/coders/hex.ts","../src/coders/utf8.ts"],"names":["hex","assertInstanceOf","assertTypeOf"],"mappings":";AAAA,SAAS,eAAe,wBAAwB;;;ACAhD,SAAS,eAAe;AACxB,SAAS,UAAU,eAAe;;;ACDlC;AAAA,EACE,eAAe;AAAA,EACf,UAAU;AAAA,EACV,UAAU;AAAA,OACL;;;ACJP,SAAS,QAAQ,kBAAkB,oBAAoB;AAGvD,IAAM,QAAQ,MAAM,KAAK,EAAE,QAAQ,IAAI,GAAG,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;AAWnF,SAAS,WAAW,OAA2B;AAC7C,mBAAiB,OAAO,UAAU;AAElC,MAAIA,OAAM;AACV,WAAS,IAAI,GAAG,MAAM,MAAM,QAAQ,IAAI,KAAK,KAAK;AAChD,IAAAA,QAAO,MAAM,MAAM,CAAC,CAAC;AAAA,EACvB;AAEA,SAAOA;AACT;AAEA,SAAS,WAAWA,MAAyB;AAC3C,eAAaA,MAAK,QAAQ;AAC1B,SAAOA,KAAI,SAAS,MAAM,GAAG,sBAAsB;AAEnD,QAAM,QAAQ,IAAI,WAAWA,KAAI,SAAS,CAAC;AAC3C,WAAS,IAAI,GAAG,IAAI,GAAG,MAAM,MAAM,QAAQ,IAAI,KAAK,KAAK;AACvD,UAAM,KAAK,iBAAiBA,KAAI,WAAW,GAAG,CAAC;AAC/C,UAAM,KAAK,iBAAiBA,KAAI,WAAW,GAAG,CAAC;AAC/C,UAAM,CAAC,IAAI,KAAK,KAAK;AAAA,EACvB;AAEA,SAAO;AACT;AAEA,SAAS,iBAAiB,MAAc;AACtC,MAAI,QAAQ,iBAAoB,QAAQ,eAAkB;AACxD,WAAO,OAAO;AAAA,EAChB,WAAW,QAAQ,iBAAoB,QAAQ,eAAkB;AAC/D,WAAO,QAAQ,gBAAmB;AAAA,EACpC,WAAW,QAAQ,iBAAoB,QAAQ,gBAAkB;AAC/D,WAAO,QAAQ,gBAAmB;AAAA,EACpC;AAEA,QAAM,IAAI,MAAM,wBAAwB;AAC1C;AAEO,IAAM,MAAkB;AAAA,EAC7B,QAAQ;AAAA,EACR,QAAQ;AACV;;;ACtDA,SAAS,oBAAAC,mBAAkB,gBAAAC,qBAAoB;AAG/C,SAAS,YAAY,OAA2B;AAC9C,EAAAD,kBAAiB,OAAO,UAAU;AAElC,SAAO,IAAI,YAAY,EAAE,OAAO,KAAK;AACvC;AAEA,SAAS,YAAY,KAAyB;AAC5C,EAAAC,cAAa,KAAK,QAAQ;AAE1B,SAAO,IAAI,WAAW,IAAI,YAAY,EAAE,OAAO,GAAG,CAAC;AACrD;AAEO,IAAM,OAAmB;AAAA,EAC9B,QAAQ;AAAA,EACR,QAAQ;AACV;;;AFVO,IAAM,cAAc,iBAAiB,MAAM;AAC3C,IAAM,SAAS;AACf,IAAM,SAAS;;;ADLtB,SAAS,YAAY,OAA+B;AAClD,MAAI,iBAAiB;AAAY,WAAO;AAExC,SAAO,IAAI,OAAO,KAAK;AACzB;AAEO,SAAS,WAAW,SAAiC;AAC1D,SAAO,QAAQ,YAAY,OAAO,GAAG,EAAE,OAAO,GAAG,CAAC;AACpD;AAEO,SAAS,OAAO,SAAiC;AACtD,SAAO,QAAQ,YAAY,OAAO,CAAC;AACrC;;;ADZO,IAAM,cAAc","sourcesContent":["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\";\n","import { blake2b } from \"@noble/hashes/blake2b\";\nimport { sha256 as _sha256 } from \"@noble/hashes/sha256\";\nimport { hex } from \"./coders\";\nimport { BytesInput } from \"./types\";\n\nfunction ensureBytes(input: BytesInput): Uint8Array {\n if (input instanceof Uint8Array) return input;\n\n return hex.decode(input);\n}\n\nexport function blake2b256(message: BytesInput): Uint8Array {\n return blake2b(ensureBytes(message), { dkLen: 32 });\n}\n\nexport function sha256(message: BytesInput): Uint8Array {\n return _sha256(ensureBytes(message));\n}\n","import {\n base58check as base58checkCoder,\n base58 as base58Coder,\n base64 as base64Coder\n} from \"@scure/base\";\nimport { sha256 } from \"../hashes\";\nimport { 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\";\n","import { assert, assertInstanceOf, assertTypeOf } from \"@fleet-sdk/common\";\nimport { BytesCoder } from \"../types\";\n\nconst HEXES = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, \"0\"));\n\nconst enum HexCharCode {\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}\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 bytes = new Uint8Array(hex.length / 2);\n for (let i = 0, j = 0, len = bytes.length; 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 >= HexCharCode.ZERO && char <= HexCharCode.NINE) {\n return char - HexCharCode.ZERO;\n } else if (char >= HexCharCode.A_UP && char <= HexCharCode.F_UP) {\n return char - (HexCharCode.A_UP - 10);\n } else if (char >= HexCharCode.A_LO && char <= HexCharCode.F_LO) {\n return char - (HexCharCode.A_LO - 10);\n }\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 { 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"]}
|