@keetanetwork/anchor 0.0.62 → 0.0.63

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.
Files changed (80) hide show
  1. package/lib/anchor-metadata-server.d.ts +54 -0
  2. package/lib/anchor-metadata-server.d.ts.map +1 -0
  3. package/lib/anchor-metadata-server.js +62 -0
  4. package/lib/anchor-metadata-server.js.map +1 -0
  5. package/lib/error.d.ts +35 -0
  6. package/lib/error.d.ts.map +1 -1
  7. package/lib/error.generated.d.ts +3 -0
  8. package/lib/error.generated.d.ts.map +1 -0
  9. package/lib/error.generated.js +104 -0
  10. package/lib/error.generated.js.map +1 -0
  11. package/lib/error.js +66 -1
  12. package/lib/error.js.map +1 -1
  13. package/lib/http-server/common.d.ts +20 -2
  14. package/lib/http-server/common.d.ts.map +1 -1
  15. package/lib/http-server/common.js +47 -0
  16. package/lib/http-server/common.js.map +1 -1
  17. package/lib/http-server/index.d.ts +22 -0
  18. package/lib/http-server/index.d.ts.map +1 -1
  19. package/lib/http-server/index.js +23 -0
  20. package/lib/http-server/index.js.map +1 -1
  21. package/lib/metadata.types.d.ts +40 -0
  22. package/lib/metadata.types.d.ts.map +1 -1
  23. package/lib/metadata.types.js.map +1 -1
  24. package/lib/resolver.d.ts +19 -20
  25. package/lib/resolver.d.ts.map +1 -1
  26. package/lib/resolver.js +1420 -681
  27. package/lib/resolver.js.map +1 -1
  28. package/lib/utils/certificate-network.d.ts +84 -0
  29. package/lib/utils/certificate-network.d.ts.map +1 -0
  30. package/lib/utils/certificate-network.js +104 -0
  31. package/lib/utils/certificate-network.js.map +1 -0
  32. package/lib/utils/signing.d.ts +12 -0
  33. package/lib/utils/signing.d.ts.map +1 -1
  34. package/lib/utils/signing.js +145 -2
  35. package/lib/utils/signing.js.map +1 -1
  36. package/npm-shrinkwrap.json +4 -4
  37. package/package.json +1 -1
  38. package/services/asset-movement/common.d.ts.map +1 -1
  39. package/services/asset-movement/common.js +7 -53
  40. package/services/asset-movement/common.js.map +1 -1
  41. package/services/asset-movement/server.d.ts +6 -4
  42. package/services/asset-movement/server.d.ts.map +1 -1
  43. package/services/asset-movement/server.js +3 -3
  44. package/services/asset-movement/server.js.map +1 -1
  45. package/services/fx/common.js +7 -7
  46. package/services/fx/server.d.ts +9 -7
  47. package/services/fx/server.d.ts.map +1 -1
  48. package/services/fx/server.js +5 -5
  49. package/services/fx/server.js.map +1 -1
  50. package/services/kyc/server.d.ts +6 -4
  51. package/services/kyc/server.d.ts.map +1 -1
  52. package/services/kyc/server.js +3 -3
  53. package/services/kyc/server.js.map +1 -1
  54. package/services/notification/common.d.ts +2 -1
  55. package/services/notification/common.d.ts.map +1 -1
  56. package/services/notification/common.generated.js +20 -20
  57. package/services/notification/common.js +3 -2
  58. package/services/notification/common.js.map +1 -1
  59. package/services/notification/server.d.ts +7 -6
  60. package/services/notification/server.d.ts.map +1 -1
  61. package/services/notification/server.js +25 -62
  62. package/services/notification/server.js.map +1 -1
  63. package/services/storage/common.d.ts +2 -1
  64. package/services/storage/common.d.ts.map +1 -1
  65. package/services/storage/common.js +7 -2
  66. package/services/storage/common.js.map +1 -1
  67. package/services/storage/server.d.ts +7 -5
  68. package/services/storage/server.d.ts.map +1 -1
  69. package/services/storage/server.js +29 -99
  70. package/services/storage/server.js.map +1 -1
  71. package/services/username/common.d.ts +2 -1
  72. package/services/username/common.d.ts.map +1 -1
  73. package/services/username/common.generated.js +14 -48
  74. package/services/username/common.generated.js.map +1 -1
  75. package/services/username/common.js +3 -2
  76. package/services/username/common.js.map +1 -1
  77. package/services/username/server.d.ts +7 -6
  78. package/services/username/server.d.ts.map +1 -1
  79. package/services/username/server.js +38 -46
  80. package/services/username/server.js.map +1 -1
@@ -0,0 +1,84 @@
1
+ import type * as KeetaNetClient from '@keetanetwork/keetanet-client';
2
+ import * as KeetaNet from '@keetanetwork/keetanet-client';
3
+ import { Certificate } from '../certificates.js';
4
+ type AccountKeyAlgorithm = InstanceType<typeof KeetaNetClient.lib.Account>['keyType'];
5
+ type KeetaNetAccount = ReturnType<typeof KeetaNetClient.lib.Account.fromSeed<AccountKeyAlgorithm>>;
6
+ type KeetaNetNetwork = typeof KeetaNet.Client.Config.networksArray[number];
7
+ /**
8
+ * Outcome of verifying an account's on-chain cert chain against a trust
9
+ * set:
10
+ *
11
+ * - `'trusted'`: at least one published cert chains to a trusted issuer.
12
+ * - `'no-certs'`: account has no published certificates.
13
+ * - `'untrusted'`: certs exist but none chain to a trusted issuer.
14
+ */
15
+ export type CertificateChainStatus = 'trusted' | 'no-certs' | 'untrusted';
16
+ /**
17
+ * Verify that the supplied account has at least one on-chain certificate
18
+ * whose chain terminates at one of the supplied trusted issuers.
19
+ */
20
+ export declare function verifyAccountCertificateChain(args: {
21
+ account: KeetaNetAccount;
22
+ client: InstanceType<typeof KeetaNetClient.Client>;
23
+ trustedIssuers: Certificate[];
24
+ }): Promise<CertificateChainStatus>;
25
+ /**
26
+ * Public configuration for the on-chain certificate-chain gate. Pass on a
27
+ * server config (`requireCertificateChain`) to require that every authenticated
28
+ * caller has at least one published certificate chaining to one of `trustedIssuers`.
29
+ */
30
+ export interface CertificateChainConfig {
31
+ trustedIssuers: Certificate[];
32
+ client: InstanceType<typeof KeetaNetClient.Client>;
33
+ }
34
+ /**
35
+ * Post-validation form of {@link CertificateChainConfig}. `acceptedIssuerDNs`
36
+ * is precomputed once so error payloads don't re-walk `trustedIssuers`.
37
+ */
38
+ export interface ResolvedCertificateChainRequirement {
39
+ readonly trustedIssuers: Certificate[];
40
+ readonly client: InstanceType<typeof KeetaNetClient.Client>;
41
+ readonly acceptedIssuerDNs: {
42
+ name: string;
43
+ value: string;
44
+ }[][];
45
+ }
46
+ /**
47
+ * Validate and freeze a `CertificateChainConfig`.
48
+ */
49
+ export declare function resolveCertificateChainConfig(config: CertificateChainConfig | undefined): ResolvedCertificateChainRequirement | undefined;
50
+ /**
51
+ * Default delimiter used by {@link certificateChainConfigFromBundle} to
52
+ * separate concatenated PEM-encoded certificates in a single string.
53
+ */
54
+ export declare const DEFAULT_CERTIFICATE_BUNDLE_DELIMITER = "|";
55
+ /**
56
+ * Arguments accepted by {@link certificateChainConfigFromBundle}.
57
+ */
58
+ export interface CertificateChainConfigFromBundleArgs {
59
+ /**
60
+ * One or more PEM-encoded certificates joined with `delimiter`.
61
+ */
62
+ pemBundle: string;
63
+ /**
64
+ * KeetaNet network used to instantiate the client.
65
+ */
66
+ network: KeetaNetNetwork;
67
+ /**
68
+ * Delimiter used to split `pemBundle`. Defaults to
69
+ * {@link DEFAULT_CERTIFICATE_BUNDLE_DELIMITER}.
70
+ */
71
+ delimiter?: string;
72
+ }
73
+ /**
74
+ * Build a {@link CertificateChainConfig} from a delimited PEM bundle and a network.
75
+ */
76
+ export declare function certificateChainConfigFromBundle(args: CertificateChainConfigFromBundleArgs): CertificateChainConfig;
77
+ /**
78
+ * Verify the signing account's on-chain certificate chain against the
79
+ * resolved requirement. Throws `KeetaAnchorCertificateRequiredError` when
80
+ * the gate is configured and the account fails it.
81
+ */
82
+ export declare function assertAccountCertificateChain(account: KeetaNetAccount, requirement: ResolvedCertificateChainRequirement | undefined): Promise<void>;
83
+ export {};
84
+ //# sourceMappingURL=certificate-network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificate-network.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/certificate-network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,cAAc,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,KAAK,mBAAmB,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC;AACtF,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAEnG,KAAK,eAAe,GAAG,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAE3E;;;;;;;GAOG;AACH,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;AAE1E;;;GAGG;AACH,wBAAsB,6BAA6B,CAAC,IAAI,EAAE;IACzD,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;IACnD,cAAc,EAAE,WAAW,EAAE,CAAC;CAC9B,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAmClC;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACtC,cAAc,EAAE,WAAW,EAAE,CAAC;IAC9B,MAAM,EAAE,YAAY,CAAC,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;CACnD;AAED;;;GAGG;AACH,MAAM,WAAW,mCAAmC;IACnD,QAAQ,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;IAC5D,QAAQ,CAAC,iBAAiB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;KAAE,EAAE,EAAE,CAAC;CACjE;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,GAAG,SAAS,GAAG,mCAAmC,GAAG,SAAS,CAazI;AAED;;;GAGG;AACH,eAAO,MAAM,oCAAoC,MAAM,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,oCAAoC;IACpD;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,eAAe,CAAC;IAEzB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,oCAAoC,GAAG,sBAAsB,CAcnH;AAED;;;;GAIG;AACH,wBAAsB,6BAA6B,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mCAAmC,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBzJ"}
@@ -0,0 +1,104 @@
1
+ import * as KeetaNet from '@keetanetwork/keetanet-client';
2
+ import { Certificate } from '../certificates.js';
3
+ import { KeetaAnchorCertificateRequiredError } from '../error.js';
4
+ /**
5
+ * Verify that the supplied account has at least one on-chain certificate
6
+ * whose chain terminates at one of the supplied trusted issuers.
7
+ */
8
+ export async function verifyAccountCertificateChain(args) {
9
+ const { account, client, trustedIssuers } = args;
10
+ const records = await client.getAllCertificates(account);
11
+ if (records.length === 0) {
12
+ return ('no-certs');
13
+ }
14
+ if (trustedIssuers.length === 0) {
15
+ return ('untrusted');
16
+ }
17
+ const rootSet = new Set(trustedIssuers);
18
+ for (const record of records) {
19
+ let intermediate;
20
+ if (record.intermediates === null) {
21
+ intermediate = new Set();
22
+ }
23
+ else {
24
+ intermediate = new Set(record.intermediates.getCertificates());
25
+ }
26
+ let candidate;
27
+ try {
28
+ candidate = new Certificate(record.certificate.toPEM(), {
29
+ store: { root: rootSet, intermediate }
30
+ });
31
+ }
32
+ catch {
33
+ continue;
34
+ }
35
+ if (candidate.trusted) {
36
+ return ('trusted');
37
+ }
38
+ }
39
+ return ('untrusted');
40
+ }
41
+ /**
42
+ * Validate and freeze a `CertificateChainConfig`.
43
+ */
44
+ export function resolveCertificateChainConfig(config) {
45
+ if (config === undefined) {
46
+ return (undefined);
47
+ }
48
+ if (config.trustedIssuers.length === 0) {
49
+ throw (new Error('requireCertificateChain.trustedIssuers must contain at least one issuer'));
50
+ }
51
+ return ({
52
+ trustedIssuers: config.trustedIssuers,
53
+ client: config.client,
54
+ acceptedIssuerDNs: config.trustedIssuers.map(function (cert) { return (cert.subjectDN); })
55
+ });
56
+ }
57
+ /**
58
+ * Default delimiter used by {@link certificateChainConfigFromBundle} to
59
+ * separate concatenated PEM-encoded certificates in a single string.
60
+ */
61
+ export const DEFAULT_CERTIFICATE_BUNDLE_DELIMITER = '|';
62
+ /**
63
+ * Build a {@link CertificateChainConfig} from a delimited PEM bundle and a network.
64
+ */
65
+ export function certificateChainConfigFromBundle(args) {
66
+ const delimiter = args.delimiter ?? DEFAULT_CERTIFICATE_BUNDLE_DELIMITER;
67
+ const trustedIssuers = args.pemBundle
68
+ .split(delimiter)
69
+ .map(function (pem) { return (pem.trim()); })
70
+ .filter(function (pem) { return (pem.length > 0); })
71
+ .map(function (pem) { return (new Certificate(pem)); });
72
+ if (trustedIssuers.length === 0) {
73
+ throw (new Error('pemBundle contains no certificates'));
74
+ }
75
+ const client = KeetaNet.Client.fromNetwork(args.network);
76
+ return ({ trustedIssuers, client });
77
+ }
78
+ /**
79
+ * Verify the signing account's on-chain certificate chain against the
80
+ * resolved requirement. Throws `KeetaAnchorCertificateRequiredError` when
81
+ * the gate is configured and the account fails it.
82
+ */
83
+ export async function assertAccountCertificateChain(account, requirement) {
84
+ if (requirement === undefined) {
85
+ return;
86
+ }
87
+ const status = await verifyAccountCertificateChain({
88
+ account,
89
+ client: requirement.client,
90
+ trustedIssuers: requirement.trustedIssuers
91
+ });
92
+ if (status === 'trusted') {
93
+ return;
94
+ }
95
+ let kind;
96
+ if (status === 'no-certs') {
97
+ kind = 'missing';
98
+ }
99
+ else {
100
+ kind = 'untrusted';
101
+ }
102
+ throw (new KeetaAnchorCertificateRequiredError({ acceptedIssuers: requirement.acceptedIssuerDNs, kind }));
103
+ }
104
+ //# sourceMappingURL=certificate-network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certificate-network.js","sourceRoot":"","sources":["../../../src/lib/utils/certificate-network.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as KeetaNetClient from '@keetanetwork/keetanet-client';\nimport * as KeetaNet from '@keetanetwork/keetanet-client';\n\nimport type { KeetaAnchorCertificateRequiredKind } from '../error.js';\nimport { Certificate } from '../certificates.js';\nimport { KeetaAnchorCertificateRequiredError } from '../error.js';\n\ntype AccountKeyAlgorithm = InstanceType<typeof KeetaNetClient.lib.Account>['keyType'];\ntype KeetaNetAccount = ReturnType<typeof KeetaNetClient.lib.Account.fromSeed<AccountKeyAlgorithm>>;\ntype BaseCertificate = InstanceType<typeof KeetaNetClient.lib.Utils.Certificate.Certificate>;\ntype KeetaNetNetwork = typeof KeetaNet.Client.Config.networksArray[number];\n\n/**\n * Outcome of verifying an account's on-chain cert chain against a trust\n * set:\n *\n * - `'trusted'`: at least one published cert chains to a trusted issuer.\n * - `'no-certs'`: account has no published certificates.\n * - `'untrusted'`: certs exist but none chain to a trusted issuer.\n */\nexport type CertificateChainStatus = 'trusted' | 'no-certs' | 'untrusted';\n\n/**\n * Verify that the supplied account has at least one on-chain certificate\n * whose chain terminates at one of the supplied trusted issuers.\n */\nexport async function verifyAccountCertificateChain(args: {\n\taccount: KeetaNetAccount;\n\tclient: InstanceType<typeof KeetaNetClient.Client>;\n\ttrustedIssuers: Certificate[];\n}): Promise<CertificateChainStatus> {\n\tconst { account, client, trustedIssuers } = args;\n\tconst records = await client.getAllCertificates(account);\n\tif (records.length === 0) {\n\t\treturn('no-certs');\n\t}\n\n\tif (trustedIssuers.length === 0) {\n\t\treturn('untrusted');\n\t}\n\n\tconst rootSet = new Set<BaseCertificate>(trustedIssuers);\n\tfor (const record of records) {\n\t\tlet intermediate: Set<BaseCertificate>;\n\t\tif (record.intermediates === null) {\n\t\t\tintermediate = new Set<BaseCertificate>();\n\t\t} else {\n\t\t\tintermediate = new Set<BaseCertificate>(record.intermediates.getCertificates());\n\t\t}\n\n\t\tlet candidate: Certificate;\n\t\ttry {\n\t\t\tcandidate = new Certificate(record.certificate.toPEM(), {\n\t\t\t\tstore: { root: rootSet, intermediate }\n\t\t\t});\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (candidate.trusted) {\n\t\t\treturn('trusted');\n\t\t}\n\t}\n\n\treturn('untrusted');\n}\n\n/**\n * Public configuration for the on-chain certificate-chain gate. Pass on a\n * server config (`requireCertificateChain`) to require that every authenticated\n * caller has at least one published certificate chaining to one of `trustedIssuers`.\n */\nexport interface CertificateChainConfig {\n\ttrustedIssuers: Certificate[];\n\tclient: InstanceType<typeof KeetaNetClient.Client>;\n}\n\n/**\n * Post-validation form of {@link CertificateChainConfig}. `acceptedIssuerDNs`\n * is precomputed once so error payloads don't re-walk `trustedIssuers`.\n */\nexport interface ResolvedCertificateChainRequirement {\n\treadonly trustedIssuers: Certificate[];\n\treadonly client: InstanceType<typeof KeetaNetClient.Client>;\n\treadonly acceptedIssuerDNs: { name: string; value: string; }[][];\n}\n\n/**\n * Validate and freeze a `CertificateChainConfig`.\n */\nexport function resolveCertificateChainConfig(config: CertificateChainConfig | undefined): ResolvedCertificateChainRequirement | undefined {\n\tif (config === undefined) {\n\t\treturn(undefined);\n\t}\n\tif (config.trustedIssuers.length === 0) {\n\t\tthrow(new Error('requireCertificateChain.trustedIssuers must contain at least one issuer'));\n\t}\n\n\treturn({\n\t\ttrustedIssuers: config.trustedIssuers,\n\t\tclient: config.client,\n\t\tacceptedIssuerDNs: config.trustedIssuers.map(function(cert) { return(cert.subjectDN); })\n\t});\n}\n\n/**\n * Default delimiter used by {@link certificateChainConfigFromBundle} to\n * separate concatenated PEM-encoded certificates in a single string.\n */\nexport const DEFAULT_CERTIFICATE_BUNDLE_DELIMITER = '|';\n\n/**\n * Arguments accepted by {@link certificateChainConfigFromBundle}.\n */\nexport interface CertificateChainConfigFromBundleArgs {\n\t/**\n\t * One or more PEM-encoded certificates joined with `delimiter`.\n\t */\n\tpemBundle: string;\n\n\t/**\n\t * KeetaNet network used to instantiate the client.\n\t */\n\tnetwork: KeetaNetNetwork;\n\n\t/**\n\t * Delimiter used to split `pemBundle`. Defaults to\n\t * {@link DEFAULT_CERTIFICATE_BUNDLE_DELIMITER}.\n\t */\n\tdelimiter?: string;\n}\n\n/**\n * Build a {@link CertificateChainConfig} from a delimited PEM bundle and a network.\n */\nexport function certificateChainConfigFromBundle(args: CertificateChainConfigFromBundleArgs): CertificateChainConfig {\n\tconst delimiter = args.delimiter ?? DEFAULT_CERTIFICATE_BUNDLE_DELIMITER;\n\tconst trustedIssuers = args.pemBundle\n\t\t.split(delimiter)\n\t\t.map(function(pem) { return(pem.trim()); })\n\t\t.filter(function(pem) { return(pem.length > 0); })\n\t\t.map(function(pem) { return(new Certificate(pem)); });\n\n\tif (trustedIssuers.length === 0) {\n\t\tthrow(new Error('pemBundle contains no certificates'));\n\t}\n\n\tconst client = KeetaNet.Client.fromNetwork(args.network);\n\treturn({ trustedIssuers, client });\n}\n\n/**\n * Verify the signing account's on-chain certificate chain against the\n * resolved requirement. Throws `KeetaAnchorCertificateRequiredError` when\n * the gate is configured and the account fails it.\n */\nexport async function assertAccountCertificateChain(account: KeetaNetAccount, requirement: ResolvedCertificateChainRequirement | undefined): Promise<void> {\n\tif (requirement === undefined) {\n\t\treturn;\n\t}\n\n\tconst status = await verifyAccountCertificateChain({\n\t\taccount,\n\t\tclient: requirement.client,\n\t\ttrustedIssuers: requirement.trustedIssuers\n\t});\n\tif (status === 'trusted') {\n\t\treturn;\n\t}\n\n\tlet kind: KeetaAnchorCertificateRequiredKind;\n\tif (status === 'no-certs') {\n\t\tkind = 'missing';\n\t} else {\n\t\tkind = 'untrusted';\n\t}\n\n\tthrow(new KeetaAnchorCertificateRequiredError({ acceptedIssuers: requirement.acceptedIssuerDNs, kind }));\n}\n"]}
@@ -3,6 +3,18 @@ import { Buffer } from '../../lib/utils/buffer.js';
3
3
  export type SignableAccount = ReturnType<InstanceType<typeof KeetaNetLib.Account>['assertAccount']>;
4
4
  export type VerifiableAccount = InstanceType<typeof KeetaNetLib.Account>;
5
5
  export type Signable = (string | number | bigint | InstanceType<typeof KeetaNetLib.Account>)[];
6
+ /**
7
+ * Structural input to {@link objectToSignable}.
8
+ */
9
+ export type SignableInput = {
10
+ [key: string | number | symbol]: unknown;
11
+ } | SignableInput[] | Signable[number] | undefined | null | boolean;
12
+ /**
13
+ * Canonicalize a tree into a {@link Signable} via {@link canonicalizeJson}.
14
+ * {@link KeetaNetLib.Account} instances are replaced by their `publicKeyAndTypeString`.
15
+ * {@link Date} instances are replaced by their ISO 8601 string.
16
+ */
17
+ export declare function objectToSignable(item: SignableInput): Signable;
6
18
  /**
7
19
  * Options for signature verification
8
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"signing.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/signing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAMnE,OAAO,EAAE,MAAM,EAAuB,MAAM,2BAA2B,CAAC;AAIxE,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,YAAY,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AACpG,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AACzE,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AAE/F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,aAAa,CAAC,EAAE,IAAI,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;CAAE,CAoDjL;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;CAAE,CAAC,CAS1I;AAED,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,EAC5C,OAAO,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,OAAO,CAAC,CA6BlB"}
1
+ {"version":3,"file":"signing.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/signing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAMnE,OAAO,EAAE,MAAM,EAAgD,MAAM,2BAA2B,CAAC;AAKjG,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,YAAY,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AACpG,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AACzE,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AAE/F;;GAEG;AACH,MAAM,MAAM,aAAa,GACxB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;CAAE,GAC5C,aAAa,EAAE,GACf,QAAQ,CAAC,MAAM,CAAC,GAChB,SAAS,GACT,IAAI,GACJ,OAAO,CAAC;AA2GT;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,QAAQ,CA2D9D;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,aAAa,CAAC,EAAE,IAAI,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;CAAE,CAoDjL;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;CAAE,CAAC,CAS1I;AAED,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,EAC5C,OAAO,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,OAAO,CAAC,CA6BlB"}
@@ -1,7 +1,150 @@
1
1
  import { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';
2
- import { Buffer, bufferToArrayBuffer } from '../../lib/utils/buffer.js';
2
+ import { Buffer, bufferToArrayBuffer, arrayBufferLikeToBuffer } from '../../lib/utils/buffer.js';
3
3
  import crypto from '../../lib/utils/crypto.js';
4
4
  import { assertNever } from '../../lib/utils/never.js';
5
+ import { KeetaAnchorError } from '../error.js';
6
+ const TO_SIGNABLE_MAX_NODES = 1000;
7
+ const TO_SIGNABLE_MAX_OUTPUT_BYTES = 65536;
8
+ /**
9
+ * Detects unpaired UTF-16 surrogate code units. JCS
10
+ * ({@link https://www.rfc-editor.org/rfc/rfc8785 RFC 8785} Section 3.2.2.2)
11
+ * requires implementations to reject such strings.
12
+ */
13
+ const LONE_SURROGATE_PATTERN = /[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/;
14
+ /**
15
+ * Serialize a JSON-shaped value following JCS
16
+ * ({@link https://www.rfc-editor.org/rfc/rfc8785 RFC 8785}).
17
+ */
18
+ function canonicalizeJson(value) {
19
+ /**
20
+ * Literal serialization (Section 3.2.2.1).
21
+ */
22
+ if (value === null || typeof value === 'boolean') {
23
+ return (JSON.stringify(value));
24
+ }
25
+ /**
26
+ * String serialization (Section 3.2.2.2). Lone UTF-16 surrogates MUST cause termination.
27
+ */
28
+ if (typeof value === 'string') {
29
+ if (LONE_SURROGATE_PATTERN.test(value)) {
30
+ throw (new KeetaAnchorError('Lone UTF-16 surrogate in canonicalizeJson'));
31
+ }
32
+ return (JSON.stringify(value));
33
+ }
34
+ /**
35
+ * Number serialization (Section 3.2.2.3). NaN and Infinity MUST cause termination.
36
+ */
37
+ if (typeof value === 'number') {
38
+ if (!Number.isFinite(value)) {
39
+ throw (new KeetaAnchorError('non-finite number in canonicalizeJson'));
40
+ }
41
+ return (JSON.stringify(value));
42
+ }
43
+ /**
44
+ * Big integer serialization (Appendix D); I-JSON safe-integer range required.
45
+ */
46
+ if (typeof value === 'bigint') {
47
+ if (value > BigInt(Number.MAX_SAFE_INTEGER) || value < BigInt(Number.MIN_SAFE_INTEGER)) {
48
+ throw (new KeetaAnchorError('bigint out of safe integer range in canonicalizeJson'));
49
+ }
50
+ return (value.toString());
51
+ }
52
+ /**
53
+ * Array element order MUST NOT be changed (Section 3.2.3); sparse holes serialize as JSON `null`.
54
+ */
55
+ if (Array.isArray(value)) {
56
+ const parts = [];
57
+ for (let i = 0; i < value.length; i++) {
58
+ parts.push(i in value ? canonicalizeJson(value[i]) : 'null');
59
+ }
60
+ return (`[${parts.join(',')}]`);
61
+ }
62
+ /**
63
+ * Object property sorting by UTF-16 code unit (Section 3.2.3); recursion required.
64
+ * Only plain objects are permitted; class instances (Date, Map, etc.) are rejected.
65
+ */
66
+ if (typeof value === 'object') {
67
+ if (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) {
68
+ throw (new KeetaAnchorError('Non-plain object in canonicalizeJson'));
69
+ }
70
+ const entries = Object.entries(value);
71
+ for (const [key] of entries) {
72
+ if (LONE_SURROGATE_PATTERN.test(key)) {
73
+ throw (new KeetaAnchorError('Lone UTF-16 surrogate in object key'));
74
+ }
75
+ }
76
+ entries.sort(([a], [b]) => {
77
+ if (a < b) {
78
+ return (-1);
79
+ }
80
+ if (a > b) {
81
+ return (1);
82
+ }
83
+ return (0);
84
+ });
85
+ const parts = [];
86
+ for (const [key, child] of entries) {
87
+ parts.push(`${JSON.stringify(key)}:${canonicalizeJson(child)}`);
88
+ }
89
+ return (`{${parts.join(',')}}`);
90
+ }
91
+ throw (new KeetaAnchorError('Unsupported value type in canonicalizeJson'));
92
+ }
93
+ /**
94
+ * Canonicalize a tree into a {@link Signable} via {@link canonicalizeJson}.
95
+ * {@link KeetaNetLib.Account} instances are replaced by their `publicKeyAndTypeString`.
96
+ * {@link Date} instances are replaced by their ISO 8601 string.
97
+ */
98
+ export function objectToSignable(item) {
99
+ let nodeCount = 0;
100
+ function visit(value) {
101
+ nodeCount++;
102
+ if (nodeCount > TO_SIGNABLE_MAX_NODES) {
103
+ throw (new KeetaAnchorError('Too much data to sign in objectToSignable'));
104
+ }
105
+ if (value === undefined || value === null) {
106
+ return (null);
107
+ }
108
+ if (value instanceof Date) {
109
+ if (Number.isNaN(value.valueOf())) {
110
+ throw (new KeetaAnchorError('Invalid Date in objectToSignable'));
111
+ }
112
+ return (value.toISOString());
113
+ }
114
+ if (KeetaNetLib.Account.isInstance(value)) {
115
+ return (value.publicKeyAndTypeString);
116
+ }
117
+ if (Array.isArray(value)) {
118
+ if (value.length > TO_SIGNABLE_MAX_NODES - nodeCount) {
119
+ throw (new KeetaAnchorError('Too much data to sign in objectToSignable'));
120
+ }
121
+ const result = [];
122
+ for (const child of value) {
123
+ result.push(visit(child));
124
+ }
125
+ return (result);
126
+ }
127
+ if (typeof value === 'object') {
128
+ if (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) {
129
+ throw (new KeetaAnchorError('Non-plain object in objectToSignable'));
130
+ }
131
+ const result = {};
132
+ for (const [key, child] of Object.entries(value)) {
133
+ if (child === undefined) {
134
+ continue;
135
+ }
136
+ result[key] = visit(child);
137
+ }
138
+ return (result);
139
+ }
140
+ return (value);
141
+ }
142
+ const canonical = canonicalizeJson(visit(item));
143
+ if (Buffer.byteLength(canonical, 'utf8') > TO_SIGNABLE_MAX_OUTPUT_BYTES) {
144
+ throw (new KeetaAnchorError('Canonical output exceeds size limit in objectToSignable'));
145
+ }
146
+ return ([canonical]);
147
+ }
5
148
  export function FormatData(account, data, nonce, timestamp) {
6
149
  nonce ??= crypto.randomUUID();
7
150
  timestamp ??= new Date();
@@ -50,7 +193,7 @@ export function FormatData(account, data, nonce, timestamp) {
50
193
  return ({
51
194
  nonce: nonce,
52
195
  timestamp: timestampString,
53
- verificationData: Buffer.from(verificationData.toBER())
196
+ verificationData: arrayBufferLikeToBuffer(verificationData.toBER())
54
197
  });
55
198
  }
56
199
  export async function SignData(account, data) {
@@ -1 +1 @@
1
- {"version":3,"file":"signing.js","sourceRoot":"","sources":["../../../src/lib/utils/signing.ts"],"names":[],"mappings":"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","sourcesContent":["import { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';\nimport type {\n\tValidateASN1 as KeetaNetASN1Validation,\n\tASN1AnyJS as KeetaNetASN1AnyJS\n} from '@keetanetwork/keetanet-client/lib/utils/asn1.js';\n\nimport { Buffer, bufferToArrayBuffer } from '../../lib/utils/buffer.js';\nimport crypto from '../../lib/utils/crypto.js';\nimport { assertNever } from '../../lib/utils/never.js';\n\nexport type SignableAccount = ReturnType<InstanceType<typeof KeetaNetLib.Account>['assertAccount']>;\nexport type VerifiableAccount = InstanceType<typeof KeetaNetLib.Account>;\nexport type Signable = (string | number | bigint | InstanceType<typeof KeetaNetLib.Account>)[];\n\n/**\n * Options for signature verification\n */\nexport interface VerifyOptions {\n\t/** Maximum allowed time difference in milliseconds (default: 5 * 60 * 1000 = 5 minutes) */\n\tmaxSkewMs?: number;\n\t/** Reference time for skew calculation (default: new Date()) */\n\treferenceTime?: Date;\n}\n\nexport function FormatData(account: VerifiableAccount, data: Signable, nonce?: string, timestamp?: string | Date): { nonce: string; timestamp: string; verificationData: Buffer; } {\n\tnonce ??= crypto.randomUUID();\n\ttimestamp ??= new Date();\n\n\tlet timestampString: string;\n\tif (typeof timestamp === 'string') {\n\t\ttimestampString = timestamp;\n\t} else {\n\t\ttimestampString = timestamp.toISOString();\n\t}\n\n\tconst input: KeetaNetASN1AnyJS[] = [\n\t\tnonce,\n\t\ttimestampString,\n\t\taccount.publicKeyAndType\n\t];\n\n\tconst schema: KeetaNetASN1Validation.Schema[] = [\n\t\t{ type: 'string', kind: 'utf8' },\n\t\t{ type: 'string', kind: 'utf8' },\n\t\tKeetaNetLib.Utils.ASN1.ValidateASN1.IsOctetString\n\t];\n\n\tfor (const item of data) {\n\t\tif (typeof item === 'string') {\n\t\t\tinput.push(item);\n\t\t\tschema.push({ type: 'string', kind: 'utf8' });\n\t\t} else if (typeof item === 'number' || typeof item === 'bigint') {\n\t\t\tinput.push(item);\n\t\t\tschema.push(KeetaNetLib.Utils.ASN1.ValidateASN1.IsInteger);\n\t\t} else if (KeetaNetLib.Account.isInstance(item)) {\n\t\t\tinput.push(item.publicKeyAndType);\n\t\t\tschema.push(KeetaNetLib.Utils.ASN1.ValidateASN1.IsOctetString);\n\t\t} else {\n\t\t\tassertNever(item);\n\t\t}\n\t}\n\n\t/*\n\t * Verify that the generated ASN.1 data matches the expected schema before returning it.\n\t */\n\t// @ts-ignore\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\tconst inputCanonical = KeetaNetLib.Utils.ASN1.ValidateASN1.againstSchema(input, schema);\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\tconst verificationData = KeetaNetLib.Utils.ASN1.JStoASN1(inputCanonical);\n\n\treturn({\n\t\tnonce: nonce,\n\t\ttimestamp: timestampString,\n\t\tverificationData: Buffer.from(verificationData.toBER())\n\t});\n}\n\nexport async function SignData(account: SignableAccount, data: Signable): Promise<{ nonce: string; timestamp: string; signature: string; }> {\n\tconst { nonce, timestamp, verificationData } = FormatData(account, data);\n\tconst signature = await account.sign(bufferToArrayBuffer(verificationData));\n\n\treturn({\n\t\tnonce: nonce,\n\t\ttimestamp: timestamp,\n\t\tsignature: signature.getBuffer().toString('base64')\n\t});\n}\n\nexport async function VerifySignedData(\n\taccount: VerifiableAccount,\n\tdata: Signable,\n\tsigned: Awaited<ReturnType<typeof SignData>>,\n\toptions?: VerifyOptions\n): Promise<boolean> {\n\tconst nonce = signed.nonce;\n\tconst timestampString = signed.timestamp;\n\tconst signatureBuffer = Buffer.from(signed.signature, 'base64');\n\n\tconst timestamp = new Date(timestampString);\n\t/*\n\t * Enforce that the timestamp string is in valid ISO 8601 format,\n\t * not just a date that can be parsed\n\t *\n\t * XXX:TODO: This is not a perfect check since ISO 8601 does not require millisecond-level\n\t * precision and technically allows other timezones (though we will not support\n\t * those). This will be changed in the future to be more robust.\n\t */\n\tif (timestamp.toISOString() !== timestampString) {\n\t\treturn(false);\n\t}\n\n\tconst maxSkewMs = options?.maxSkewMs ?? 5 * 60 * 1000;\n\tconst referenceTime = options?.referenceTime ?? new Date();\n\tif (Math.abs(timestamp.valueOf() - referenceTime.valueOf()) > maxSkewMs) {\n\t\t/* Timestamp exceeds allowed skew from reference time */\n\t\treturn(false);\n\t}\n\n\t/* XXX:TODO: Verify that the timestamp is a valid ISO 8601 date string within a reasonable range */\n\tconst { verificationData } = FormatData(account, data, nonce, timestampString);\n\n\treturn(account.verify(KeetaNetLib.Utils.Helper.bufferToArrayBuffer(verificationData), KeetaNetLib.Utils.Helper.bufferToArrayBuffer(signatureBuffer)));\n}\n"]}
1
+ {"version":3,"file":"signing.js","sourceRoot":"","sources":["../../../src/lib/utils/signing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAMnE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACjG,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAiB/C,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAE3C;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,wEAAwE,CAAC;AAExG;;;GAGG;AACH,SAAS,gBAAgB,CAAC,KAAc;IACvC;;OAEG;IACH,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAClD,OAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,MAAK,CAAC,IAAI,gBAAgB,CAAC,2CAA2C,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,OAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAK,CAAC,IAAI,gBAAgB,CAAC,uCAAuC,CAAC,CAAC,CAAC;QACtE,CAAC;QAED,OAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACxF,MAAK,CAAC,IAAI,gBAAgB,CAAC,sDAAsD,CAAC,CAAC,CAAC;QACrF,CAAC;QAED,OAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC9D,CAAC;QAED,OAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YAChG,MAAK,CAAC,IAAI,gBAAgB,CAAC,sCAAsC,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,MAAM,CAAE,GAAG,CAAE,IAAI,OAAO,EAAE,CAAC;YAC/B,IAAI,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,MAAK,CAAC,IAAI,gBAAgB,CAAC,qCAAqC,CAAC,CAAC,CAAC;YACpE,CAAC;QACF,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAE,EAAE,CAAE,CAAC,CAAE,EAAE,EAAE;YAC7B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACX,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACX,OAAM,CAAC,CAAC,CAAC,CAAC;YACX,CAAC;YAED,OAAM,CAAC,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAE,GAAG,EAAE,KAAK,CAAE,IAAI,OAAO,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,OAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,MAAK,CAAC,IAAI,gBAAgB,CAAC,4CAA4C,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAmB;IACnD,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,SAAS,KAAK,CAAC,KAAc;QAC5B,SAAS,EAAE,CAAC;QACZ,IAAI,SAAS,GAAG,qBAAqB,EAAE,CAAC;YACvC,MAAK,CAAC,IAAI,gBAAgB,CAAC,2CAA2C,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC3C,OAAM,CAAC,IAAI,CAAC,CAAC;QACd,CAAC;QACD,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBACnC,MAAK,CAAC,IAAI,gBAAgB,CAAC,kCAAkC,CAAC,CAAC,CAAC;YACjE,CAAC;YAED,OAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,IAAI,KAAK,CAAC,MAAM,GAAG,qBAAqB,GAAG,SAAS,EAAE,CAAC;gBACtD,MAAK,CAAC,IAAI,gBAAgB,CAAC,2CAA2C,CAAC,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,MAAM,GAAc,EAAE,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3B,CAAC;YAED,OAAM,CAAC,MAAM,CAAC,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;gBAChG,MAAK,CAAC,IAAI,gBAAgB,CAAC,sCAAsC,CAAC,CAAC,CAAC;YACrE,CAAC;YAED,MAAM,MAAM,GAA+B,EAAE,CAAC;YAC9C,KAAK,MAAM,CAAE,GAAG,EAAE,KAAK,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACzB,SAAS;gBACV,CAAC;gBAED,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;YAED,OAAM,CAAC,MAAM,CAAC,CAAC;QAChB,CAAC;QAED,OAAM,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,4BAA4B,EAAE,CAAC;QACzE,MAAK,CAAC,IAAI,gBAAgB,CAAC,yDAAyD,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,OAAM,CAAC,CAAE,SAAS,CAAE,CAAC,CAAC;AACvB,CAAC;AAYD,MAAM,UAAU,UAAU,CAAC,OAA0B,EAAE,IAAc,EAAE,KAAc,EAAE,SAAyB;IAC/G,KAAK,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC;IAC9B,SAAS,KAAK,IAAI,IAAI,EAAE,CAAC;IAEzB,IAAI,eAAuB,CAAC;IAC5B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QACnC,eAAe,GAAG,SAAS,CAAC;IAC7B,CAAC;SAAM,CAAC;QACP,eAAe,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,GAAwB;QAClC,KAAK;QACL,eAAe;QACf,OAAO,CAAC,gBAAgB;KACxB,CAAC;IAEF,MAAM,MAAM,GAAoC;QAC/C,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;QAChC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;QAChC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa;KACjD,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC5D,CAAC;aAAM,IAAI,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACP,WAAW,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACF,CAAC;IAED;;OAEG;IACH,aAAa;IACb,mEAAmE;IACnE,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxF,iEAAiE;IACjE,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAEzE,OAAM,CAAC;QACN,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,eAAe;QAC1B,gBAAgB,EAAE,uBAAuB,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;KACnE,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAwB,EAAE,IAAc;IACtE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAE5E,OAAM,CAAC;QACN,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;KACnD,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,OAA0B,EAC1B,IAAc,EACd,MAA4C,EAC5C,OAAuB;IAEvB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC;IACzC,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5C;;;;;;;OAOG;IACH,IAAI,SAAS,CAAC,WAAW,EAAE,KAAK,eAAe,EAAE,CAAC;QACjD,OAAM,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IACtD,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,IAAI,IAAI,EAAE,CAAC;IAC3D,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC;QACzE,wDAAwD;QACxD,OAAM,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAED,mGAAmG;IACnG,MAAM,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;IAE/E,OAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACvJ,CAAC","sourcesContent":["import { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';\nimport type {\n\tValidateASN1 as KeetaNetASN1Validation,\n\tASN1AnyJS as KeetaNetASN1AnyJS\n} from '@keetanetwork/keetanet-client/lib/utils/asn1.js';\n\nimport { Buffer, bufferToArrayBuffer, arrayBufferLikeToBuffer } from '../../lib/utils/buffer.js';\nimport crypto from '../../lib/utils/crypto.js';\nimport { assertNever } from '../../lib/utils/never.js';\nimport { KeetaAnchorError } from '../error.js';\n\nexport type SignableAccount = ReturnType<InstanceType<typeof KeetaNetLib.Account>['assertAccount']>;\nexport type VerifiableAccount = InstanceType<typeof KeetaNetLib.Account>;\nexport type Signable = (string | number | bigint | InstanceType<typeof KeetaNetLib.Account>)[];\n\n/**\n * Structural input to {@link objectToSignable}.\n */\nexport type SignableInput =\n\t{ [key: string | number | symbol]: unknown } |\n\tSignableInput[] |\n\tSignable[number] |\n\tundefined |\n\tnull |\n\tboolean;\n\nconst TO_SIGNABLE_MAX_NODES = 1000;\nconst TO_SIGNABLE_MAX_OUTPUT_BYTES = 65536;\n\n/**\n * Detects unpaired UTF-16 surrogate code units. JCS\n * ({@link https://www.rfc-editor.org/rfc/rfc8785 RFC 8785} Section 3.2.2.2)\n * requires implementations to reject such strings.\n */\nconst LONE_SURROGATE_PATTERN = /[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?<![\\uD800-\\uDBFF])[\\uDC00-\\uDFFF]/;\n\n/**\n * Serialize a JSON-shaped value following JCS\n * ({@link https://www.rfc-editor.org/rfc/rfc8785 RFC 8785}).\n */\nfunction canonicalizeJson(value: unknown): string {\n\t/**\n\t * Literal serialization (Section 3.2.2.1).\n\t */\n\tif (value === null || typeof value === 'boolean') {\n\t\treturn(JSON.stringify(value));\n\t}\n\n\t/**\n\t * String serialization (Section 3.2.2.2). Lone UTF-16 surrogates MUST cause termination.\n\t */\n\tif (typeof value === 'string') {\n\t\tif (LONE_SURROGATE_PATTERN.test(value)) {\n\t\t\tthrow(new KeetaAnchorError('Lone UTF-16 surrogate in canonicalizeJson'));\n\t\t}\n\n\t\treturn(JSON.stringify(value));\n\t}\n\n\t/**\n\t * Number serialization (Section 3.2.2.3). NaN and Infinity MUST cause termination.\n\t */\n\tif (typeof value === 'number') {\n\t\tif (!Number.isFinite(value)) {\n\t\t\tthrow(new KeetaAnchorError('non-finite number in canonicalizeJson'));\n\t\t}\n\n\t\treturn(JSON.stringify(value));\n\t}\n\n\t/**\n\t * Big integer serialization (Appendix D); I-JSON safe-integer range required.\n\t */\n\tif (typeof value === 'bigint') {\n\t\tif (value > BigInt(Number.MAX_SAFE_INTEGER) || value < BigInt(Number.MIN_SAFE_INTEGER)) {\n\t\t\tthrow(new KeetaAnchorError('bigint out of safe integer range in canonicalizeJson'));\n\t\t}\n\n\t\treturn(value.toString());\n\t}\n\n\t/**\n\t * Array element order MUST NOT be changed (Section 3.2.3); sparse holes serialize as JSON `null`.\n\t */\n\tif (Array.isArray(value)) {\n\t\tconst parts: string[] = [];\n\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\tparts.push(i in value ? canonicalizeJson(value[i]) : 'null');\n\t\t}\n\n\t\treturn(`[${parts.join(',')}]`);\n\t}\n\n\t/**\n\t * Object property sorting by UTF-16 code unit (Section 3.2.3); recursion required.\n\t * Only plain objects are permitted; class instances (Date, Map, etc.) are rejected.\n\t */\n\tif (typeof value === 'object') {\n\t\tif (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) {\n\t\t\tthrow(new KeetaAnchorError('Non-plain object in canonicalizeJson'));\n\t\t}\n\n\t\tconst entries = Object.entries(value);\n\t\tfor (const [ key ] of entries) {\n\t\t\tif (LONE_SURROGATE_PATTERN.test(key)) {\n\t\t\t\tthrow(new KeetaAnchorError('Lone UTF-16 surrogate in object key'));\n\t\t\t}\n\t\t}\n\n\t\tentries.sort(([ a ], [ b ]) => {\n\t\t\tif (a < b) {\n\t\t\t\treturn(-1);\n\t\t\t}\n\t\t\tif (a > b) {\n\t\t\t\treturn(1);\n\t\t\t}\n\n\t\t\treturn(0);\n\t\t});\n\n\t\tconst parts: string[] = [];\n\t\tfor (const [ key, child ] of entries) {\n\t\t\tparts.push(`${JSON.stringify(key)}:${canonicalizeJson(child)}`);\n\t\t}\n\n\t\treturn(`{${parts.join(',')}}`);\n\t}\n\n\tthrow(new KeetaAnchorError('Unsupported value type in canonicalizeJson'));\n}\n\n/**\n * Canonicalize a tree into a {@link Signable} via {@link canonicalizeJson}.\n * {@link KeetaNetLib.Account} instances are replaced by their `publicKeyAndTypeString`.\n * {@link Date} instances are replaced by their ISO 8601 string.\n */\nexport function objectToSignable(item: SignableInput): Signable {\n\tlet nodeCount = 0;\n\tfunction visit(value: unknown): unknown {\n\t\tnodeCount++;\n\t\tif (nodeCount > TO_SIGNABLE_MAX_NODES) {\n\t\t\tthrow(new KeetaAnchorError('Too much data to sign in objectToSignable'));\n\t\t}\n\n\t\tif (value === undefined || value === null) {\n\t\t\treturn(null);\n\t\t}\n\t\tif (value instanceof Date) {\n\t\t\tif (Number.isNaN(value.valueOf())) {\n\t\t\t\tthrow(new KeetaAnchorError('Invalid Date in objectToSignable'));\n\t\t\t}\n\n\t\t\treturn(value.toISOString());\n\t\t}\n\t\tif (KeetaNetLib.Account.isInstance(value)) {\n\t\t\treturn(value.publicKeyAndTypeString);\n\t\t}\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length > TO_SIGNABLE_MAX_NODES - nodeCount) {\n\t\t\t\tthrow(new KeetaAnchorError('Too much data to sign in objectToSignable'));\n\t\t\t}\n\n\t\t\tconst result: unknown[] = [];\n\t\t\tfor (const child of value) {\n\t\t\t\tresult.push(visit(child));\n\t\t\t}\n\n\t\t\treturn(result);\n\t\t}\n\t\tif (typeof value === 'object') {\n\t\t\tif (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) {\n\t\t\t\tthrow(new KeetaAnchorError('Non-plain object in objectToSignable'));\n\t\t\t}\n\n\t\t\tconst result: { [key: string]: unknown } = {};\n\t\t\tfor (const [ key, child ] of Object.entries(value)) {\n\t\t\t\tif (child === undefined) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tresult[key] = visit(child);\n\t\t\t}\n\n\t\t\treturn(result);\n\t\t}\n\n\t\treturn(value);\n\t}\n\n\tconst canonical = canonicalizeJson(visit(item));\n\tif (Buffer.byteLength(canonical, 'utf8') > TO_SIGNABLE_MAX_OUTPUT_BYTES) {\n\t\tthrow(new KeetaAnchorError('Canonical output exceeds size limit in objectToSignable'));\n\t}\n\n\treturn([ canonical ]);\n}\n\n/**\n * Options for signature verification\n */\nexport interface VerifyOptions {\n\t/** Maximum allowed time difference in milliseconds (default: 5 * 60 * 1000 = 5 minutes) */\n\tmaxSkewMs?: number;\n\t/** Reference time for skew calculation (default: new Date()) */\n\treferenceTime?: Date;\n}\n\nexport function FormatData(account: VerifiableAccount, data: Signable, nonce?: string, timestamp?: string | Date): { nonce: string; timestamp: string; verificationData: Buffer; } {\n\tnonce ??= crypto.randomUUID();\n\ttimestamp ??= new Date();\n\n\tlet timestampString: string;\n\tif (typeof timestamp === 'string') {\n\t\ttimestampString = timestamp;\n\t} else {\n\t\ttimestampString = timestamp.toISOString();\n\t}\n\n\tconst input: KeetaNetASN1AnyJS[] = [\n\t\tnonce,\n\t\ttimestampString,\n\t\taccount.publicKeyAndType\n\t];\n\n\tconst schema: KeetaNetASN1Validation.Schema[] = [\n\t\t{ type: 'string', kind: 'utf8' },\n\t\t{ type: 'string', kind: 'utf8' },\n\t\tKeetaNetLib.Utils.ASN1.ValidateASN1.IsOctetString\n\t];\n\n\tfor (const item of data) {\n\t\tif (typeof item === 'string') {\n\t\t\tinput.push(item);\n\t\t\tschema.push({ type: 'string', kind: 'utf8' });\n\t\t} else if (typeof item === 'number' || typeof item === 'bigint') {\n\t\t\tinput.push(item);\n\t\t\tschema.push(KeetaNetLib.Utils.ASN1.ValidateASN1.IsInteger);\n\t\t} else if (KeetaNetLib.Account.isInstance(item)) {\n\t\t\tinput.push(item.publicKeyAndType);\n\t\t\tschema.push(KeetaNetLib.Utils.ASN1.ValidateASN1.IsOctetString);\n\t\t} else {\n\t\t\tassertNever(item);\n\t\t}\n\t}\n\n\t/*\n\t * Verify that the generated ASN.1 data matches the expected schema before returning it.\n\t */\n\t// @ts-ignore\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\tconst inputCanonical = KeetaNetLib.Utils.ASN1.ValidateASN1.againstSchema(input, schema);\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n\tconst verificationData = KeetaNetLib.Utils.ASN1.JStoASN1(inputCanonical);\n\n\treturn({\n\t\tnonce: nonce,\n\t\ttimestamp: timestampString,\n\t\tverificationData: arrayBufferLikeToBuffer(verificationData.toBER())\n\t});\n}\n\nexport async function SignData(account: SignableAccount, data: Signable): Promise<{ nonce: string; timestamp: string; signature: string; }> {\n\tconst { nonce, timestamp, verificationData } = FormatData(account, data);\n\tconst signature = await account.sign(bufferToArrayBuffer(verificationData));\n\n\treturn({\n\t\tnonce: nonce,\n\t\ttimestamp: timestamp,\n\t\tsignature: signature.getBuffer().toString('base64')\n\t});\n}\n\nexport async function VerifySignedData(\n\taccount: VerifiableAccount,\n\tdata: Signable,\n\tsigned: Awaited<ReturnType<typeof SignData>>,\n\toptions?: VerifyOptions\n): Promise<boolean> {\n\tconst nonce = signed.nonce;\n\tconst timestampString = signed.timestamp;\n\tconst signatureBuffer = Buffer.from(signed.signature, 'base64');\n\n\tconst timestamp = new Date(timestampString);\n\t/*\n\t * Enforce that the timestamp string is in valid ISO 8601 format,\n\t * not just a date that can be parsed\n\t *\n\t * XXX:TODO: This is not a perfect check since ISO 8601 does not require millisecond-level\n\t * precision and technically allows other timezones (though we will not support\n\t * those). This will be changed in the future to be more robust.\n\t */\n\tif (timestamp.toISOString() !== timestampString) {\n\t\treturn(false);\n\t}\n\n\tconst maxSkewMs = options?.maxSkewMs ?? 5 * 60 * 1000;\n\tconst referenceTime = options?.referenceTime ?? new Date();\n\tif (Math.abs(timestamp.valueOf() - referenceTime.valueOf()) > maxSkewMs) {\n\t\t/* Timestamp exceeds allowed skew from reference time */\n\t\treturn(false);\n\t}\n\n\t/* XXX:TODO: Verify that the timestamp is a valid ISO 8601 date string within a reasonable range */\n\tconst { verificationData } = FormatData(account, data, nonce, timestampString);\n\n\treturn(account.verify(KeetaNetLib.Utils.Helper.bufferToArrayBuffer(verificationData), KeetaNetLib.Utils.Helper.bufferToArrayBuffer(signatureBuffer)));\n}\n"]}
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@keetanetwork/anchor",
3
- "version": "0.0.62",
3
+ "version": "0.0.63",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@keetanetwork/anchor",
9
- "version": "0.0.62",
9
+ "version": "0.0.63",
10
10
  "license": "SEE LICENSE IN LICENSE",
11
11
  "dependencies": {
12
12
  "@keetanetwork/currency-info": "1.2.5",
@@ -1688,8 +1688,8 @@
1688
1688
  }
1689
1689
  },
1690
1690
  "node_modules/protobufjs": {
1691
- "version": "7.5.7",
1692
- "integrity": "sha512-NGnrxS/nLKUo5nkbVQxlC71sB4hdfImdYIbFeSCidxtwATx0AHRPcANSLd0q5Bb2BkoSWo2iisQhGg5/r+ihbA==",
1691
+ "version": "7.5.8",
1692
+ "integrity": "sha512-dvpCIeLPbXZS/Ete7yLaO7RenOdken2NHKykBXbsaGxZT0UTltcarBciw+A78SRQs9iMAAVpsYA+l8b1hTePIA==",
1693
1693
  "hasInstallScript": true,
1694
1694
  "license": "BSD-3-Clause",
1695
1695
  "optional": true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keetanetwork/anchor",
3
- "version": "0.0.62",
3
+ "version": "0.0.63",
4
4
  "description": "KeetaNetwork Network Anchor",
5
5
  "main": "client/index.js",
6
6
  "scripts": {
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/services/asset-movement/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/services/asset-movement/common.ts"],"names":[],"mappings":"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"}