anymal-protocol 1.0.80 → 1.0.82
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/chunk-43I5M7QS.mjs +93 -0
- package/dist/chunk-5UXBNDDZ.mjs +93 -0
- package/dist/chunk-DIGESQEI.mjs +91 -0
- package/dist/chunk-KEC6WLEL.mjs +93 -0
- package/dist/chunk-QHK3YPLJ.mjs +93 -0
- package/dist/index.d.mts +28 -3
- package/dist/index.d.ts +28 -3
- package/dist/index.js +8 -0
- package/dist/index.mjs +7 -0
- package/package.json +1 -1
|
@@ -0,0 +1,93 @@
|
|
|
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
|
+
};
|
|
@@ -0,0 +1,93 @@
|
|
|
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
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
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
|
+
};
|
|
@@ -0,0 +1,93 @@
|
|
|
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
|
+
};
|
|
@@ -0,0 +1,93 @@
|
|
|
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
|
+
};
|
package/dist/index.d.mts
CHANGED
|
@@ -235,7 +235,15 @@ declare enum ActionStatus {
|
|
|
235
235
|
PENDING = "PENDING",
|
|
236
236
|
VALIDATED = "VALIDATED_ONCHAIN",
|
|
237
237
|
CLAIMING = "CLAIMING",
|
|
238
|
-
CLAIMED = "CLAIMED"
|
|
238
|
+
CLAIMED = "CLAIMED",
|
|
239
|
+
REJECTED = "REJECTED"
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* How the marketplace item can be verified, stripe transaction, anymal transaction, etc
|
|
243
|
+
*/
|
|
244
|
+
declare enum MarketplacePaymentType {
|
|
245
|
+
STRIPE = "STRIPE",
|
|
246
|
+
ANYMAL = "ANYMAL"
|
|
239
247
|
}
|
|
240
248
|
/**
|
|
241
249
|
* Represents a single action record returned by the backend.
|
|
@@ -323,6 +331,23 @@ interface ContractActionPayload extends BaseActionPayload {
|
|
|
323
331
|
gasUsed: string;
|
|
324
332
|
};
|
|
325
333
|
}
|
|
334
|
+
/**
|
|
335
|
+
* Payload for marketplace action
|
|
336
|
+
*/
|
|
337
|
+
interface MarketplaceActionPayload extends BaseActionPayload {
|
|
338
|
+
orderId: string;
|
|
339
|
+
totalSpent: number;
|
|
340
|
+
paymentTxId: string;
|
|
341
|
+
paymentSource: MarketplacePaymentType;
|
|
342
|
+
kibblePaymentTxId: string;
|
|
343
|
+
lineItems?: any[];
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Payload for a wishlist purchase. same as a marketplace purchase except requires a wishlistId
|
|
347
|
+
*/
|
|
348
|
+
interface WishlistPurchaseActionPayload extends MarketplaceActionPayload {
|
|
349
|
+
wishlistId: string;
|
|
350
|
+
}
|
|
326
351
|
/**
|
|
327
352
|
* Payload for external web-service actions
|
|
328
353
|
*/
|
|
@@ -333,7 +358,7 @@ interface ExternalActionPayload extends BaseActionPayload {
|
|
|
333
358
|
responseStatus?: number;
|
|
334
359
|
responseBody?: any;
|
|
335
360
|
}
|
|
336
|
-
type ActionPayload = GraphQLActionPayload | ContractActionPayload | ExternalActionPayload;
|
|
361
|
+
type ActionPayload = GraphQLActionPayload | ContractActionPayload | ExternalActionPayload | MarketplaceActionPayload | WishlistPurchaseActionPayload;
|
|
337
362
|
interface SubmitResponse {
|
|
338
363
|
ok: boolean;
|
|
339
364
|
id: string;
|
|
@@ -369,4 +394,4 @@ declare function useClaimOrgActionReward(): (orgContractAddress: string, rewarda
|
|
|
369
394
|
message: string;
|
|
370
395
|
}>;
|
|
371
396
|
|
|
372
|
-
export { AUTH_API_ENDPOINTS, type ActionDefinition, type ActionPayload, type ActionRecord, ActionSourceType, ActionStatus, ActionType, type AnymalNftMetadataInputData, type AuthEnvelope, type ContractActionPayload, type CreateAnymalInputData, type ExternalActionPayload, type GraphQLActionPayload, type JWTOptions, NETWORK_HOSTS, Network, type SubmitResponse, createAuthEnvelope, fetchAnymals, generateAppSignature, generateBytes32Nonce, generateJWT, loadExistingSecp256k1PrivateKey, serializePublicKeyCompressed, submitAction, useAddAnymalToDatabase, useApproveKibbleToken, useApproveOrgPartialPayment, useClaimActionReward, useClaimOrgActionReward, useCreateOrganizationAppData, useCreateOrganizationBase, useCreateUserAppData, useCreateWeb3Account, useDeleteAnymalFromDatabase, useFetchActionDefinitions, useFetchActions, useFetchAnymals, useFetchBalance, useFetchNotifications, useFetchUserData, useMintAnymalNFT, useProcessOrgPartialKibblePayment, useProcessPartialKibblePayment, useSaveAnymalMetadata, useUpdateAnymalWithNFT, useUpdateOrgWalletAddress, useUpdateUserAsVerified, useUpdateUserEmail, useUpdateUserName, useUpdateUserPid, useUploadAnymalImage, useVerifyAccount, useVerifyWeb3AuthSession };
|
|
397
|
+
export { AUTH_API_ENDPOINTS, type ActionDefinition, type ActionPayload, type ActionRecord, ActionSourceType, ActionStatus, ActionType, type AnymalNftMetadataInputData, type AuthEnvelope, type ContractActionPayload, type CreateAnymalInputData, type ExternalActionPayload, type GraphQLActionPayload, type JWTOptions, type MarketplaceActionPayload, MarketplacePaymentType, NETWORK_HOSTS, Network, type SubmitResponse, type WishlistPurchaseActionPayload, createAuthEnvelope, fetchAnymals, generateAppSignature, generateBytes32Nonce, generateJWT, loadExistingSecp256k1PrivateKey, serializePublicKeyCompressed, submitAction, useAddAnymalToDatabase, useApproveKibbleToken, useApproveOrgPartialPayment, useClaimActionReward, useClaimOrgActionReward, useCreateOrganizationAppData, useCreateOrganizationBase, useCreateUserAppData, useCreateWeb3Account, useDeleteAnymalFromDatabase, useFetchActionDefinitions, useFetchActions, useFetchAnymals, useFetchBalance, useFetchNotifications, useFetchUserData, useMintAnymalNFT, useProcessOrgPartialKibblePayment, useProcessPartialKibblePayment, useSaveAnymalMetadata, useUpdateAnymalWithNFT, useUpdateOrgWalletAddress, useUpdateUserAsVerified, useUpdateUserEmail, useUpdateUserName, useUpdateUserPid, useUploadAnymalImage, useVerifyAccount, useVerifyWeb3AuthSession };
|
package/dist/index.d.ts
CHANGED
|
@@ -235,7 +235,15 @@ declare enum ActionStatus {
|
|
|
235
235
|
PENDING = "PENDING",
|
|
236
236
|
VALIDATED = "VALIDATED_ONCHAIN",
|
|
237
237
|
CLAIMING = "CLAIMING",
|
|
238
|
-
CLAIMED = "CLAIMED"
|
|
238
|
+
CLAIMED = "CLAIMED",
|
|
239
|
+
REJECTED = "REJECTED"
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* How the marketplace item can be verified, stripe transaction, anymal transaction, etc
|
|
243
|
+
*/
|
|
244
|
+
declare enum MarketplacePaymentType {
|
|
245
|
+
STRIPE = "STRIPE",
|
|
246
|
+
ANYMAL = "ANYMAL"
|
|
239
247
|
}
|
|
240
248
|
/**
|
|
241
249
|
* Represents a single action record returned by the backend.
|
|
@@ -323,6 +331,23 @@ interface ContractActionPayload extends BaseActionPayload {
|
|
|
323
331
|
gasUsed: string;
|
|
324
332
|
};
|
|
325
333
|
}
|
|
334
|
+
/**
|
|
335
|
+
* Payload for marketplace action
|
|
336
|
+
*/
|
|
337
|
+
interface MarketplaceActionPayload extends BaseActionPayload {
|
|
338
|
+
orderId: string;
|
|
339
|
+
totalSpent: number;
|
|
340
|
+
paymentTxId: string;
|
|
341
|
+
paymentSource: MarketplacePaymentType;
|
|
342
|
+
kibblePaymentTxId: string;
|
|
343
|
+
lineItems?: any[];
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Payload for a wishlist purchase. same as a marketplace purchase except requires a wishlistId
|
|
347
|
+
*/
|
|
348
|
+
interface WishlistPurchaseActionPayload extends MarketplaceActionPayload {
|
|
349
|
+
wishlistId: string;
|
|
350
|
+
}
|
|
326
351
|
/**
|
|
327
352
|
* Payload for external web-service actions
|
|
328
353
|
*/
|
|
@@ -333,7 +358,7 @@ interface ExternalActionPayload extends BaseActionPayload {
|
|
|
333
358
|
responseStatus?: number;
|
|
334
359
|
responseBody?: any;
|
|
335
360
|
}
|
|
336
|
-
type ActionPayload = GraphQLActionPayload | ContractActionPayload | ExternalActionPayload;
|
|
361
|
+
type ActionPayload = GraphQLActionPayload | ContractActionPayload | ExternalActionPayload | MarketplaceActionPayload | WishlistPurchaseActionPayload;
|
|
337
362
|
interface SubmitResponse {
|
|
338
363
|
ok: boolean;
|
|
339
364
|
id: string;
|
|
@@ -369,4 +394,4 @@ declare function useClaimOrgActionReward(): (orgContractAddress: string, rewarda
|
|
|
369
394
|
message: string;
|
|
370
395
|
}>;
|
|
371
396
|
|
|
372
|
-
export { AUTH_API_ENDPOINTS, type ActionDefinition, type ActionPayload, type ActionRecord, ActionSourceType, ActionStatus, ActionType, type AnymalNftMetadataInputData, type AuthEnvelope, type ContractActionPayload, type CreateAnymalInputData, type ExternalActionPayload, type GraphQLActionPayload, type JWTOptions, NETWORK_HOSTS, Network, type SubmitResponse, createAuthEnvelope, fetchAnymals, generateAppSignature, generateBytes32Nonce, generateJWT, loadExistingSecp256k1PrivateKey, serializePublicKeyCompressed, submitAction, useAddAnymalToDatabase, useApproveKibbleToken, useApproveOrgPartialPayment, useClaimActionReward, useClaimOrgActionReward, useCreateOrganizationAppData, useCreateOrganizationBase, useCreateUserAppData, useCreateWeb3Account, useDeleteAnymalFromDatabase, useFetchActionDefinitions, useFetchActions, useFetchAnymals, useFetchBalance, useFetchNotifications, useFetchUserData, useMintAnymalNFT, useProcessOrgPartialKibblePayment, useProcessPartialKibblePayment, useSaveAnymalMetadata, useUpdateAnymalWithNFT, useUpdateOrgWalletAddress, useUpdateUserAsVerified, useUpdateUserEmail, useUpdateUserName, useUpdateUserPid, useUploadAnymalImage, useVerifyAccount, useVerifyWeb3AuthSession };
|
|
397
|
+
export { AUTH_API_ENDPOINTS, type ActionDefinition, type ActionPayload, type ActionRecord, ActionSourceType, ActionStatus, ActionType, type AnymalNftMetadataInputData, type AuthEnvelope, type ContractActionPayload, type CreateAnymalInputData, type ExternalActionPayload, type GraphQLActionPayload, type JWTOptions, type MarketplaceActionPayload, MarketplacePaymentType, NETWORK_HOSTS, Network, type SubmitResponse, type WishlistPurchaseActionPayload, createAuthEnvelope, fetchAnymals, generateAppSignature, generateBytes32Nonce, generateJWT, loadExistingSecp256k1PrivateKey, serializePublicKeyCompressed, submitAction, useAddAnymalToDatabase, useApproveKibbleToken, useApproveOrgPartialPayment, useClaimActionReward, useClaimOrgActionReward, useCreateOrganizationAppData, useCreateOrganizationBase, useCreateUserAppData, useCreateWeb3Account, useDeleteAnymalFromDatabase, useFetchActionDefinitions, useFetchActions, useFetchAnymals, useFetchBalance, useFetchNotifications, useFetchUserData, useMintAnymalNFT, useProcessOrgPartialKibblePayment, useProcessPartialKibblePayment, useSaveAnymalMetadata, useUpdateAnymalWithNFT, useUpdateOrgWalletAddress, useUpdateUserAsVerified, useUpdateUserEmail, useUpdateUserName, useUpdateUserPid, useUploadAnymalImage, useVerifyAccount, useVerifyWeb3AuthSession };
|
package/dist/index.js
CHANGED
|
@@ -24,6 +24,7 @@ __export(index_exports, {
|
|
|
24
24
|
ActionSourceType: () => ActionSourceType,
|
|
25
25
|
ActionStatus: () => ActionStatus,
|
|
26
26
|
ActionType: () => ActionType,
|
|
27
|
+
MarketplacePaymentType: () => MarketplacePaymentType,
|
|
27
28
|
NETWORK_HOSTS: () => NETWORK_HOSTS,
|
|
28
29
|
Network: () => Network,
|
|
29
30
|
createAuthEnvelope: () => createAuthEnvelope,
|
|
@@ -2208,8 +2209,14 @@ var ActionStatus = /* @__PURE__ */ ((ActionStatus2) => {
|
|
|
2208
2209
|
ActionStatus2["VALIDATED"] = "VALIDATED_ONCHAIN";
|
|
2209
2210
|
ActionStatus2["CLAIMING"] = "CLAIMING";
|
|
2210
2211
|
ActionStatus2["CLAIMED"] = "CLAIMED";
|
|
2212
|
+
ActionStatus2["REJECTED"] = "REJECTED";
|
|
2211
2213
|
return ActionStatus2;
|
|
2212
2214
|
})(ActionStatus || {});
|
|
2215
|
+
var MarketplacePaymentType = /* @__PURE__ */ ((MarketplacePaymentType2) => {
|
|
2216
|
+
MarketplacePaymentType2["STRIPE"] = "STRIPE";
|
|
2217
|
+
MarketplacePaymentType2["ANYMAL"] = "ANYMAL";
|
|
2218
|
+
return MarketplacePaymentType2;
|
|
2219
|
+
})(MarketplacePaymentType || {});
|
|
2213
2220
|
|
|
2214
2221
|
// src/utils/application/useCreateUserAppData.ts
|
|
2215
2222
|
var import_react25 = require("react");
|
|
@@ -2434,6 +2441,7 @@ function useClaimOrgActionReward() {
|
|
|
2434
2441
|
ActionSourceType,
|
|
2435
2442
|
ActionStatus,
|
|
2436
2443
|
ActionType,
|
|
2444
|
+
MarketplacePaymentType,
|
|
2437
2445
|
NETWORK_HOSTS,
|
|
2438
2446
|
Network,
|
|
2439
2447
|
createAuthEnvelope,
|
package/dist/index.mjs
CHANGED
|
@@ -2071,8 +2071,14 @@ var ActionStatus = /* @__PURE__ */ ((ActionStatus2) => {
|
|
|
2071
2071
|
ActionStatus2["VALIDATED"] = "VALIDATED_ONCHAIN";
|
|
2072
2072
|
ActionStatus2["CLAIMING"] = "CLAIMING";
|
|
2073
2073
|
ActionStatus2["CLAIMED"] = "CLAIMED";
|
|
2074
|
+
ActionStatus2["REJECTED"] = "REJECTED";
|
|
2074
2075
|
return ActionStatus2;
|
|
2075
2076
|
})(ActionStatus || {});
|
|
2077
|
+
var MarketplacePaymentType = /* @__PURE__ */ ((MarketplacePaymentType2) => {
|
|
2078
|
+
MarketplacePaymentType2["STRIPE"] = "STRIPE";
|
|
2079
|
+
MarketplacePaymentType2["ANYMAL"] = "ANYMAL";
|
|
2080
|
+
return MarketplacePaymentType2;
|
|
2081
|
+
})(MarketplacePaymentType || {});
|
|
2076
2082
|
|
|
2077
2083
|
// src/utils/application/useCreateUserAppData.ts
|
|
2078
2084
|
import { useCallback as useCallback25 } from "react";
|
|
@@ -2296,6 +2302,7 @@ export {
|
|
|
2296
2302
|
ActionSourceType,
|
|
2297
2303
|
ActionStatus,
|
|
2298
2304
|
ActionType,
|
|
2305
|
+
MarketplacePaymentType,
|
|
2299
2306
|
NETWORK_HOSTS,
|
|
2300
2307
|
Network,
|
|
2301
2308
|
createAuthEnvelope,
|
package/package.json
CHANGED