@activeledger/sdk-web 2.0.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/LICENSE +21 -0
- package/lib/crypto.d.ts +9 -0
- package/lib/crypto.d.ts.map +1 -0
- package/lib/crypto.js +70 -0
- package/lib/crypto.js.map +1 -0
- package/lib/events.d.ts +5 -0
- package/lib/events.d.ts.map +1 -0
- package/lib/events.js +7 -0
- package/lib/events.js.map +1 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +7 -0
- package/lib/index.js.map +1 -0
- package/lib/interfaces.d.ts +10 -0
- package/lib/interfaces.d.ts.map +1 -0
- package/lib/interfaces.js +2 -0
- package/lib/interfaces.js.map +1 -0
- package/lib/key.d.ts +9 -0
- package/lib/key.d.ts.map +1 -0
- package/lib/key.js +43 -0
- package/lib/key.js.map +1 -0
- package/lib/transaction.d.ts +5 -0
- package/lib/transaction.d.ts.map +1 -0
- package/lib/transaction.js +8 -0
- package/lib/transaction.js.map +1 -0
- package/package.json +48 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2018
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/lib/crypto.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ICryptoProvider, IKeyHandleDetails, IKeyHandler } from "@activeledger/sdk-core";
|
|
2
|
+
export declare function toHex(bytes: Uint8Array): string;
|
|
3
|
+
export declare function fromHex(hex: string): Uint8Array;
|
|
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;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=crypto.d.ts.map
|
|
@@ -0,0 +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;AAIzF,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAI/C;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAO/C;AAyDD,qBAAa,iBAAkB,YAAW,eAAe;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,WAAW;IAU3C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,MAAM;IAOlD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO;CAYhF"}
|
package/lib/crypto.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { secp256k1 } from "@noble/curves/secp256k1.js";
|
|
2
|
+
const textEncoder = new TextEncoder();
|
|
3
|
+
export function toHex(bytes) {
|
|
4
|
+
return Array.from(bytes)
|
|
5
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
|
6
|
+
.join("");
|
|
7
|
+
}
|
|
8
|
+
export function fromHex(hex) {
|
|
9
|
+
const clean = hex.replace(/^0x/, "");
|
|
10
|
+
const bytes = new Uint8Array(clean.length / 2);
|
|
11
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
12
|
+
bytes[i] = parseInt(clean.substr(i * 2, 2), 16);
|
|
13
|
+
}
|
|
14
|
+
return bytes;
|
|
15
|
+
}
|
|
16
|
+
const BASE64_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
17
|
+
function toBase64(bytes) {
|
|
18
|
+
let result = "";
|
|
19
|
+
for (let i = 0; i < bytes.length; i += 3) {
|
|
20
|
+
const b0 = bytes[i];
|
|
21
|
+
const b1 = i + 1 < bytes.length ? bytes[i + 1] : undefined;
|
|
22
|
+
const b2 = i + 2 < bytes.length ? bytes[i + 2] : undefined;
|
|
23
|
+
result += BASE64_CHARS[b0 >> 2];
|
|
24
|
+
result += BASE64_CHARS[((b0 & 0x03) << 4) | (b1 === undefined ? 0 : b1 >> 4)];
|
|
25
|
+
result += b1 === undefined ? "=" : BASE64_CHARS[((b1 & 0x0f) << 2) | (b2 === undefined ? 0 : b2 >> 6)];
|
|
26
|
+
result += b2 === undefined ? "=" : BASE64_CHARS[b2 & 0x3f];
|
|
27
|
+
}
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
function fromBase64(b64) {
|
|
31
|
+
const clean = b64.replace(/=+$/, "");
|
|
32
|
+
const bytes = [];
|
|
33
|
+
let buffer = 0;
|
|
34
|
+
let bits = 0;
|
|
35
|
+
for (const char of clean) {
|
|
36
|
+
const value = BASE64_CHARS.indexOf(char);
|
|
37
|
+
if (value === -1)
|
|
38
|
+
continue;
|
|
39
|
+
buffer = (buffer << 6) | value;
|
|
40
|
+
bits += 6;
|
|
41
|
+
if (bits >= 8) {
|
|
42
|
+
bits -= 8;
|
|
43
|
+
bytes.push((buffer >> bits) & 0xff);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return new Uint8Array(bytes);
|
|
47
|
+
}
|
|
48
|
+
export class WebCryptoProvider {
|
|
49
|
+
generate(compressed) {
|
|
50
|
+
const secretKey = secp256k1.utils.randomSecretKey();
|
|
51
|
+
const publicKey = secp256k1.getPublicKey(secretKey, compressed ? true : false);
|
|
52
|
+
return {
|
|
53
|
+
prv: { pkcs8pem: "0x" + toHex(secretKey) },
|
|
54
|
+
pub: { pkcs8pem: "0x" + toHex(publicKey) },
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
sign(data, prv) {
|
|
58
|
+
const message = textEncoder.encode(data);
|
|
59
|
+
const secretKey = fromHex(prv.pkcs8pem);
|
|
60
|
+
const signature = secp256k1.sign(message, secretKey, { format: "der" });
|
|
61
|
+
return toBase64(signature);
|
|
62
|
+
}
|
|
63
|
+
verify(data, signature, pub) {
|
|
64
|
+
const message = textEncoder.encode(data);
|
|
65
|
+
const publicKey = fromHex(pub.pkcs8pem);
|
|
66
|
+
const sig = fromBase64(signature);
|
|
67
|
+
return secp256k1.verify(sig, message, publicKey, { format: "der", lowS: false });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=crypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGvD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,MAAM,UAAU,KAAK,CAAC,KAAiB;IACrC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;SACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAMD,MAAM,YAAY,GAAG,kEAAkE,CAAC;AAExF,SAAS,QAAQ,CAAC,KAAiB;IACjC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE3D,MAAM,IAAI,YAAY,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAChC,MAAM,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9E,MAAM,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACvG,MAAM,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,SAAS;QAC3B,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;QAC/B,IAAI,IAAI,CAAC,CAAC;QACV,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAgBD,MAAM,OAAO,iBAAiB;IACrB,QAAQ,CAAC,UAAoB;QAClC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAE/E,OAAO;YACL,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE;YAC1C,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE;SAC3C,CAAC;IACJ,CAAC;IAEM,IAAI,CAAC,IAAY,EAAE,GAAsB;QAC9C,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACxE,OAAO,QAAQ,CAAC,SAAuB,CAAC,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,IAAY,EAAE,SAAiB,EAAE,GAAsB;QACnE,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QAOlC,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACnF,CAAC;CACF"}
|
package/lib/events.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAY1E,qBAAa,YAAa,SAAQ,gBAAgB;gBACpC,GAAG,EAAE,MAAM;CAGxB"}
|
package/lib/events.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAY1E,MAAM,OAAO,YAAa,SAAQ,gBAAgB;IAChD,YAAY,GAAW;QACrB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAQ,CAAC,CAAC;IACvD,CAAC;CACF"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "@activeledger/sdk-core";
|
|
2
|
+
export * from "./crypto.js";
|
|
3
|
+
export * from "./interfaces.js";
|
|
4
|
+
export { KeyHandler } from "./key.js";
|
|
5
|
+
export { TransactionHandler } from "./transaction.js";
|
|
6
|
+
export { LedgerEvents } from "./events.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAuBA,cAAc,wBAAwB,CAAC;AAKvC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from "@activeledger/sdk-core";
|
|
2
|
+
export * from "./crypto.js";
|
|
3
|
+
export * from "./interfaces.js";
|
|
4
|
+
export { KeyHandler } from "./key.js";
|
|
5
|
+
export { TransactionHandler } from "./transaction.js";
|
|
6
|
+
export { LedgerEvents } from "./events.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAuBA,cAAc,wBAAwB,CAAC;AAKvC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IKey } from "@activeledger/sdk-core";
|
|
2
|
+
export interface IKeyExtended extends IKey {
|
|
3
|
+
phrase?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface IBIP39Options {
|
|
6
|
+
compressed?: boolean;
|
|
7
|
+
passphrase?: string;
|
|
8
|
+
legacy?: boolean;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAK9C,MAAM,WAAW,YAAa,SAAQ,IAAI;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,MAAM,CAAC;IAQpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":""}
|
package/lib/key.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { KeyHandler as CoreKeyHandler } from "@activeledger/sdk-core";
|
|
2
|
+
import { IBIP39Options, IKeyExtended } from "./interfaces.js";
|
|
3
|
+
export declare class KeyHandler extends CoreKeyHandler {
|
|
4
|
+
constructor();
|
|
5
|
+
generateBIP39Key(keyName: string, options?: IBIP39Options): Promise<IKeyExtended>;
|
|
6
|
+
restoreBIP39Key(keyName: string, phrase: string, options?: IBIP39Options): Promise<IKeyExtended>;
|
|
7
|
+
private deriveBIP32MasterKey;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=key.d.ts.map
|
package/lib/key.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key.d.ts","sourceRoot":"","sources":["../src/key.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,UAAU,IAAI,cAAc,EAAW,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAW9D,qBAAa,UAAW,SAAQ,cAAc;;IAarC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IA4BjF,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAmC3G,OAAO,CAAC,oBAAoB;CAG7B"}
|
package/lib/key.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { generateMnemonic, mnemonicToSeedSync } from "@scure/bip39";
|
|
2
|
+
import { wordlist } from "@scure/bip39/wordlists/english.js";
|
|
3
|
+
import { hmac } from "@noble/hashes/hmac.js";
|
|
4
|
+
import { sha256, sha512 } from "@noble/hashes/sha2.js";
|
|
5
|
+
import { secp256k1 } from "@noble/curves/secp256k1.js";
|
|
6
|
+
import { KeyHandler as CoreKeyHandler, KeyType } from "@activeledger/sdk-core";
|
|
7
|
+
import { toHex, WebCryptoProvider } from "./crypto.js";
|
|
8
|
+
const textEncoder = new TextEncoder();
|
|
9
|
+
export class KeyHandler extends CoreKeyHandler {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(new WebCryptoProvider());
|
|
12
|
+
}
|
|
13
|
+
generateBIP39Key(keyName, options) {
|
|
14
|
+
return this.restoreBIP39Key(keyName, generateMnemonic(wordlist), options);
|
|
15
|
+
}
|
|
16
|
+
restoreBIP39Key(keyName, phrase, options = {}) {
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
try {
|
|
19
|
+
const privateKey = options.legacy
|
|
20
|
+
? sha256(textEncoder.encode(phrase))
|
|
21
|
+
: this.deriveBIP32MasterKey(mnemonicToSeedSync(phrase, options.passphrase || ""));
|
|
22
|
+
const publicKey = secp256k1.getPublicKey(privateKey, options.compressed ? true : false);
|
|
23
|
+
const keyHolder = {
|
|
24
|
+
key: {
|
|
25
|
+
pub: { pkcs8pem: "0x" + toHex(publicKey) },
|
|
26
|
+
prv: { pkcs8pem: "0x" + toHex(privateKey) },
|
|
27
|
+
},
|
|
28
|
+
name: keyName,
|
|
29
|
+
type: KeyType.EllipticCurve,
|
|
30
|
+
phrase,
|
|
31
|
+
};
|
|
32
|
+
resolve(keyHolder);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
reject(error);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
deriveBIP32MasterKey(seed) {
|
|
40
|
+
return hmac(sha512, textEncoder.encode("Bitcoin seed"), seed).subarray(0, 32);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=key.js.map
|
package/lib/key.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key.js","sourceRoot":"","sources":["../src/key.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAE/E,OAAO,EAAW,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAQtC,MAAM,OAAO,UAAW,SAAQ,cAAc;IAC5C;QACE,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;IACjC,CAAC;IAUM,gBAAgB,CAAC,OAAe,EAAE,OAAuB;QAC9D,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IA0BM,eAAe,CAAC,OAAe,EAAE,MAAc,EAAE,UAAyB,EAAE;QACjF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM;oBAC/B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACpC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;gBAEpF,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAExF,MAAM,SAAS,GAAiB;oBAC9B,GAAG,EAAE;wBACH,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE;wBAC1C,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE;qBAC5C;oBACD,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,OAAO,CAAC,aAAa;oBAC3B,MAAM;iBACP,CAAC;gBAEF,OAAO,CAAC,SAAS,CAAC,CAAC;YACrB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAWO,oBAAoB,CAAC,IAAgB;QAC3C,OAAO,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChF,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,kBAAkB,IAAI,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAUtF,qBAAa,kBAAmB,SAAQ,sBAAsB;;CAI7D"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TransactionHandler as CoreTransactionHandler } from "@activeledger/sdk-core";
|
|
2
|
+
import { WebCryptoProvider } from "./crypto.js";
|
|
3
|
+
export class TransactionHandler extends CoreTransactionHandler {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(new WebCryptoProvider());
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=transaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,kBAAkB,IAAI,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAShD,MAAM,OAAO,kBAAmB,SAAQ,sBAAsB;IAC5D;QACE,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;IACjC,CAAC;CACF"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@activeledger/sdk-web",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Activeledger SDK for browsers and React Native - secp256k1 signing via @noble/curves (audited, pure JS, no native/WebCrypto dependency)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./lib/index.js",
|
|
7
|
+
"types": "./lib/index.d.ts",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "tsc",
|
|
10
|
+
"prepublishOnly": "npm run build"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://github.com/activeledger/SDK-NodeJS",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"activeledger",
|
|
15
|
+
"web",
|
|
16
|
+
"browser",
|
|
17
|
+
"react-native",
|
|
18
|
+
"sdk",
|
|
19
|
+
"blockchain",
|
|
20
|
+
"dlt",
|
|
21
|
+
"distributed ledger technology",
|
|
22
|
+
"ledger",
|
|
23
|
+
"smart contracts"
|
|
24
|
+
],
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "git+https://github.com/activeledger/SDK-NodeJS.git",
|
|
28
|
+
"directory": "packages/web"
|
|
29
|
+
},
|
|
30
|
+
"bugs": {
|
|
31
|
+
"url": "https://github.com/activeledger/SDK-NodeJS/issues"
|
|
32
|
+
},
|
|
33
|
+
"author": "Activeledger",
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"files": [
|
|
36
|
+
"lib"
|
|
37
|
+
],
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@activeledger/sdk-core": "^2.0.0",
|
|
40
|
+
"@noble/curves": "^2.4.0",
|
|
41
|
+
"@noble/hashes": "^2.4.0",
|
|
42
|
+
"@scure/bip39": "^2.4.0"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"typescript": "^5.5.4"
|
|
46
|
+
},
|
|
47
|
+
"gitHead": "f07817691ebfc1dfd38d7c90aa5cb9a454ae4f89"
|
|
48
|
+
}
|