anymal-protocol 1.0.83 → 1.0.85
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/index.js +10 -6
- package/dist/index.mjs +10 -6
- package/package.json +1 -1
- package/dist/chunk-43I5M7QS.mjs +0 -93
- package/dist/chunk-5UXBNDDZ.mjs +0 -93
- package/dist/chunk-DIGESQEI.mjs +0 -91
- package/dist/chunk-KEC6WLEL.mjs +0 -93
- package/dist/chunk-QHK3YPLJ.mjs +0 -93
package/dist/index.js
CHANGED
|
@@ -1728,14 +1728,13 @@ function useProcessPartialKibblePayment() {
|
|
|
1728
1728
|
}
|
|
1729
1729
|
],
|
|
1730
1730
|
maxPriorityFeePerGas: (0, import_viem3.parseGwei)("0.001")
|
|
1731
|
-
// maxFeePerGas: parseGwei("0.01"),
|
|
1732
1731
|
});
|
|
1733
|
-
await bundlerClient.waitForUserOperationReceipt({
|
|
1732
|
+
const receipt = await bundlerClient.waitForUserOperationReceipt({
|
|
1734
1733
|
hash: userOpHash,
|
|
1735
1734
|
timeout: 3e4,
|
|
1736
1735
|
retryCount: 10
|
|
1737
1736
|
});
|
|
1738
|
-
return { success: true, message:
|
|
1737
|
+
return { success: true, message: receipt };
|
|
1739
1738
|
} catch (error) {
|
|
1740
1739
|
const errorMessage = error instanceof Error ? error.message : "An unknown error occurred";
|
|
1741
1740
|
return {
|
|
@@ -1978,11 +1977,16 @@ function useProcessOrgPartialKibblePayment() {
|
|
|
1978
1977
|
maxPriorityFeePerGas: (0, import_viem7.parseGwei)("0.001")
|
|
1979
1978
|
// maxFeePerGas: parseGwei("0.01"),
|
|
1980
1979
|
});
|
|
1981
|
-
await bundlerClient.waitForUserOperationReceipt({
|
|
1982
|
-
|
|
1980
|
+
const receipt = await bundlerClient.waitForUserOperationReceipt({
|
|
1981
|
+
hash: userOpPartialPayHash
|
|
1982
|
+
});
|
|
1983
|
+
return { success: true, message: receipt.userOpHash };
|
|
1983
1984
|
} catch (error) {
|
|
1984
1985
|
const errorMessage = error instanceof Error ? error.message : "An unknown error occurred.";
|
|
1985
|
-
return {
|
|
1986
|
+
return {
|
|
1987
|
+
success: false,
|
|
1988
|
+
message: `Error processing partial payment: ${errorMessage}`
|
|
1989
|
+
};
|
|
1986
1990
|
}
|
|
1987
1991
|
},
|
|
1988
1992
|
[]
|
package/dist/index.mjs
CHANGED
|
@@ -1670,14 +1670,13 @@ function useProcessPartialKibblePayment() {
|
|
|
1670
1670
|
}
|
|
1671
1671
|
],
|
|
1672
1672
|
maxPriorityFeePerGas: parseGwei3("0.001")
|
|
1673
|
-
// maxFeePerGas: parseGwei("0.01"),
|
|
1674
1673
|
});
|
|
1675
|
-
await bundlerClient.waitForUserOperationReceipt({
|
|
1674
|
+
const receipt = await bundlerClient.waitForUserOperationReceipt({
|
|
1676
1675
|
hash: userOpHash,
|
|
1677
1676
|
timeout: 3e4,
|
|
1678
1677
|
retryCount: 10
|
|
1679
1678
|
});
|
|
1680
|
-
return { success: true, message:
|
|
1679
|
+
return { success: true, message: receipt };
|
|
1681
1680
|
} catch (error) {
|
|
1682
1681
|
const errorMessage = error instanceof Error ? error.message : "An unknown error occurred";
|
|
1683
1682
|
return {
|
|
@@ -1920,11 +1919,16 @@ function useProcessOrgPartialKibblePayment() {
|
|
|
1920
1919
|
maxPriorityFeePerGas: parseGwei7("0.001")
|
|
1921
1920
|
// maxFeePerGas: parseGwei("0.01"),
|
|
1922
1921
|
});
|
|
1923
|
-
await bundlerClient.waitForUserOperationReceipt({
|
|
1924
|
-
|
|
1922
|
+
const receipt = await bundlerClient.waitForUserOperationReceipt({
|
|
1923
|
+
hash: userOpPartialPayHash
|
|
1924
|
+
});
|
|
1925
|
+
return { success: true, message: receipt.userOpHash };
|
|
1925
1926
|
} catch (error) {
|
|
1926
1927
|
const errorMessage = error instanceof Error ? error.message : "An unknown error occurred.";
|
|
1927
|
-
return {
|
|
1928
|
+
return {
|
|
1929
|
+
success: false,
|
|
1930
|
+
message: `Error processing partial payment: ${errorMessage}`
|
|
1931
|
+
};
|
|
1928
1932
|
}
|
|
1929
1933
|
},
|
|
1930
1934
|
[]
|
package/package.json
CHANGED
package/dist/chunk-43I5M7QS.mjs
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
-
}) : x)(function(x) {
|
|
4
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
// src/helpers/CryptoUtils.tsx
|
|
9
|
-
import { ec as EC } from "elliptic";
|
|
10
|
-
var ec = new EC("secp256k1");
|
|
11
|
-
var Network = /* @__PURE__ */ ((Network2) => {
|
|
12
|
-
Network2["Testnet"] = "testnet";
|
|
13
|
-
Network2["Localnet"] = "localnet";
|
|
14
|
-
return Network2;
|
|
15
|
-
})(Network || {});
|
|
16
|
-
var NETWORK_HOSTS = {
|
|
17
|
-
["testnet" /* Testnet */]: "https://dev-db.petastic.com",
|
|
18
|
-
["localnet" /* Localnet */]: "http://host.docker.internal:9181"
|
|
19
|
-
};
|
|
20
|
-
function loadExistingSecp256k1PrivateKey(hexKey) {
|
|
21
|
-
if (!hexKey) {
|
|
22
|
-
throw new Error("Private key hex must be provided");
|
|
23
|
-
}
|
|
24
|
-
return ec.keyFromPrivate(hexKey, "hex");
|
|
25
|
-
}
|
|
26
|
-
function serializePublicKeyCompressed(keyPair) {
|
|
27
|
-
return keyPair.getPublic(true, "hex");
|
|
28
|
-
}
|
|
29
|
-
function base64url(input) {
|
|
30
|
-
let buf;
|
|
31
|
-
if (typeof input === "string") buf = Buffer.from(input);
|
|
32
|
-
else if (input instanceof ArrayBuffer) buf = Buffer.from(input);
|
|
33
|
-
else buf = input;
|
|
34
|
-
return buf.toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
|
|
35
|
-
}
|
|
36
|
-
function sha256HashNode(data) {
|
|
37
|
-
const { createHash } = __require("crypto");
|
|
38
|
-
return createHash("sha256").update(data).digest();
|
|
39
|
-
}
|
|
40
|
-
async function hashInput(data) {
|
|
41
|
-
if (typeof window !== "undefined" && window.crypto?.subtle) {
|
|
42
|
-
const encoder = new TextEncoder();
|
|
43
|
-
const encoded = encoder.encode(data);
|
|
44
|
-
const hashBuffer = await window.crypto.subtle.digest("SHA-256", encoded);
|
|
45
|
-
return Buffer.from(hashBuffer);
|
|
46
|
-
} else {
|
|
47
|
-
return sha256HashNode(data);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
async function generateJWT(sub, aud, keyPair, expiresInSeconds = 24 * 60 * 60) {
|
|
51
|
-
const iat = Math.floor(Date.now() / 1e3);
|
|
52
|
-
const exp = iat + expiresInSeconds;
|
|
53
|
-
const header = { alg: "ES256", typ: "JWT" };
|
|
54
|
-
const payload = { sub, aud, iat, exp };
|
|
55
|
-
const encodedHeader = base64url(JSON.stringify(header));
|
|
56
|
-
const encodedPayload = base64url(JSON.stringify(payload));
|
|
57
|
-
const signingInput = `${encodedHeader}.${encodedPayload}`;
|
|
58
|
-
const hash = await hashInput(signingInput);
|
|
59
|
-
const signature = keyPair.sign(hash, { canonical: true });
|
|
60
|
-
const rBuf = signature.r.toArrayLike(Buffer, "be", 32);
|
|
61
|
-
const sBuf = signature.s.toArrayLike(Buffer, "be", 32);
|
|
62
|
-
const rawSig = Buffer.concat([rBuf, sBuf]);
|
|
63
|
-
const encodedSig = base64url(rawSig);
|
|
64
|
-
return `${signingInput}.${encodedSig}`;
|
|
65
|
-
}
|
|
66
|
-
async function createAuthEnvelope(privateKeyHex, network = "testnet" /* Testnet */, options) {
|
|
67
|
-
const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
|
|
68
|
-
const publicKey = serializePublicKeyCompressed(keyPair);
|
|
69
|
-
const host = NETWORK_HOSTS[network];
|
|
70
|
-
if (!host) {
|
|
71
|
-
throw new Error(`Unsupported network: ${network}`);
|
|
72
|
-
}
|
|
73
|
-
const token = await generateJWT(publicKey, host, keyPair, options?.expiresInSeconds);
|
|
74
|
-
return { publicKey, token };
|
|
75
|
-
}
|
|
76
|
-
async function generateAppSignature(privateKeyHex, clientId, redirectUri, state) {
|
|
77
|
-
const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
|
|
78
|
-
const message = `${clientId}:${redirectUri}:${state}`;
|
|
79
|
-
const hash = await hashInput(message);
|
|
80
|
-
const signatureDER = keyPair.sign(hash, { canonical: true }).toDER();
|
|
81
|
-
return Buffer.from(signatureDER).toString("hex");
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export {
|
|
85
|
-
__require,
|
|
86
|
-
Network,
|
|
87
|
-
NETWORK_HOSTS,
|
|
88
|
-
loadExistingSecp256k1PrivateKey,
|
|
89
|
-
serializePublicKeyCompressed,
|
|
90
|
-
generateJWT,
|
|
91
|
-
createAuthEnvelope,
|
|
92
|
-
generateAppSignature
|
|
93
|
-
};
|
package/dist/chunk-5UXBNDDZ.mjs
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
-
}) : x)(function(x) {
|
|
4
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
// src/helpers/CryptoUtils.tsx
|
|
9
|
-
import { ec as EC } from "elliptic";
|
|
10
|
-
var ec = new EC("secp256k1");
|
|
11
|
-
var Network = /* @__PURE__ */ ((Network2) => {
|
|
12
|
-
Network2["Testnet"] = "testnet";
|
|
13
|
-
Network2["Localnet"] = "localnet";
|
|
14
|
-
return Network2;
|
|
15
|
-
})(Network || {});
|
|
16
|
-
var NETWORK_HOSTS = {
|
|
17
|
-
["testnet" /* Testnet */]: "https://dev-db.petastic.com",
|
|
18
|
-
["localnet" /* Localnet */]: "http://docker.host.internal:9181"
|
|
19
|
-
};
|
|
20
|
-
function loadExistingSecp256k1PrivateKey(hexKey) {
|
|
21
|
-
if (!hexKey) {
|
|
22
|
-
throw new Error("Private key hex must be provided");
|
|
23
|
-
}
|
|
24
|
-
return ec.keyFromPrivate(hexKey, "hex");
|
|
25
|
-
}
|
|
26
|
-
function serializePublicKeyCompressed(keyPair) {
|
|
27
|
-
return keyPair.getPublic(true, "hex");
|
|
28
|
-
}
|
|
29
|
-
function base64url(input) {
|
|
30
|
-
let buf;
|
|
31
|
-
if (typeof input === "string") buf = Buffer.from(input);
|
|
32
|
-
else if (input instanceof ArrayBuffer) buf = Buffer.from(input);
|
|
33
|
-
else buf = input;
|
|
34
|
-
return buf.toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
|
|
35
|
-
}
|
|
36
|
-
function sha256HashNode(data) {
|
|
37
|
-
const { createHash } = __require("crypto");
|
|
38
|
-
return createHash("sha256").update(data).digest();
|
|
39
|
-
}
|
|
40
|
-
async function hashInput(data) {
|
|
41
|
-
if (typeof window !== "undefined" && window.crypto?.subtle) {
|
|
42
|
-
const encoder = new TextEncoder();
|
|
43
|
-
const encoded = encoder.encode(data);
|
|
44
|
-
const hashBuffer = await window.crypto.subtle.digest("SHA-256", encoded);
|
|
45
|
-
return Buffer.from(hashBuffer);
|
|
46
|
-
} else {
|
|
47
|
-
return sha256HashNode(data);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
async function generateJWT(sub, aud, keyPair, expiresInSeconds = 24 * 60 * 60) {
|
|
51
|
-
const iat = Math.floor(Date.now() / 1e3);
|
|
52
|
-
const exp = iat + expiresInSeconds;
|
|
53
|
-
const header = { alg: "ES256", typ: "JWT" };
|
|
54
|
-
const payload = { sub, aud, iat, exp };
|
|
55
|
-
const encodedHeader = base64url(JSON.stringify(header));
|
|
56
|
-
const encodedPayload = base64url(JSON.stringify(payload));
|
|
57
|
-
const signingInput = `${encodedHeader}.${encodedPayload}`;
|
|
58
|
-
const hash = await hashInput(signingInput);
|
|
59
|
-
const signature = keyPair.sign(hash, { canonical: true });
|
|
60
|
-
const rBuf = signature.r.toArrayLike(Buffer, "be", 32);
|
|
61
|
-
const sBuf = signature.s.toArrayLike(Buffer, "be", 32);
|
|
62
|
-
const rawSig = Buffer.concat([rBuf, sBuf]);
|
|
63
|
-
const encodedSig = base64url(rawSig);
|
|
64
|
-
return `${signingInput}.${encodedSig}`;
|
|
65
|
-
}
|
|
66
|
-
async function createAuthEnvelope(privateKeyHex, network = "testnet" /* Testnet */, options) {
|
|
67
|
-
const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
|
|
68
|
-
const publicKey = serializePublicKeyCompressed(keyPair);
|
|
69
|
-
const host = NETWORK_HOSTS[network];
|
|
70
|
-
if (!host) {
|
|
71
|
-
throw new Error(`Unsupported network: ${network}`);
|
|
72
|
-
}
|
|
73
|
-
const token = await generateJWT(publicKey, host, keyPair, options?.expiresInSeconds);
|
|
74
|
-
return { publicKey, token };
|
|
75
|
-
}
|
|
76
|
-
async function generateAppSignature(privateKeyHex, clientId, redirectUri, state) {
|
|
77
|
-
const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
|
|
78
|
-
const message = `${clientId}:${redirectUri}:${state}`;
|
|
79
|
-
const hash = await hashInput(message);
|
|
80
|
-
const signatureDER = keyPair.sign(hash, { canonical: true }).toDER();
|
|
81
|
-
return Buffer.from(signatureDER).toString("hex");
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export {
|
|
85
|
-
__require,
|
|
86
|
-
Network,
|
|
87
|
-
NETWORK_HOSTS,
|
|
88
|
-
loadExistingSecp256k1PrivateKey,
|
|
89
|
-
serializePublicKeyCompressed,
|
|
90
|
-
generateJWT,
|
|
91
|
-
createAuthEnvelope,
|
|
92
|
-
generateAppSignature
|
|
93
|
-
};
|
package/dist/chunk-DIGESQEI.mjs
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
-
}) : x)(function(x) {
|
|
4
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
// src/helpers/CryptoUtils.tsx
|
|
9
|
-
import { ec as EC } from "elliptic";
|
|
10
|
-
var ec = new EC("secp256k1");
|
|
11
|
-
var Network = /* @__PURE__ */ ((Network2) => {
|
|
12
|
-
Network2["Testnet"] = "testnet";
|
|
13
|
-
return Network2;
|
|
14
|
-
})(Network || {});
|
|
15
|
-
var NETWORK_HOSTS = {
|
|
16
|
-
["testnet" /* Testnet */]: "https://dev-db.petastic.com"
|
|
17
|
-
};
|
|
18
|
-
function loadExistingSecp256k1PrivateKey(hexKey) {
|
|
19
|
-
if (!hexKey) {
|
|
20
|
-
throw new Error("Private key hex must be provided");
|
|
21
|
-
}
|
|
22
|
-
return ec.keyFromPrivate(hexKey, "hex");
|
|
23
|
-
}
|
|
24
|
-
function serializePublicKeyCompressed(keyPair) {
|
|
25
|
-
return keyPair.getPublic(true, "hex");
|
|
26
|
-
}
|
|
27
|
-
function base64url(input) {
|
|
28
|
-
let buf;
|
|
29
|
-
if (typeof input === "string") buf = Buffer.from(input);
|
|
30
|
-
else if (input instanceof ArrayBuffer) buf = Buffer.from(input);
|
|
31
|
-
else buf = input;
|
|
32
|
-
return buf.toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
|
|
33
|
-
}
|
|
34
|
-
function sha256HashNode(data) {
|
|
35
|
-
const { createHash } = __require("crypto");
|
|
36
|
-
return createHash("sha256").update(data).digest();
|
|
37
|
-
}
|
|
38
|
-
async function hashInput(data) {
|
|
39
|
-
if (typeof window !== "undefined" && window.crypto?.subtle) {
|
|
40
|
-
const encoder = new TextEncoder();
|
|
41
|
-
const encoded = encoder.encode(data);
|
|
42
|
-
const hashBuffer = await window.crypto.subtle.digest("SHA-256", encoded);
|
|
43
|
-
return Buffer.from(hashBuffer);
|
|
44
|
-
} else {
|
|
45
|
-
return sha256HashNode(data);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
async function generateJWT(sub, aud, keyPair, expiresInSeconds = 24 * 60 * 60) {
|
|
49
|
-
const iat = Math.floor(Date.now() / 1e3);
|
|
50
|
-
const exp = iat + expiresInSeconds;
|
|
51
|
-
const header = { alg: "ES256", typ: "JWT" };
|
|
52
|
-
const payload = { sub, aud, iat, exp };
|
|
53
|
-
const encodedHeader = base64url(JSON.stringify(header));
|
|
54
|
-
const encodedPayload = base64url(JSON.stringify(payload));
|
|
55
|
-
const signingInput = `${encodedHeader}.${encodedPayload}`;
|
|
56
|
-
const hash = await hashInput(signingInput);
|
|
57
|
-
const signature = keyPair.sign(hash, { canonical: true });
|
|
58
|
-
const rBuf = signature.r.toArrayLike(Buffer, "be", 32);
|
|
59
|
-
const sBuf = signature.s.toArrayLike(Buffer, "be", 32);
|
|
60
|
-
const rawSig = Buffer.concat([rBuf, sBuf]);
|
|
61
|
-
const encodedSig = base64url(rawSig);
|
|
62
|
-
return `${signingInput}.${encodedSig}`;
|
|
63
|
-
}
|
|
64
|
-
async function createAuthEnvelope(privateKeyHex, network = "testnet" /* Testnet */, options) {
|
|
65
|
-
const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
|
|
66
|
-
const publicKey = serializePublicKeyCompressed(keyPair);
|
|
67
|
-
const host = NETWORK_HOSTS[network];
|
|
68
|
-
if (!host) {
|
|
69
|
-
throw new Error(`Unsupported network: ${network}`);
|
|
70
|
-
}
|
|
71
|
-
const token = await generateJWT(publicKey, host, keyPair, options?.expiresInSeconds);
|
|
72
|
-
return { publicKey, token };
|
|
73
|
-
}
|
|
74
|
-
async function generateAppSignature(privateKeyHex, clientId, redirectUri, state) {
|
|
75
|
-
const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
|
|
76
|
-
const message = `${clientId}:${redirectUri}:${state}`;
|
|
77
|
-
const hash = await hashInput(message);
|
|
78
|
-
const signatureDER = keyPair.sign(hash, { canonical: true }).toDER();
|
|
79
|
-
return Buffer.from(signatureDER).toString("hex");
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export {
|
|
83
|
-
__require,
|
|
84
|
-
Network,
|
|
85
|
-
NETWORK_HOSTS,
|
|
86
|
-
loadExistingSecp256k1PrivateKey,
|
|
87
|
-
serializePublicKeyCompressed,
|
|
88
|
-
generateJWT,
|
|
89
|
-
createAuthEnvelope,
|
|
90
|
-
generateAppSignature
|
|
91
|
-
};
|
package/dist/chunk-KEC6WLEL.mjs
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
-
}) : x)(function(x) {
|
|
4
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
// src/helpers/CryptoUtils.tsx
|
|
9
|
-
import { ec as EC } from "elliptic";
|
|
10
|
-
var ec = new EC("secp256k1");
|
|
11
|
-
var Network = /* @__PURE__ */ ((Network2) => {
|
|
12
|
-
Network2["Testnet"] = "testnet";
|
|
13
|
-
Network2["Localnet"] = "localnet";
|
|
14
|
-
return Network2;
|
|
15
|
-
})(Network || {});
|
|
16
|
-
var NETWORK_HOSTS = {
|
|
17
|
-
["testnet" /* Testnet */]: "dev-db.petastic.com",
|
|
18
|
-
["localnet" /* Localnet */]: "host.docker.internal:9181"
|
|
19
|
-
};
|
|
20
|
-
function loadExistingSecp256k1PrivateKey(hexKey) {
|
|
21
|
-
if (!hexKey) {
|
|
22
|
-
throw new Error("Private key hex must be provided");
|
|
23
|
-
}
|
|
24
|
-
return ec.keyFromPrivate(hexKey, "hex");
|
|
25
|
-
}
|
|
26
|
-
function serializePublicKeyCompressed(keyPair) {
|
|
27
|
-
return keyPair.getPublic(true, "hex");
|
|
28
|
-
}
|
|
29
|
-
function base64url(input) {
|
|
30
|
-
let buf;
|
|
31
|
-
if (typeof input === "string") buf = Buffer.from(input);
|
|
32
|
-
else if (input instanceof ArrayBuffer) buf = Buffer.from(input);
|
|
33
|
-
else buf = input;
|
|
34
|
-
return buf.toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
|
|
35
|
-
}
|
|
36
|
-
function sha256HashNode(data) {
|
|
37
|
-
const { createHash } = __require("crypto");
|
|
38
|
-
return createHash("sha256").update(data).digest();
|
|
39
|
-
}
|
|
40
|
-
async function hashInput(data) {
|
|
41
|
-
if (typeof window !== "undefined" && window.crypto?.subtle) {
|
|
42
|
-
const encoder = new TextEncoder();
|
|
43
|
-
const encoded = encoder.encode(data);
|
|
44
|
-
const hashBuffer = await window.crypto.subtle.digest("SHA-256", encoded);
|
|
45
|
-
return Buffer.from(hashBuffer);
|
|
46
|
-
} else {
|
|
47
|
-
return sha256HashNode(data);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
async function generateJWT(sub, aud, keyPair, expiresInSeconds = 24 * 60 * 60) {
|
|
51
|
-
const iat = Math.floor(Date.now() / 1e3);
|
|
52
|
-
const exp = iat + expiresInSeconds;
|
|
53
|
-
const header = { alg: "ES256", typ: "JWT" };
|
|
54
|
-
const payload = { sub, aud, iat, exp };
|
|
55
|
-
const encodedHeader = base64url(JSON.stringify(header));
|
|
56
|
-
const encodedPayload = base64url(JSON.stringify(payload));
|
|
57
|
-
const signingInput = `${encodedHeader}.${encodedPayload}`;
|
|
58
|
-
const hash = await hashInput(signingInput);
|
|
59
|
-
const signature = keyPair.sign(hash, { canonical: true });
|
|
60
|
-
const rBuf = signature.r.toArrayLike(Buffer, "be", 32);
|
|
61
|
-
const sBuf = signature.s.toArrayLike(Buffer, "be", 32);
|
|
62
|
-
const rawSig = Buffer.concat([rBuf, sBuf]);
|
|
63
|
-
const encodedSig = base64url(rawSig);
|
|
64
|
-
return `${signingInput}.${encodedSig}`;
|
|
65
|
-
}
|
|
66
|
-
async function createAuthEnvelope(privateKeyHex, network = "testnet" /* Testnet */, options) {
|
|
67
|
-
const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
|
|
68
|
-
const publicKey = serializePublicKeyCompressed(keyPair);
|
|
69
|
-
const host = NETWORK_HOSTS[network];
|
|
70
|
-
if (!host) {
|
|
71
|
-
throw new Error(`Unsupported network: ${network}`);
|
|
72
|
-
}
|
|
73
|
-
const token = await generateJWT(publicKey, host, keyPair, options?.expiresInSeconds);
|
|
74
|
-
return { publicKey, token };
|
|
75
|
-
}
|
|
76
|
-
async function generateAppSignature(privateKeyHex, clientId, redirectUri, state) {
|
|
77
|
-
const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
|
|
78
|
-
const message = `${clientId}:${redirectUri}:${state}`;
|
|
79
|
-
const hash = await hashInput(message);
|
|
80
|
-
const signatureDER = keyPair.sign(hash, { canonical: true }).toDER();
|
|
81
|
-
return Buffer.from(signatureDER).toString("hex");
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export {
|
|
85
|
-
__require,
|
|
86
|
-
Network,
|
|
87
|
-
NETWORK_HOSTS,
|
|
88
|
-
loadExistingSecp256k1PrivateKey,
|
|
89
|
-
serializePublicKeyCompressed,
|
|
90
|
-
generateJWT,
|
|
91
|
-
createAuthEnvelope,
|
|
92
|
-
generateAppSignature
|
|
93
|
-
};
|
package/dist/chunk-QHK3YPLJ.mjs
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
-
}) : x)(function(x) {
|
|
4
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
// src/helpers/CryptoUtils.tsx
|
|
9
|
-
import { ec as EC } from "elliptic";
|
|
10
|
-
var ec = new EC("secp256k1");
|
|
11
|
-
var Network = /* @__PURE__ */ ((Network2) => {
|
|
12
|
-
Network2["Testnet"] = "testnet";
|
|
13
|
-
Network2["Localnet"] = "localnet";
|
|
14
|
-
return Network2;
|
|
15
|
-
})(Network || {});
|
|
16
|
-
var NETWORK_HOSTS = {
|
|
17
|
-
["testnet" /* Testnet */]: "https://dev-db.petastic.com",
|
|
18
|
-
["localnet" /* Localnet */]: "host.docker.internal:9181"
|
|
19
|
-
};
|
|
20
|
-
function loadExistingSecp256k1PrivateKey(hexKey) {
|
|
21
|
-
if (!hexKey) {
|
|
22
|
-
throw new Error("Private key hex must be provided");
|
|
23
|
-
}
|
|
24
|
-
return ec.keyFromPrivate(hexKey, "hex");
|
|
25
|
-
}
|
|
26
|
-
function serializePublicKeyCompressed(keyPair) {
|
|
27
|
-
return keyPair.getPublic(true, "hex");
|
|
28
|
-
}
|
|
29
|
-
function base64url(input) {
|
|
30
|
-
let buf;
|
|
31
|
-
if (typeof input === "string") buf = Buffer.from(input);
|
|
32
|
-
else if (input instanceof ArrayBuffer) buf = Buffer.from(input);
|
|
33
|
-
else buf = input;
|
|
34
|
-
return buf.toString("base64").replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_");
|
|
35
|
-
}
|
|
36
|
-
function sha256HashNode(data) {
|
|
37
|
-
const { createHash } = __require("crypto");
|
|
38
|
-
return createHash("sha256").update(data).digest();
|
|
39
|
-
}
|
|
40
|
-
async function hashInput(data) {
|
|
41
|
-
if (typeof window !== "undefined" && window.crypto?.subtle) {
|
|
42
|
-
const encoder = new TextEncoder();
|
|
43
|
-
const encoded = encoder.encode(data);
|
|
44
|
-
const hashBuffer = await window.crypto.subtle.digest("SHA-256", encoded);
|
|
45
|
-
return Buffer.from(hashBuffer);
|
|
46
|
-
} else {
|
|
47
|
-
return sha256HashNode(data);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
async function generateJWT(sub, aud, keyPair, expiresInSeconds = 24 * 60 * 60) {
|
|
51
|
-
const iat = Math.floor(Date.now() / 1e3);
|
|
52
|
-
const exp = iat + expiresInSeconds;
|
|
53
|
-
const header = { alg: "ES256", typ: "JWT" };
|
|
54
|
-
const payload = { sub, aud, iat, exp };
|
|
55
|
-
const encodedHeader = base64url(JSON.stringify(header));
|
|
56
|
-
const encodedPayload = base64url(JSON.stringify(payload));
|
|
57
|
-
const signingInput = `${encodedHeader}.${encodedPayload}`;
|
|
58
|
-
const hash = await hashInput(signingInput);
|
|
59
|
-
const signature = keyPair.sign(hash, { canonical: true });
|
|
60
|
-
const rBuf = signature.r.toArrayLike(Buffer, "be", 32);
|
|
61
|
-
const sBuf = signature.s.toArrayLike(Buffer, "be", 32);
|
|
62
|
-
const rawSig = Buffer.concat([rBuf, sBuf]);
|
|
63
|
-
const encodedSig = base64url(rawSig);
|
|
64
|
-
return `${signingInput}.${encodedSig}`;
|
|
65
|
-
}
|
|
66
|
-
async function createAuthEnvelope(privateKeyHex, network = "testnet" /* Testnet */, options) {
|
|
67
|
-
const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
|
|
68
|
-
const publicKey = serializePublicKeyCompressed(keyPair);
|
|
69
|
-
const host = NETWORK_HOSTS[network];
|
|
70
|
-
if (!host) {
|
|
71
|
-
throw new Error(`Unsupported network: ${network}`);
|
|
72
|
-
}
|
|
73
|
-
const token = await generateJWT(publicKey, host, keyPair, options?.expiresInSeconds);
|
|
74
|
-
return { publicKey, token };
|
|
75
|
-
}
|
|
76
|
-
async function generateAppSignature(privateKeyHex, clientId, redirectUri, state) {
|
|
77
|
-
const keyPair = loadExistingSecp256k1PrivateKey(privateKeyHex);
|
|
78
|
-
const message = `${clientId}:${redirectUri}:${state}`;
|
|
79
|
-
const hash = await hashInput(message);
|
|
80
|
-
const signatureDER = keyPair.sign(hash, { canonical: true }).toDER();
|
|
81
|
-
return Buffer.from(signatureDER).toString("hex");
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export {
|
|
85
|
-
__require,
|
|
86
|
-
Network,
|
|
87
|
-
NETWORK_HOSTS,
|
|
88
|
-
loadExistingSecp256k1PrivateKey,
|
|
89
|
-
serializePublicKeyCompressed,
|
|
90
|
-
generateJWT,
|
|
91
|
-
createAuthEnvelope,
|
|
92
|
-
generateAppSignature
|
|
93
|
-
};
|