@bsv/sdk 1.9.24 → 1.9.29
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/dist/cjs/package.json +1 -1
- package/dist/cjs/src/primitives/AESGCM.js +160 -76
- package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
- package/dist/cjs/src/primitives/Point.js +41 -18
- package/dist/cjs/src/primitives/Point.js.map +1 -1
- package/dist/cjs/src/primitives/SymmetricKey.js +20 -19
- package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
- package/dist/cjs/src/primitives/hex.js +1 -3
- package/dist/cjs/src/primitives/hex.js.map +1 -1
- package/dist/cjs/src/primitives/utils.js +10 -0
- package/dist/cjs/src/primitives/utils.js.map +1 -1
- package/dist/cjs/src/totp/totp.js +3 -1
- package/dist/cjs/src/totp/totp.js.map +1 -1
- package/dist/cjs/src/wallet/ProtoWallet.js +4 -2
- package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/primitives/AESGCM.js +158 -75
- package/dist/esm/src/primitives/AESGCM.js.map +1 -1
- package/dist/esm/src/primitives/Point.js +41 -18
- package/dist/esm/src/primitives/Point.js.map +1 -1
- package/dist/esm/src/primitives/SymmetricKey.js +20 -19
- package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
- package/dist/esm/src/primitives/hex.js +1 -3
- package/dist/esm/src/primitives/hex.js.map +1 -1
- package/dist/esm/src/primitives/utils.js +9 -0
- package/dist/esm/src/primitives/utils.js.map +1 -1
- package/dist/esm/src/totp/totp.js +3 -1
- package/dist/esm/src/totp/totp.js.map +1 -1
- package/dist/esm/src/wallet/ProtoWallet.js +4 -2
- package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/src/primitives/AESGCM.d.ts +59 -9
- package/dist/types/src/primitives/AESGCM.d.ts.map +1 -1
- package/dist/types/src/primitives/Point.d.ts +1 -0
- package/dist/types/src/primitives/Point.d.ts.map +1 -1
- package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
- package/dist/types/src/primitives/hex.d.ts.map +1 -1
- package/dist/types/src/primitives/utils.d.ts +1 -0
- package/dist/types/src/primitives/utils.d.ts.map +1 -1
- package/dist/types/src/totp/totp.d.ts.map +1 -1
- package/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +3 -3
- package/dist/umd/bundle.js.map +1 -1
- package/docs/reference/primitives.md +206 -60
- package/package.json +1 -1
- package/src/primitives/AESGCM.ts +225 -103
- package/src/primitives/Point.ts +67 -20
- package/src/primitives/SymmetricKey.ts +28 -20
- package/src/primitives/__tests/AESGCM.test.ts +254 -354
- package/src/primitives/__tests/ECDSA.test.ts +27 -0
- package/src/primitives/__tests/Point.test.ts +52 -0
- package/src/primitives/__tests/utils.test.ts +24 -1
- package/src/primitives/hex.ts +1 -3
- package/src/primitives/utils.ts +10 -0
- package/src/totp/__tests/totp.test.ts +21 -0
- package/src/totp/totp.ts +9 -1
- package/src/wallet/ProtoWallet.ts +8 -3
- package/src/wallet/__tests/ProtoWallet.test.ts +55 -34
|
@@ -41,19 +41,27 @@ export default class SymmetricKey extends BigNumber {
|
|
|
41
41
|
* const encryptedMessage = key.encrypt('plainText', 'utf8');
|
|
42
42
|
*/
|
|
43
43
|
encrypt (msg: number[] | string, enc?: 'hex'): string | number[] {
|
|
44
|
-
const iv = Random(32)
|
|
45
|
-
|
|
46
|
-
const keyBytes = this.toArray('be', 32)
|
|
47
|
-
|
|
44
|
+
const iv = new Uint8Array(Random(32))
|
|
45
|
+
const msgBytes = new Uint8Array(toArray(msg, enc))
|
|
46
|
+
const keyBytes = new Uint8Array(this.toArray('be', 32))
|
|
47
|
+
|
|
48
|
+
const { result, authenticationTag } = AESGCM(
|
|
49
|
+
msgBytes,
|
|
50
|
+
iv,
|
|
51
|
+
keyBytes
|
|
52
|
+
)
|
|
53
|
+
|
|
48
54
|
const totalLength = iv.length + result.length + authenticationTag.length
|
|
49
|
-
const combined = new
|
|
55
|
+
const combined = new Uint8Array(totalLength)
|
|
50
56
|
let offset = 0
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
|
|
58
|
+
combined.set(iv, offset)
|
|
59
|
+
offset += iv.length
|
|
60
|
+
combined.set(result, offset)
|
|
61
|
+
offset += result.length
|
|
62
|
+
combined.set(authenticationTag, offset)
|
|
63
|
+
|
|
64
|
+
return encode(Array.from(combined), enc)
|
|
57
65
|
}
|
|
58
66
|
|
|
59
67
|
/**
|
|
@@ -73,30 +81,30 @@ export default class SymmetricKey extends BigNumber {
|
|
|
73
81
|
* @throws {Error} Will throw an error if the decryption fails, likely due to message tampering or incorrect decryption key.
|
|
74
82
|
*/
|
|
75
83
|
decrypt (msg: number[] | string, enc?: 'hex' | 'utf8'): string | number[] {
|
|
76
|
-
|
|
84
|
+
const msgBytes = new Uint8Array(toArray(msg, enc))
|
|
77
85
|
|
|
78
86
|
const ivLength = 32
|
|
79
87
|
const tagLength = 16
|
|
80
88
|
|
|
81
|
-
if (
|
|
89
|
+
if (msgBytes.length < ivLength + tagLength) {
|
|
82
90
|
throw new Error('Ciphertext too short')
|
|
83
91
|
}
|
|
84
92
|
|
|
85
|
-
const iv =
|
|
86
|
-
const tagStart =
|
|
87
|
-
const ciphertext =
|
|
88
|
-
const messageTag =
|
|
93
|
+
const iv = msgBytes.slice(0, ivLength)
|
|
94
|
+
const tagStart = msgBytes.length - tagLength
|
|
95
|
+
const ciphertext = msgBytes.slice(ivLength, tagStart)
|
|
96
|
+
const messageTag = msgBytes.slice(tagStart)
|
|
89
97
|
|
|
98
|
+
const keyBytes = new Uint8Array(this.toArray('be', 32))
|
|
90
99
|
const result = AESGCMDecrypt(
|
|
91
100
|
ciphertext,
|
|
92
|
-
[],
|
|
93
101
|
iv,
|
|
94
102
|
messageTag,
|
|
95
|
-
|
|
103
|
+
keyBytes
|
|
96
104
|
)
|
|
97
105
|
if (result === null) {
|
|
98
106
|
throw new Error('Decryption failed!')
|
|
99
107
|
}
|
|
100
|
-
return encode(result, enc)
|
|
108
|
+
return encode(Array.from(result), enc)
|
|
101
109
|
}
|
|
102
110
|
}
|