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 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: "Partial Kibble Payment Processed!" };
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({ hash: userOpPartialPayHash });
1982
- return { success: true, message: "Partial payment processed successfully." };
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 { success: false, message: `Error processing partial payment: ${errorMessage}` };
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: "Partial Kibble Payment Processed!" };
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({ hash: userOpPartialPayHash });
1924
- return { success: true, message: "Partial payment processed successfully." };
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 { success: false, message: `Error processing partial payment: ${errorMessage}` };
1928
+ return {
1929
+ success: false,
1930
+ message: `Error processing partial payment: ${errorMessage}`
1931
+ };
1928
1932
  }
1929
1933
  },
1930
1934
  []
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anymal-protocol",
3
- "version": "1.0.83",
3
+ "version": "1.0.85",
4
4
  "description": "A React/TypeScript-based utility library for reusable functions and hooks inside of the Anymal Ecosystem.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -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
- };
@@ -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
- };
@@ -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
- };
@@ -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
- };
@@ -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
- };