@activeledger/sdk-web 2.0.1 → 2.1.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/lib/crypto.d.ts +3 -3
- package/lib/crypto.d.ts.map +1 -1
- package/lib/crypto.js +36 -3
- package/lib/crypto.js.map +1 -1
- package/package.json +4 -3
package/lib/crypto.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import { ICryptoProvider, IKeyHandleDetails, IKeyHandler } from "@activeledger/s
|
|
|
2
2
|
export declare function toHex(bytes: Uint8Array): string;
|
|
3
3
|
export declare function fromHex(hex: string): Uint8Array;
|
|
4
4
|
export declare class WebCryptoProvider implements ICryptoProvider {
|
|
5
|
-
generate(compressed?: boolean): IKeyHandler;
|
|
6
|
-
sign(data: string, prv: IKeyHandleDetails): string;
|
|
7
|
-
verify(data: string, signature: string, pub: IKeyHandleDetails): boolean;
|
|
5
|
+
generate(compressed?: boolean, type?: string): IKeyHandler;
|
|
6
|
+
sign(data: string, prv: IKeyHandleDetails, type?: string): string;
|
|
7
|
+
verify(data: string, signature: string, pub: IKeyHandleDetails, type?: string): boolean;
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=crypto.d.ts.map
|
package/lib/crypto.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAMzF,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAI/C;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAO/C;AAqFD,qBAAa,iBAAkB,YAAW,eAAe;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW;IAuB1D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAkBjE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;CAyB/F"}
|
package/lib/crypto.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { secp256k1 } from "@noble/curves/secp256k1.js";
|
|
2
|
+
import { ml_dsa65 } from "@noble/post-quantum/ml-dsa.js";
|
|
3
|
+
import { falcon512 } from "@noble/post-quantum/falcon.js";
|
|
2
4
|
const textEncoder = new TextEncoder();
|
|
3
5
|
export function toHex(bytes) {
|
|
4
6
|
return Array.from(bytes)
|
|
@@ -45,8 +47,22 @@ function fromBase64(b64) {
|
|
|
45
47
|
}
|
|
46
48
|
return new Uint8Array(bytes);
|
|
47
49
|
}
|
|
50
|
+
const POST_QUANTUM = {
|
|
51
|
+
"ml-dsa-65": ml_dsa65,
|
|
52
|
+
"falcon-512": falcon512,
|
|
53
|
+
};
|
|
48
54
|
export class WebCryptoProvider {
|
|
49
|
-
generate(compressed) {
|
|
55
|
+
generate(compressed, type) {
|
|
56
|
+
const pq = type ? POST_QUANTUM[type] : undefined;
|
|
57
|
+
if (pq) {
|
|
58
|
+
const seed = new Uint8Array(pq.lengths.seed);
|
|
59
|
+
crypto.getRandomValues(seed);
|
|
60
|
+
const keys = pq.keygen(seed);
|
|
61
|
+
return {
|
|
62
|
+
prv: { pkcs8pem: toBase64(keys.secretKey) },
|
|
63
|
+
pub: { pkcs8pem: toBase64(keys.publicKey) },
|
|
64
|
+
};
|
|
65
|
+
}
|
|
50
66
|
const secretKey = secp256k1.utils.randomSecretKey();
|
|
51
67
|
const publicKey = secp256k1.getPublicKey(secretKey, compressed ? true : false);
|
|
52
68
|
return {
|
|
@@ -54,13 +70,30 @@ export class WebCryptoProvider {
|
|
|
54
70
|
pub: { pkcs8pem: "0x" + toHex(publicKey) },
|
|
55
71
|
};
|
|
56
72
|
}
|
|
57
|
-
sign(data, prv) {
|
|
73
|
+
sign(data, prv, type) {
|
|
74
|
+
const pq = type ? POST_QUANTUM[type] : undefined;
|
|
75
|
+
if (pq) {
|
|
76
|
+
const entropy = new Uint8Array(pq.lengths.seed);
|
|
77
|
+
crypto.getRandomValues(entropy);
|
|
78
|
+
return toBase64(pq.sign(textEncoder.encode(data), fromBase64(prv.pkcs8pem), {
|
|
79
|
+
extraEntropy: entropy,
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
58
82
|
const message = textEncoder.encode(data);
|
|
59
83
|
const secretKey = fromHex(prv.pkcs8pem);
|
|
60
84
|
const signature = secp256k1.sign(message, secretKey, { format: "der" });
|
|
61
85
|
return toBase64(signature);
|
|
62
86
|
}
|
|
63
|
-
verify(data, signature, pub) {
|
|
87
|
+
verify(data, signature, pub, type) {
|
|
88
|
+
const pq = type ? POST_QUANTUM[type] : undefined;
|
|
89
|
+
if (pq) {
|
|
90
|
+
try {
|
|
91
|
+
return pq.verify(fromBase64(signature), textEncoder.encode(data), fromBase64(pub.pkcs8pem));
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
64
97
|
const message = textEncoder.encode(data);
|
|
65
98
|
const publicKey = fromHex(pub.pkcs8pem);
|
|
66
99
|
const sig = fromBase64(signature);
|
package/lib/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@activeledger/sdk-web",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Activeledger SDK for browsers and React Native - secp256k1 signing via @noble/curves (audited, pure JS, no native/WebCrypto dependency)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -37,13 +37,14 @@
|
|
|
37
37
|
"lib"
|
|
38
38
|
],
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@activeledger/sdk-core": "^2.0
|
|
40
|
+
"@activeledger/sdk-core": "^2.1.0",
|
|
41
41
|
"@noble/curves": "^2.4.0",
|
|
42
42
|
"@noble/hashes": "^2.4.0",
|
|
43
|
+
"@noble/post-quantum": "^0.7.1",
|
|
43
44
|
"@scure/bip39": "^2.4.0"
|
|
44
45
|
},
|
|
45
46
|
"devDependencies": {
|
|
46
47
|
"typescript": "^5.5.4"
|
|
47
48
|
},
|
|
48
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "e3fd2976f03845b8de3556518afc930ef9ea0863"
|
|
49
50
|
}
|