@keetanetwork/anchor 0.0.13 → 0.0.15
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/lib/certificates.d.ts +83 -21
- package/lib/certificates.d.ts.map +1 -1
- package/lib/certificates.generated.d.ts +3 -0
- package/lib/certificates.generated.d.ts.map +1 -0
- package/lib/certificates.generated.js +120 -0
- package/lib/certificates.generated.js.map +1 -0
- package/lib/certificates.js +508 -117
- package/lib/certificates.js.map +1 -1
- package/lib/http-server.d.ts +2 -1
- package/lib/http-server.d.ts.map +1 -1
- package/lib/http-server.js +5 -5
- package/lib/http-server.js.map +1 -1
- package/lib/log/index.d.ts +6 -57
- package/lib/log/index.d.ts.map +1 -1
- package/lib/log/index.js +5 -205
- package/lib/log/index.js.map +1 -1
- package/lib/log/target_console.d.ts +3 -11
- package/lib/log/target_console.d.ts.map +1 -1
- package/lib/log/target_console.js +3 -42
- package/lib/log/target_console.js.map +1 -1
- package/lib/resolver.d.ts +2 -1
- package/lib/resolver.d.ts.map +1 -1
- package/lib/resolver.js +22 -22
- package/lib/resolver.js.map +1 -1
- package/lib/utils/asn1.d.ts +10 -1
- package/lib/utils/asn1.d.ts.map +1 -1
- package/lib/utils/asn1.js +1413 -0
- package/lib/utils/asn1.js.map +1 -1
- package/lib/utils/buffer.d.ts +3 -0
- package/lib/utils/buffer.d.ts.map +1 -1
- package/lib/utils/buffer.js +32 -0
- package/lib/utils/buffer.js.map +1 -1
- package/lib/utils/external.d.ts +43 -0
- package/lib/utils/external.d.ts.map +1 -0
- package/lib/utils/external.js +115 -0
- package/lib/utils/external.js.map +1 -0
- package/lib/utils/guards.d.ts +14 -0
- package/lib/utils/guards.d.ts.map +1 -0
- package/lib/utils/guards.js +31 -0
- package/lib/utils/guards.js.map +1 -0
- package/lib/utils/index.d.ts +3 -1
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/index.js +3 -1
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/oid.d.ts +7 -0
- package/lib/utils/oid.d.ts.map +1 -0
- package/lib/utils/oid.js +22 -0
- package/lib/utils/oid.js.map +1 -0
- package/lib/utils/signing.d.ts.map +1 -1
- package/lib/utils/signing.js +26 -2
- package/lib/utils/signing.js.map +1 -1
- package/npm-shrinkwrap.json +76 -216
- package/package.json +2 -2
- package/services/asset-movement/common.js +7 -7
- package/services/fx/server.js +1 -1
- package/services/fx/server.js.map +1 -1
- package/services/kyc/client.d.ts.map +1 -1
- package/services/kyc/client.js +1 -8
- package/services/kyc/client.js.map +1 -1
- package/services/kyc/common.d.ts +39 -3
- package/services/kyc/common.d.ts.map +1 -1
- package/services/kyc/common.generated.d.ts +5 -0
- package/services/kyc/common.generated.d.ts.map +1 -0
- package/services/kyc/common.generated.js +241 -0
- package/services/kyc/common.generated.js.map +1 -0
- package/services/kyc/common.js +68 -1
- package/services/kyc/common.js.map +1 -1
- package/services/kyc/iso20022.generated.d.ts +336 -0
- package/services/kyc/iso20022.generated.d.ts.map +1 -0
- package/services/kyc/iso20022.generated.js +287 -0
- package/services/kyc/iso20022.generated.js.map +1 -0
- package/services/kyc/oids.generated.d.ts +104 -0
- package/services/kyc/oids.generated.d.ts.map +1 -0
- package/services/kyc/oids.generated.js +163 -0
- package/services/kyc/oids.generated.js.map +1 -0
- package/services/kyc/server.d.ts +141 -0
- package/services/kyc/server.d.ts.map +1 -0
- package/services/kyc/server.js +183 -0
- package/services/kyc/server.js.map +1 -0
- package/services/kyc/utils/generate-kyc-schema.d.ts +3 -0
- package/services/kyc/utils/generate-kyc-schema.d.ts.map +1 -0
- package/services/kyc/utils/generate-kyc-schema.js +1342 -0
- package/services/kyc/utils/generate-kyc-schema.js.map +1 -0
- package/lib/log/common.d.ts +0 -35
- package/lib/log/common.d.ts.map +0 -1
- package/lib/log/common.js +0 -19
- package/lib/log/common.js.map +0 -1
package/lib/utils/asn1.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asn1.js","sourceRoot":"","sources":["../../../src/lib/utils/asn1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,+BAA+B,CAAC;AASnE,MAAM,IAAI,GAAkC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;AAEnE,MAAM,QAAQ,GAAyB,IAAI,CAAC,QAAQ,CAAC;AACrD,MAAM,QAAQ,GAAyB,IAAI,CAAC,QAAQ,CAAC;AACrD,MAAM,iBAAiB,GAAkC,IAAI,CAAC,iBAAiB,CAAA;AAC/E,MAAM,YAAY,GAA6B,IAAI,CAAC,YAAY,CAAC;AAYjE,OAAO,EACN,QAAQ,EACR,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,CAAC","sourcesContent":["import { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';\nimport type * as ASN1Types from '@keetanetwork/keetanet-client/lib/utils/asn1.ts';\n/*\n * We import this file to make sure that the `asn1js` types are\n * defined, since they are required by the `ASN1toJS` and `JStoASN1`\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type * as _ignored_asn1js from 'asn1js';\n\nconst ASN1: typeof KeetaNetLib.Utils.ASN1 = KeetaNetLib.Utils.ASN1;\n\nconst ASN1toJS: typeof ASN1.ASN1toJS = ASN1.ASN1toJS;\nconst JStoASN1: typeof ASN1.JStoASN1 = ASN1.JStoASN1;\nconst BufferStorageASN1: typeof ASN1.BufferStorageASN1 = ASN1.BufferStorageASN1\nconst ValidateASN1: typeof ASN1.ValidateASN1 = ASN1.ValidateASN1;\n\ntype ASN1AnyJS = ASN1Types.ASN1AnyJS;\ntype Schema = ASN1Types.ValidateASN1.Schema;\ntype SchemaMap<T extends Schema> = ASN1Types.ValidateASN1.SchemaMap<T>;\n\nexport type {\n\tASN1AnyJS,\n\tSchema,\n\tSchemaMap\n};\n\nexport {\n\tASN1toJS,\n\tJStoASN1,\n\tBufferStorageASN1,\n\tValidateASN1\n};\n"]}
|
|
1
|
+
{"version":3,"file":"asn1.js","sourceRoot":"","sources":["../../../src/lib/utils/asn1.ts"],"names":[],"mappings":"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","sourcesContent":["import { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';\nimport type * as ASN1Types from '@keetanetwork/keetanet-client/lib/utils/asn1.ts';\n/*\n * We import this file to make sure that the `asn1js` types are\n * defined, since they are required by the `ASN1toJS` and `JStoASN1`\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type * as _ignored_asn1js from 'asn1js';\n\nimport { Buffer } from './buffer.js';\nimport { assert, createAssert, createIs } from 'typia';\n\nconst ASN1: typeof KeetaNetLib.Utils.ASN1 = KeetaNetLib.Utils.ASN1;\n\nconst ASN1toJS: typeof ASN1.ASN1toJS = ASN1.ASN1toJS;\nconst JStoASN1: typeof ASN1.JStoASN1 = ASN1.JStoASN1;\nconst BufferStorageASN1: typeof ASN1.BufferStorageASN1 = ASN1.BufferStorageASN1;\nconst ValidateASN1: typeof ASN1.ValidateASN1 = ASN1.ValidateASN1;\nconst ASN1CheckUtilities: typeof ASN1.ASN1CheckUtilities = ASN1.ASN1CheckUtilities;\n\nconst { isASN1ContextTag, isASN1Struct, isASN1String, isASN1Date, isASN1BitString, isASN1Set } = ASN1CheckUtilities;\n\ntype ASN1AnyJS = ASN1Types.ASN1AnyJS;\ntype ASN1OID = ASN1Types.ASN1OID;\ntype ASN1ContextTag = ASN1Types.ASN1ContextTag;\ntype Schema = ASN1Types.ValidateASN1.Schema;\ntype SchemaMap<T extends Schema> = ASN1Types.ValidateASN1.SchemaMap<T>;\ntype StructFieldSchema = Schema | { optional: Schema };\ntype StructSchema = Extract<Schema, { type: 'struct' }>;\ntype StructFieldSchemaMap = { [field: string]: StructFieldSchema };\ntype SchemaPreparer = (schema: Schema, value: unknown) => unknown;\n\ntype EncodeOptions = {\n\tattributeName?: string;\n\tvaluePrinter?: (value: unknown) => string;\n};\n\nconst assertStructFieldSchemaMap = createAssert<StructFieldSchemaMap>();\nconst structSchemaGuard = createIs<StructSchema>();\n\nconst structSchemaCache = new WeakMap<StructSchema, Schema>();\n\nfunction defaultPrintValue(value: unknown): string {\n\ttry {\n\t\treturn(JSON.stringify(value));\n\t} catch {\n\t\treturn(String(value));\n\t}\n}\n\nfunction isOptionalSchema(candidate: unknown): candidate is { optional: Schema } {\n\treturn(typeof candidate === 'object' && candidate !== null && 'optional' in candidate);\n}\n\nfunction isStructSchema(candidate: Schema): candidate is StructSchema {\n\treturn(structSchemaGuard(candidate));\n}\n\nfunction ensureStructContains(schema: StructSchema): StructFieldSchemaMap {\n\tif (!schema.contains) {\n\t\treturn({});\n\t}\n\treturn(assertStructFieldSchemaMap(schema.contains));\n}\n\nfunction isPlainObject(value: unknown): value is { [key: string]: unknown } {\n\treturn(typeof value === 'object' && value !== null && !Array.isArray(value));\n}\n\nfunction getFieldNames(schema: StructSchema): string[] {\n\treturn(Array.isArray(schema.fieldNames) && schema.fieldNames.length > 0\n\t\t? [...schema.fieldNames]\n\t\t: Object.keys(ensureStructContains(schema)));\n}\n\nexport function contextualizeStructSchema(schema: Schema): Schema {\n\tif (!isStructSchema(schema)) {\n\t\treturn(schema);\n\t}\n\n\tconst cached = structSchemaCache.get(schema);\n\tif (cached) {\n\t\treturn(cached);\n\t}\n\n\tconst fieldNames = getFieldNames(schema);\n\tconst structContains = ensureStructContains(schema);\n\tconst contextualizedContains: StructFieldSchemaMap = {};\n\n\tfunction wrapWithExplicitContext(index: number, innerSchema: Schema): Schema {\n\t\tif (typeof innerSchema === 'object' && innerSchema !== null && 'type' in innerSchema && innerSchema.type === 'context') {\n\t\t\treturn(innerSchema);\n\t\t}\n\t\treturn({\n\t\t\ttype: 'context',\n\t\t\tkind: 'explicit',\n\t\t\tvalue: index,\n\t\t\tcontains: contextualizeStructSchema(innerSchema)\n\t\t});\n\t}\n\n\tfor (const [index, fieldName] of fieldNames.entries()) {\n\t\tconst fieldSchema = structContains[fieldName];\n\t\tif (!fieldSchema) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (isOptionalSchema(fieldSchema)) {\n\t\t\tcontextualizedContains[fieldName] = {\n\t\t\t\toptional: wrapWithExplicitContext(index, fieldSchema.optional)\n\t\t\t};\n\t\t\tcontinue;\n\t\t}\n\t\tcontextualizedContains[fieldName] = wrapWithExplicitContext(index, fieldSchema);\n\t}\n\n\tconst contextualized: Schema = {\n\t\ttype: 'struct',\n\t\tfieldNames,\n\t\tcontains: contextualizedContains\n\t};\n\n\tstructSchemaCache.set(schema, contextualized);\n\treturn(contextualized);\n}\n\nfunction resolveSchema(schema: Schema): Schema {\n\tlet current: Schema = schema;\n\twhile (typeof current === 'function') {\n\t\tcurrent = current();\n\t}\n\treturn(current);\n}\n\nfunction prepareContextValue(schema: Extract<Schema, { type: 'context' }>, value: unknown, prepare: SchemaPreparer): unknown {\n\tif (value === undefined) {\n\t\treturn(value);\n\t}\n\tif (isASN1ContextTag(value)) {\n\t\tconst preparedContains = prepare(schema.contains, value.contains);\n\t\tif (preparedContains !== value.contains) {\n\t\t\treturn({\n\t\t\t\ttype: 'context',\n\t\t\t\tkind: value.kind,\n\t\t\t\tvalue: value.value,\n\t\t\t\tcontains: preparedContains\n\t\t\t});\n\t\t}\n\t\treturn(value);\n\t}\n\tconst contains = prepare(schema.contains, value);\n\treturn({\n\t\ttype: 'context',\n\t\tkind: schema.kind,\n\t\tvalue: schema.value,\n\t\tcontains\n\t});\n}\n\nfunction prepareStructValue(schema: StructSchema, value: unknown): unknown {\n\tconst structContains = schema.contains ?? {};\n\tconst fieldNames = getFieldNames(schema);\n\n\tif (isASN1Struct(value)) {\n\t\tconst preparedContains: { [key: string]: unknown } = {};\n\t\tfor (const [fieldName, fieldValue] of Object.entries(value.contains ?? {})) {\n\t\t\tconst fieldSchema = structContains[fieldName];\n\t\t\tif (!fieldSchema) {\n\t\t\t\tpreparedContains[fieldName] = fieldValue;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst innerSchema = isOptionalSchema(fieldSchema) ? fieldSchema.optional : fieldSchema;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\n\t\t\tpreparedContains[fieldName] = prepareValueForSchema(innerSchema, fieldValue);\n\t\t}\n\t\treturn({\n\t\t\ttype: 'struct',\n\t\t\tfieldNames: value.fieldNames ?? fieldNames,\n\t\t\tcontains: preparedContains\n\t\t});\n\t}\n\n\tif (!isPlainObject(value)) {\n\t\treturn(value);\n\t}\n\n\tconst preparedContains: { [key: string]: unknown } = {};\n\tfor (const fieldName of fieldNames) {\n\t\tconst fieldSchema = structContains[fieldName];\n\t\tif (!fieldSchema) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst fieldValue = value[fieldName];\n\t\tif (fieldValue === undefined) {\n\t\t\tif (!isOptionalSchema(fieldSchema)) {\n\t\t\t\tpreparedContains[fieldName] = fieldValue;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tconst innerSchema = isOptionalSchema(fieldSchema) ? fieldSchema.optional : fieldSchema;\n\t\t// eslint-disable-next-line @typescript-eslint/no-use-before-define\n\t\tpreparedContains[fieldName] = prepareValueForSchema(innerSchema, fieldValue);\n\t}\n\n\treturn({\n\t\ttype: 'struct',\n\t\tfieldNames,\n\t\tcontains: preparedContains\n\t});\n}\n\nfunction prepareValueForSchema(schema: Schema, value: unknown): unknown {\n\tconst resolved = resolveSchema(schema);\n\n\tif (value === undefined || value === null) {\n\t\treturn(value);\n\t}\n\n\tif (Array.isArray(resolved)) {\n\t\tif (!Array.isArray(value)) {\n\t\t\treturn(value);\n\t\t}\n\t\tconst result = [];\n\t\tfor (let i = 0; i < resolved.length; i++) {\n\t\t\tresult.push(prepareValueForSchema(assert<Schema>(resolved[i]), value[i]));\n\t\t}\n\t\treturn(result);\n\t}\tif (typeof resolved === 'object' && resolved !== null) {\n\t\tif ('optional' in resolved) {\n\t\t\tif (value === undefined) {\n\t\t\t\treturn(undefined);\n\t\t\t}\n\t\t\treturn(prepareValueForSchema(resolved.optional, value));\n\t\t}\n\t\tif ('sequenceOf' in resolved) {\n\t\t\tif (!Array.isArray(value)) {\n\t\t\t\treturn(value);\n\t\t\t}\n\t\t\treturn(value.map(item => prepareValueForSchema(resolved.sequenceOf, item)));\n\t\t}\n\t\tif ('choice' in resolved) {\n\t\t\tconst choices = Array.isArray(resolved.choice)\n\t\t\t\t? resolved.choice\n\t\t\t\t: Array.from(resolved.choice);\n\t\t\tfor (const choiceSchema of choices) {\n\t\t\t\tconst preparedChoice = prepareValueForSchema(choiceSchema, value);\n\t\t\t\tif (preparedChoice !== value) {\n\t\t\t\t\treturn(preparedChoice);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn(value);\n\t\t}\n\t\tif ('type' in resolved) {\n\t\t\tswitch (resolved.type) {\n\t\t\t\tcase 'context':\n\t\t\t\t\treturn(prepareContextValue(resolved, value, prepareValueForSchema));\n\t\t\t\tcase 'struct':\n\t\t\t\t\treturn(prepareStructValue(resolved, value));\n\t\t\t\tdefault:\n\t\t\t\t\treturn(value);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn(value);\n}\n\nexport function encodeValueBySchema(schema: Schema, value: unknown, options?: EncodeOptions): ASN1AnyJS {\n\tconst contextualized = contextualizeStructSchema(schema);\n\ttry {\n\t\tconst preparedUnknown = prepareValueForSchema(contextualized, value);\n\t\t// XXX:TODO Fix depth issue\n\t\t// @ts-ignore\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/consistent-type-assertions\n\t\treturn(ValidateASN1.againstSchema(preparedUnknown as ASN1AnyJS, contextualized));\n\t} catch (err) {\n\t\tconst printer = options?.valuePrinter ?? defaultPrintValue;\n\t\tconst prefix = options?.attributeName ? `Attribute ${options.attributeName}: ` : '';\n\t\tconst message = err instanceof Error ? err.message : String(err);\n\n\t\tthrow(new Error(`${prefix}${message} (value: ${printer(value)})`));\n\t}\n}\n\nexport function normalizeDecodedASN1(input: unknown): unknown {\n\tif (input === undefined || input === null) {\n\t\treturn(input);\n\t}\n\tif (Array.isArray(input)) {\n\t\treturn(input.map(normalizeDecodedASN1));\n\t}\n\tif (input instanceof Date) {\n\t\treturn(input);\n\t}\n\tif (Buffer.isBuffer(input) || input instanceof ArrayBuffer) {\n\t\treturn(input);\n\t}\n\tif (isASN1ContextTag(input)) {\n\t\treturn(normalizeDecodedASN1(input.contains));\n\t}\n\tif (isASN1String(input)) {\n\t\treturn(normalizeDecodedASN1(input.value));\n\t}\n\tif (isASN1Date(input)) {\n\t\treturn(input.date);\n\t}\n\tif (isASN1BitString(input)) {\n\t\treturn(input.value);\n\t}\n\tif (isASN1Struct(input)) {\n\t\tconst contains = input.contains ?? {};\n\t\tconst orderedNames = Array.isArray(input.fieldNames) && input.fieldNames.length > 0\n\t\t\t? input.fieldNames\n\t\t\t: Object.keys(contains);\n\t\tconst result: { [key: string]: unknown } = {};\n\t\tfor (const fieldName of orderedNames) {\n\t\t\tif (!Object.prototype.hasOwnProperty.call(contains, fieldName)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst fieldValue = contains[fieldName];\n\t\t\tif (fieldValue !== undefined) {\n\t\t\t\tresult[fieldName] = normalizeDecodedASN1(fieldValue);\n\t\t\t}\n\t\t}\n\t\treturn(result);\n\t}\n\tif (isASN1Set(input)) {\n\t\treturn({\n\t\t\tname: normalizeDecodedASN1(input.name),\n\t\t\tvalue: normalizeDecodedASN1(input.value)\n\t\t});\n\t}\n\tif (isPlainObject(input)) {\n\t\tconst result: { [key: string]: unknown } = {};\n\t\tfor (const [key, value] of Object.entries(input)) {\n\t\t\tresult[key] = normalizeDecodedASN1(value);\n\t\t}\n\t\treturn(result);\n\t}\n\treturn(input);\n}\n\nexport type {\n\tASN1AnyJS,\n\tASN1OID,\n\tASN1ContextTag,\n\tSchema,\n\tSchemaMap\n};\n\nexport {\n\tASN1toJS,\n\tJStoASN1,\n\tBufferStorageASN1,\n\tValidateASN1\n};\n"]}
|
package/lib/utils/buffer.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';
|
|
2
2
|
export type Buffer = InstanceType<typeof KeetaNetLib.Utils.Buffer.Buffer>;
|
|
3
3
|
export declare const Buffer: typeof KeetaNetLib.Utils.Buffer.Buffer;
|
|
4
|
+
export declare const bufferToArrayBuffer: typeof KeetaNetLib.Utils.Helper.bufferToArrayBuffer;
|
|
5
|
+
export declare function arrayBufferToBuffer(arrayBuffer: ArrayBuffer): Buffer;
|
|
6
|
+
export declare function arrayBufferLikeToBuffer(buffer: ArrayBufferLike | ArrayBufferView): Buffer;
|
|
4
7
|
//# sourceMappingURL=buffer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEnE,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1E,eAAO,MAAM,MAAM,EAAE,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEnE,MAAM,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1E,eAAO,MAAM,MAAM,EAAE,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAwC,CAAC;AAM9F,eAAO,MAAM,mBAAmB,EAAE,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAiG,CAAC;AAkBpK,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAEpE;AAKD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,GAAG,MAAM,CAMzF"}
|
package/lib/utils/buffer.js
CHANGED
|
@@ -1,3 +1,35 @@
|
|
|
1
1
|
import { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';
|
|
2
2
|
export const Buffer = KeetaNetLib.Utils.Buffer.Buffer;
|
|
3
|
+
/*
|
|
4
|
+
* Because our public interfaces are ArrayBuffers we often need to convert
|
|
5
|
+
* Buffers to ArrayBuffers -- an alias to the Node function to do that
|
|
6
|
+
*/
|
|
7
|
+
export const bufferToArrayBuffer = KeetaNetLib.Utils.Helper.bufferToArrayBuffer.bind(KeetaNetLib.Utils.Helper);
|
|
8
|
+
function toBuffer(src) {
|
|
9
|
+
if (ArrayBuffer.isView(src)) {
|
|
10
|
+
// Zero-copy: Buffer will reference the same ArrayBuffer range.
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
12
|
+
return Buffer.from(src.buffer, src.byteOffset, src.byteLength);
|
|
13
|
+
}
|
|
14
|
+
// src is ArrayBuffer
|
|
15
|
+
// Zero-copy: shares memory with the ArrayBuffer
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
17
|
+
return Buffer.from(src);
|
|
18
|
+
}
|
|
19
|
+
/*
|
|
20
|
+
* Helper to convert ArrayBuffer back to Buffer
|
|
21
|
+
*/
|
|
22
|
+
export function arrayBufferToBuffer(arrayBuffer) {
|
|
23
|
+
return (toBuffer(arrayBuffer));
|
|
24
|
+
}
|
|
25
|
+
/*
|
|
26
|
+
* Converts a Buffer backed by ArrayBufferLike storage into one backed by an ArrayBuffer.
|
|
27
|
+
*/
|
|
28
|
+
export function arrayBufferLikeToBuffer(buffer) {
|
|
29
|
+
if (ArrayBuffer.isView(buffer)) {
|
|
30
|
+
return (toBuffer(buffer));
|
|
31
|
+
}
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
33
|
+
return (toBuffer(buffer));
|
|
34
|
+
}
|
|
3
35
|
//# sourceMappingURL=buffer.js.map
|
package/lib/utils/buffer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../../src/lib/utils/buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGnE,MAAM,CAAC,MAAM,MAAM,GAA2C,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC","sourcesContent":["import { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';\n\nexport type Buffer = InstanceType<typeof KeetaNetLib.Utils.Buffer.Buffer>;\nexport const Buffer: typeof KeetaNetLib.Utils.Buffer.Buffer = KeetaNetLib.Utils.Buffer.Buffer;\n"]}
|
|
1
|
+
{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../../src/lib/utils/buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGnE,MAAM,CAAC,MAAM,MAAM,GAA2C,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AAE9F;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAwD,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAEpK,SAAS,QAAQ,CAAC,GAAkC;IACnD,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,+DAA+D;QAC/D,yEAAyE;QACzE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAuB,CAAC;IACtF,CAAC;IAED,qBAAqB;IACrB,gDAAgD;IAChD,yEAAyE;IACzE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAuB,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAwB;IAC3D,OAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAyC;IAChF,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,yEAAyE;IACzE,OAAM,CAAC,QAAQ,CAAC,MAAqB,CAAC,CAAC,CAAC;AACzC,CAAC","sourcesContent":["import { lib as KeetaNetLib } from '@keetanetwork/keetanet-client';\n\nexport type Buffer = InstanceType<typeof KeetaNetLib.Utils.Buffer.Buffer>;\nexport const Buffer: typeof KeetaNetLib.Utils.Buffer.Buffer = KeetaNetLib.Utils.Buffer.Buffer;\n\n/*\n * Because our public interfaces are ArrayBuffers we often need to convert\n * Buffers to ArrayBuffers -- an alias to the Node function to do that\n */\nexport const bufferToArrayBuffer: typeof KeetaNetLib.Utils.Helper.bufferToArrayBuffer = KeetaNetLib.Utils.Helper.bufferToArrayBuffer.bind(KeetaNetLib.Utils.Helper);\n\nfunction toBuffer(src: ArrayBufferView | ArrayBuffer): Buffer {\n\tif (ArrayBuffer.isView(src)) {\n\t\t// Zero-copy: Buffer will reference the same ArrayBuffer range.\n\t\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\t\treturn(Buffer.from(src.buffer, src.byteOffset, src.byteLength) as unknown as Buffer);\n\t}\n\n\t// src is ArrayBuffer\n\t// Zero-copy: shares memory with the ArrayBuffer\n\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\treturn(Buffer.from(src) as unknown as Buffer);\n}\n\n/*\n * Helper to convert ArrayBuffer back to Buffer\n */\nexport function arrayBufferToBuffer(arrayBuffer: ArrayBuffer): Buffer {\n\treturn(toBuffer(arrayBuffer));\n}\n\n/*\n * Converts a Buffer backed by ArrayBufferLike storage into one backed by an ArrayBuffer.\n */\nexport function arrayBufferLikeToBuffer(buffer: ArrayBufferLike | ArrayBufferView): Buffer {\n\tif (ArrayBuffer.isView(buffer)) {\n\t\treturn(toBuffer(buffer));\n\t}\n\t// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n\treturn(toBuffer(buffer as ArrayBuffer));\n}\n"]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Reference } from '../../services/kyc/iso20022.generated.js';
|
|
2
|
+
import type { Buffer } from './buffer.js';
|
|
3
|
+
/**
|
|
4
|
+
* Builder for Reference structures
|
|
5
|
+
*
|
|
6
|
+
* Creates a Reference containing:
|
|
7
|
+
* - ExternalReference: URL and content type
|
|
8
|
+
* - DigestInfo: Hash algorithm OID and digest
|
|
9
|
+
* - Encryption algorithm OID
|
|
10
|
+
*/
|
|
11
|
+
export declare class ExternalReferenceBuilder {
|
|
12
|
+
#private;
|
|
13
|
+
/**
|
|
14
|
+
* Create a new ExternalReferenceBuilder
|
|
15
|
+
*
|
|
16
|
+
* @param url - The URL where the document can be accessed
|
|
17
|
+
* @param contentType - MIME type of the document (e.g., 'image/jpeg', 'application/pdf')
|
|
18
|
+
*/
|
|
19
|
+
constructor(url: string, contentType: string);
|
|
20
|
+
/**
|
|
21
|
+
* Set the digest algorithm (default: 'sha3-256')
|
|
22
|
+
*
|
|
23
|
+
* @param algorithm - Hash algorithm name (e.g., 'sha256', 'sha3-256')
|
|
24
|
+
* @returns this builder for chaining
|
|
25
|
+
*/
|
|
26
|
+
withDigestAlgorithm(algorithm: string): this;
|
|
27
|
+
/**
|
|
28
|
+
* Set the encryption algorithm (default: 'aes-256-gcm')
|
|
29
|
+
*
|
|
30
|
+
* @param algorithm - Encryption algorithm name
|
|
31
|
+
* @returns this builder for chaining
|
|
32
|
+
*/
|
|
33
|
+
withEncryptionAlgorithm(algorithm: string): this;
|
|
34
|
+
/**
|
|
35
|
+
* Build the Reference structure
|
|
36
|
+
*
|
|
37
|
+
* @param documentContent - The actual document content to hash
|
|
38
|
+
* @returns The Reference structure
|
|
39
|
+
*/
|
|
40
|
+
build(documentContent: Buffer): Reference;
|
|
41
|
+
}
|
|
42
|
+
export default ExternalReferenceBuilder;
|
|
43
|
+
//# sourceMappingURL=external.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/external.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAiC,MAAM,0CAA0C,CAAC;AAEzG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;;;GAOG;AACH,qBAAa,wBAAwB;;IAMpC;;;;;OAKG;gBACS,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAK5C;;;;;OAKG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAK5C;;;;;OAKG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKhD;;;;;OAKG;IACH,KAAK,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS;CAwEzC;AAED,eAAe,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// XXX:TODO We need a webpack fallback for crypto in browser environments
|
|
2
|
+
import * as crypto from 'crypto';
|
|
3
|
+
/**
|
|
4
|
+
* Builder for Reference structures
|
|
5
|
+
*
|
|
6
|
+
* Creates a Reference containing:
|
|
7
|
+
* - ExternalReference: URL and content type
|
|
8
|
+
* - DigestInfo: Hash algorithm OID and digest
|
|
9
|
+
* - Encryption algorithm OID
|
|
10
|
+
*/
|
|
11
|
+
export class ExternalReferenceBuilder {
|
|
12
|
+
#url;
|
|
13
|
+
#contentType;
|
|
14
|
+
#digestAlgorithm = 'sha3-256';
|
|
15
|
+
#encryptionAlgorithm = 'aes-256-gcm';
|
|
16
|
+
/**
|
|
17
|
+
* Create a new ExternalReferenceBuilder
|
|
18
|
+
*
|
|
19
|
+
* @param url - The URL where the document can be accessed
|
|
20
|
+
* @param contentType - MIME type of the document (e.g., 'image/jpeg', 'application/pdf')
|
|
21
|
+
*/
|
|
22
|
+
constructor(url, contentType) {
|
|
23
|
+
this.#url = url;
|
|
24
|
+
this.#contentType = contentType;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Set the digest algorithm (default: 'sha3-256')
|
|
28
|
+
*
|
|
29
|
+
* @param algorithm - Hash algorithm name (e.g., 'sha256', 'sha3-256')
|
|
30
|
+
* @returns this builder for chaining
|
|
31
|
+
*/
|
|
32
|
+
withDigestAlgorithm(algorithm) {
|
|
33
|
+
this.#digestAlgorithm = algorithm;
|
|
34
|
+
return (this);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Set the encryption algorithm (default: 'aes-256-gcm')
|
|
38
|
+
*
|
|
39
|
+
* @param algorithm - Encryption algorithm name
|
|
40
|
+
* @returns this builder for chaining
|
|
41
|
+
*/
|
|
42
|
+
withEncryptionAlgorithm(algorithm) {
|
|
43
|
+
this.#encryptionAlgorithm = algorithm;
|
|
44
|
+
return (this);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Build the Reference structure
|
|
48
|
+
*
|
|
49
|
+
* @param documentContent - The actual document content to hash
|
|
50
|
+
* @returns The Reference structure
|
|
51
|
+
*/
|
|
52
|
+
build(documentContent) {
|
|
53
|
+
// Create the ExternalReference structure
|
|
54
|
+
const externalReference = {
|
|
55
|
+
url: this.#url,
|
|
56
|
+
contentType: this.#contentType
|
|
57
|
+
};
|
|
58
|
+
// Compute the digest of the actual document content
|
|
59
|
+
const hashAlgo = this.#digestAlgorithmToNodeAlgo(this.#digestAlgorithm);
|
|
60
|
+
const hash = crypto.createHash(hashAlgo);
|
|
61
|
+
hash.update(documentContent);
|
|
62
|
+
const digest = hash.digest();
|
|
63
|
+
// Map algorithm names to OIDs
|
|
64
|
+
const digestAlgorithmOID = this.#algorithmToOID(this.#digestAlgorithm);
|
|
65
|
+
const encryptionAlgorithmOID = this.#algorithmToOID(this.#encryptionAlgorithm);
|
|
66
|
+
// Create the RFC 3447 DigestInfo structure
|
|
67
|
+
const digestInfo = {
|
|
68
|
+
digestAlgorithm: digestAlgorithmOID,
|
|
69
|
+
digest: digest
|
|
70
|
+
};
|
|
71
|
+
// Create the Reference structure
|
|
72
|
+
const reference = {
|
|
73
|
+
external: externalReference,
|
|
74
|
+
digest: digestInfo,
|
|
75
|
+
encryptionAlgorithm: encryptionAlgorithmOID
|
|
76
|
+
};
|
|
77
|
+
return (reference);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* // XXX:TODO We can handle these better later
|
|
81
|
+
* Map algorithm names to Node.js crypto algorithm names
|
|
82
|
+
*/
|
|
83
|
+
#digestAlgorithmToNodeAlgo(algorithm) {
|
|
84
|
+
const algoMap = {
|
|
85
|
+
'sha256': 'sha256',
|
|
86
|
+
'sha3-256': 'sha3-256',
|
|
87
|
+
'sha2-256': 'sha256'
|
|
88
|
+
};
|
|
89
|
+
const nodeAlgo = algoMap[algorithm.toLowerCase()];
|
|
90
|
+
if (!nodeAlgo) {
|
|
91
|
+
throw (new Error(`Unsupported digest algorithm: ${algorithm}`));
|
|
92
|
+
}
|
|
93
|
+
return (nodeAlgo);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* // XXX:TODO We can handle these better later
|
|
97
|
+
* Map algorithm names to OIDs
|
|
98
|
+
*/
|
|
99
|
+
#algorithmToOID(algorithm) {
|
|
100
|
+
const oidMap = {
|
|
101
|
+
'sha256': '2.16.840.1.101.3.4.2.1',
|
|
102
|
+
'sha2-256': '2.16.840.1.101.3.4.2.1',
|
|
103
|
+
'sha3-256': '2.16.840.1.101.3.4.2.8',
|
|
104
|
+
'aes-256-cbc': '2.16.840.1.101.3.4.1.42',
|
|
105
|
+
'aes-256-gcm': '2.16.840.1.101.3.4.1.46'
|
|
106
|
+
};
|
|
107
|
+
const oid = oidMap[algorithm.toLowerCase()];
|
|
108
|
+
if (!oid) {
|
|
109
|
+
throw (new Error(`Unsupported algorithm: ${algorithm}`));
|
|
110
|
+
}
|
|
111
|
+
return ({ type: 'oid', oid });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
export default ExternalReferenceBuilder;
|
|
115
|
+
//# sourceMappingURL=external.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external.js","sourceRoot":"","sources":["../../../src/lib/utils/external.ts"],"names":[],"mappings":"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","sourcesContent":["// XXX:TODO We need a webpack fallback for crypto in browser environments\nimport * as crypto from 'crypto';\nimport type { Reference, ExternalReference, DigestInfo } from '../../services/kyc/iso20022.generated.js';\nimport type { ASN1OID } from './asn1.js';\nimport type { Buffer } from './buffer.js';\n\n/**\n * Builder for Reference structures\n *\n * Creates a Reference containing:\n * - ExternalReference: URL and content type\n * - DigestInfo: Hash algorithm OID and digest\n * - Encryption algorithm OID\n */\nexport class ExternalReferenceBuilder {\n\t#url: string;\n\t#contentType: string;\n\t#digestAlgorithm = 'sha3-256';\n\t#encryptionAlgorithm = 'aes-256-gcm';\n\n\t/**\n\t * Create a new ExternalReferenceBuilder\n\t *\n\t * @param url - The URL where the document can be accessed\n\t * @param contentType - MIME type of the document (e.g., 'image/jpeg', 'application/pdf')\n\t */\n\tconstructor(url: string, contentType: string) {\n\t\tthis.#url = url;\n\t\tthis.#contentType = contentType;\n\t}\n\n\t/**\n\t * Set the digest algorithm (default: 'sha3-256')\n\t *\n\t * @param algorithm - Hash algorithm name (e.g., 'sha256', 'sha3-256')\n\t * @returns this builder for chaining\n\t */\n\twithDigestAlgorithm(algorithm: string): this {\n\t\tthis.#digestAlgorithm = algorithm;\n\t\treturn(this);\n\t}\n\n\t/**\n\t * Set the encryption algorithm (default: 'aes-256-gcm')\n\t *\n\t * @param algorithm - Encryption algorithm name\n\t * @returns this builder for chaining\n\t */\n\twithEncryptionAlgorithm(algorithm: string): this {\n\t\tthis.#encryptionAlgorithm = algorithm;\n\t\treturn(this);\n\t}\n\n\t/**\n\t * Build the Reference structure\n\t *\n\t * @param documentContent - The actual document content to hash\n\t * @returns The Reference structure\n\t */\n\tbuild(documentContent: Buffer): Reference {\n\t\t// Create the ExternalReference structure\n\t\tconst externalReference: ExternalReference = {\n\t\t\turl: this.#url,\n\t\t\tcontentType: this.#contentType\n\t\t};\n\n\t\t// Compute the digest of the actual document content\n\t\tconst hashAlgo = this.#digestAlgorithmToNodeAlgo(this.#digestAlgorithm);\n\t\tconst hash = crypto.createHash(hashAlgo);\n\t\thash.update(documentContent);\n\t\tconst digest = hash.digest();\n\n\t\t// Map algorithm names to OIDs\n\t\tconst digestAlgorithmOID = this.#algorithmToOID(this.#digestAlgorithm);\n\t\tconst encryptionAlgorithmOID = this.#algorithmToOID(this.#encryptionAlgorithm);\n\n\t\t// Create the RFC 3447 DigestInfo structure\n\t\tconst digestInfo: DigestInfo = {\n\t\t\tdigestAlgorithm: digestAlgorithmOID,\n\t\t\tdigest: digest\n\t\t};\n\n\t\t// Create the Reference structure\n\t\tconst reference: Reference = {\n\t\t\texternal: externalReference,\n\t\t\tdigest: digestInfo,\n\t\t\tencryptionAlgorithm: encryptionAlgorithmOID\n\t\t};\n\n\t\treturn(reference);\n\t}\n\n\t/**\n\t * // XXX:TODO We can handle these better later\n\t * Map algorithm names to Node.js crypto algorithm names\n\t */\n\t#digestAlgorithmToNodeAlgo(algorithm: string): string {\n\t\tconst algoMap: { [key: string]: string } = {\n\t\t\t'sha256': 'sha256',\n\t\t\t'sha3-256': 'sha3-256',\n\t\t\t'sha2-256': 'sha256'\n\t\t};\n\n\t\tconst nodeAlgo = algoMap[algorithm.toLowerCase()];\n\t\tif (!nodeAlgo) {\n\t\t\tthrow(new Error(`Unsupported digest algorithm: ${algorithm}`));\n\t\t}\n\n\t\treturn(nodeAlgo);\n\t}\n\n\t/**\n\t * // XXX:TODO We can handle these better later\n\t * Map algorithm names to OIDs\n\t */\n\t#algorithmToOID(algorithm: string): ASN1OID {\n\t\tconst oidMap: { [key: string]: string } = {\n\t\t\t'sha256': '2.16.840.1.101.3.4.2.1',\n\t\t\t'sha2-256': '2.16.840.1.101.3.4.2.1',\n\t\t\t'sha3-256': '2.16.840.1.101.3.4.2.8',\n\t\t\t'aes-256-cbc': '2.16.840.1.101.3.4.1.42',\n\t\t\t'aes-256-gcm': '2.16.840.1.101.3.4.1.46'\n\t\t};\n\n\t\tconst oid = oidMap[algorithm.toLowerCase()];\n\t\tif (!oid) {\n\t\t\tthrow(new Error(`Unsupported algorithm: ${algorithm}`));\n\t\t}\n\n\t\treturn({ type: 'oid', oid });\n\t}\n}\n\nexport default ExternalReferenceBuilder;\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare function hasIndexSignature(v: unknown): v is {
|
|
2
|
+
[key: string]: unknown;
|
|
3
|
+
};
|
|
4
|
+
export declare function isErrorLike(v: unknown): v is Error;
|
|
5
|
+
export declare function hasValueProp(v: unknown): v is {
|
|
6
|
+
value: unknown;
|
|
7
|
+
};
|
|
8
|
+
export declare function isContextTagged(v: unknown): v is {
|
|
9
|
+
type: 'context';
|
|
10
|
+
kind: 'explicit' | 'implicit';
|
|
11
|
+
value: number;
|
|
12
|
+
contains: unknown;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=guards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/guards.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAE7E;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,CAElD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,CAEhE;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,UAAU,GAAC,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CASnI"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Common type guards used across the library
|
|
2
|
+
export function hasIndexSignature(v) {
|
|
3
|
+
return (typeof v === 'object' && v !== null);
|
|
4
|
+
}
|
|
5
|
+
export function isErrorLike(v) {
|
|
6
|
+
return (typeof v === 'object' && v !== null && ('message' in (v)));
|
|
7
|
+
}
|
|
8
|
+
export function hasValueProp(v) {
|
|
9
|
+
return (typeof v === 'object' && v !== null && ('value' in (v)));
|
|
10
|
+
}
|
|
11
|
+
export function isContextTagged(v) {
|
|
12
|
+
if (!(typeof v === 'object' && v !== null)) {
|
|
13
|
+
return (false);
|
|
14
|
+
}
|
|
15
|
+
if (!('type' in v) || !('kind' in v) || !('value' in v) || !('contains' in v)) {
|
|
16
|
+
return (false);
|
|
17
|
+
}
|
|
18
|
+
// Now TS knows v has these keys
|
|
19
|
+
const obj = v;
|
|
20
|
+
if (obj.type !== 'context') {
|
|
21
|
+
return (false);
|
|
22
|
+
}
|
|
23
|
+
if (!(obj.kind === 'explicit' || obj.kind === 'implicit')) {
|
|
24
|
+
return (false);
|
|
25
|
+
}
|
|
26
|
+
if (typeof obj.value !== 'number') {
|
|
27
|
+
return (false);
|
|
28
|
+
}
|
|
29
|
+
return (true);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=guards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../../src/lib/utils/guards.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C,MAAM,UAAU,iBAAiB,CAAC,CAAU;IAC3C,OAAM,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAU;IACrC,OAAM,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAU;IACtC,OAAM,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAU;IACzC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QAAA,OAAM,CAAC,KAAK,CAAC,CAAC;IAAA,CAAC;IAC5D,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,CAAC;QAAA,OAAM,CAAC,KAAK,CAAC,CAAC;IAAA,CAAC;IAC/F,gCAAgC;IAChC,MAAM,GAAG,GAA+B,CAAC,CAAC;IAC1C,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAAA,OAAM,CAAC,KAAK,CAAC,CAAC;IAAA,CAAC;IAC5C,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;QAAA,OAAM,CAAC,KAAK,CAAC,CAAC;IAAA,CAAC;IAC3E,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAAA,OAAM,CAAC,KAAK,CAAC,CAAC;IAAA,CAAC;IACnD,OAAM,CAAC,IAAI,CAAC,CAAC;AACd,CAAC","sourcesContent":["// Common type guards used across the library\n\nexport function hasIndexSignature(v: unknown): v is { [key: string]: unknown } {\n\treturn(typeof v === 'object' && v !== null);\n}\n\nexport function isErrorLike(v: unknown): v is Error {\n\treturn(typeof v === 'object' && v !== null && ('message' in (v)));\n}\n\nexport function hasValueProp(v: unknown): v is { value: unknown } {\n\treturn(typeof v === 'object' && v !== null && ('value' in (v)));\n}\n\nexport function isContextTagged(v: unknown): v is { type: 'context'; kind: 'explicit'|'implicit'; value: number; contains: unknown } {\n\tif (!(typeof v === 'object' && v !== null)) {return(false);}\n\tif (!('type' in v) || !('kind' in v) || !('value' in v) || !('contains' in v)) {return(false);}\n\t// Now TS knows v has these keys\n\tconst obj: { [key: string]: unknown } = v;\n\tif (obj.type !== 'context') {return(false);}\n\tif (!(obj.kind === 'explicit' || obj.kind === 'implicit')) {return(false);}\n\tif (typeof obj.value !== 'number') {return(false);}\n\treturn(true);\n}\n"]}
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as JSON from './json.js';
|
|
2
2
|
import * as Array from './array.js';
|
|
3
3
|
import * as Never from './never.js';
|
|
4
|
-
|
|
4
|
+
import * as Guards from './guards.js';
|
|
5
|
+
import * as OID from './oid.js';
|
|
6
|
+
export { JSON, Array, Never, Guards, OID };
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,EACN,IAAI,EACJ,KAAK,EACL,KAAK,EACL,MAAM,EACN,GAAG,EACH,CAAC"}
|
package/lib/utils/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import * as JSON from './json.js';
|
|
2
2
|
import * as Array from './array.js';
|
|
3
3
|
import * as Never from './never.js';
|
|
4
|
-
|
|
4
|
+
import * as Guards from './guards.js';
|
|
5
|
+
import * as OID from './oid.js';
|
|
6
|
+
export { JSON, Array, Never, Guards, OID };
|
|
5
7
|
//# sourceMappingURL=index.js.map
|
package/lib/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,EACN,IAAI,EACJ,KAAK,EACL,KAAK,EACL,MAAM,EACN,GAAG,EACH,CAAC","sourcesContent":["import * as JSON from './json.js';\nimport * as Array from './array.js';\nimport * as Never from './never.js';\nimport * as Guards from './guards.js';\nimport * as OID from './oid.js';\n\nexport {\n\tJSON,\n\tArray,\n\tNever,\n\tGuards,\n\tOID\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oid.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/oid.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,MAAM,CAU9E;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;IAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAAG,MAAM,CAOlF"}
|
package/lib/utils/oid.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export function getOID(name, oidDB) {
|
|
2
|
+
if (name in oidDB) {
|
|
3
|
+
const oid = oidDB[name];
|
|
4
|
+
if (oid === undefined) {
|
|
5
|
+
throw (new Error('internal error: OID was undefined'));
|
|
6
|
+
}
|
|
7
|
+
return (oid);
|
|
8
|
+
}
|
|
9
|
+
throw (new Error(`Unknown OID name: ${name}`));
|
|
10
|
+
}
|
|
11
|
+
export function lookupByOID(oid, oidDB) {
|
|
12
|
+
for (const [key, value] of Object.entries(oidDB)) {
|
|
13
|
+
if (key === oid) {
|
|
14
|
+
return (key);
|
|
15
|
+
}
|
|
16
|
+
if (value === oid) {
|
|
17
|
+
return (key);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
throw (new Error(`Unknown OID: ${oid}`));
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=oid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oid.js","sourceRoot":"","sources":["../../../src/lib/utils/oid.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,KAAiC;IACrE,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACvB,MAAK,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,OAAM,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IACD,MAAK,CAAC,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,KAAiC;IACzE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;YAAC,OAAM,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QACjC,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAAC,OAAM,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;IACpC,CAAC;IAED,MAAK,CAAC,IAAI,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC","sourcesContent":["export function getOID(name: string, oidDB: { [name: string]: string }): string {\n\tif (name in oidDB) {\n\t\tconst oid = oidDB[name];\n\t\tif (oid === undefined) {\n\t\t\tthrow(new Error('internal error: OID was undefined'));\n\t\t}\n\n\t\treturn(oid);\n\t}\n\tthrow(new Error(`Unknown OID name: ${name}`));\n}\n\nexport function lookupByOID(oid: string, oidDB: { [name: string]: string }): string {\n\tfor (const [key, value] of Object.entries(oidDB)) {\n\t\tif (key === oid) { return(key); }\n\t\tif (value === oid) { return(key); }\n\t}\n\n\tthrow(new Error(`Unknown OID: ${oid}`));\n}\n"]}
|
|
@@ -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,EAAE,MAAM,2BAA2B,CAAC;AAInD,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,YAAY,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AACpG,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AACxE,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AAE/F,wBAAgB,UAAU,CAAC,OAAO,EAAE,gBAAgB,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,CAoDhL;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,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,
|
|
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,EAAE,MAAM,2BAA2B,CAAC;AAInD,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,YAAY,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AACpG,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AACxE,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AAE/F,wBAAgB,UAAU,CAAC,OAAO,EAAE,gBAAgB,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,CAoDhL;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,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAmChJ"}
|
package/lib/utils/signing.js
CHANGED
|
@@ -64,10 +64,34 @@ export async function SignData(account, data) {
|
|
|
64
64
|
}
|
|
65
65
|
export async function VerifySignedData(account, data, signed) {
|
|
66
66
|
const nonce = signed.nonce;
|
|
67
|
-
const
|
|
67
|
+
const timestampString = signed.timestamp;
|
|
68
68
|
const signatureBuffer = Buffer.from(signed.signature, 'base64');
|
|
69
|
+
const timestamp = new Date(timestampString);
|
|
70
|
+
/*
|
|
71
|
+
* Enforce that the timestamp string is in valid ISO 8601 format,
|
|
72
|
+
* not just a date that can be parsed
|
|
73
|
+
*
|
|
74
|
+
* XXX:TODO: This is not a perfect check since ISO 8601 does not require millisecond-level
|
|
75
|
+
* precision and technically allows other timezones (though we will not support
|
|
76
|
+
* those). This will be changed in the future to be more robust.
|
|
77
|
+
*/
|
|
78
|
+
if (timestamp.toISOString() !== timestampString) {
|
|
79
|
+
return (false);
|
|
80
|
+
}
|
|
81
|
+
/*
|
|
82
|
+
* XXX:TODO: It would be better to allow some configuration of the
|
|
83
|
+
* allowed time skew as well as the moment instead of
|
|
84
|
+
* Date.now()
|
|
85
|
+
*
|
|
86
|
+
* We will probably need to refactor this interface as a class in the
|
|
87
|
+
* future.
|
|
88
|
+
*/
|
|
89
|
+
if (Math.abs(timestamp.valueOf() - Date.now()) > 5 * 60 * 1000) {
|
|
90
|
+
/* Timestamp is more than 5 minutes in the past or future */
|
|
91
|
+
return (false);
|
|
92
|
+
}
|
|
69
93
|
/* XXX:TODO: Verify that the timestamp is a valid ISO 8601 date string within a reasonable range */
|
|
70
|
-
const { verificationData } = FormatData(account, data, nonce,
|
|
94
|
+
const { verificationData } = FormatData(account, data, nonce, timestampString);
|
|
71
95
|
return (account.verify(KeetaNetLib.Utils.Helper.bufferToArrayBuffer(verificationData), KeetaNetLib.Utils.Helper.bufferToArrayBuffer(signatureBuffer)));
|
|
72
96
|
}
|
|
73
97
|
//# sourceMappingURL=signing.js.map
|
package/lib/utils/signing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signing.js","sourceRoot":"","sources":["../../../src/lib/utils/signing.ts"],"names":[],"mappings":"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
|
|
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 } 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 VerifableAccount = InstanceType<typeof KeetaNetLib.Account>;\nexport type Signable = (string | number | bigint | InstanceType<typeof KeetaNetLib.Account>)[];\n\nexport function FormatData(account: VerifableAccount, 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(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(account: VerifableAccount, data: Signable, signed: Awaited<ReturnType<typeof SignData>>): 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\t/*\n\t * XXX:TODO: It would be better to allow some configuration of the\n\t * allowed time skew as well as the moment instead of\n\t * Date.now()\n\t *\n\t * We will probably need to refactor this interface as a class in the\n\t * future.\n\t */\n\tif (Math.abs(timestamp.valueOf() - Date.now()) > 5 * 60 * 1000) {\n\t\t/* Timestamp is more than 5 minutes in the past or future */\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"]}
|