@pulse-compute/crypto 0.0.0 → 1.0.0-beta.2

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.
@@ -0,0 +1,149 @@
1
+ export const CRYPTO_CONTRACT_VERSION = 'pulse.crypto.verification.v1';
2
+ export const CRYPTO_RUNTIME_BUILTIN_IMPLEMENTATION = 'webcrypto.subtle.hmac-sha-256.v1';
3
+ export const CRYPTO_GUEST_SOURCE_IMPLEMENTATION = 'pulse-hmac-as.v1';
4
+ export const CRYPTO_ES256_CONTRACT_VERSION = 'pulse.crypto.es256-verification.v1';
5
+ export const CRYPTO_ES256_RUNTIME_BUILTIN_IMPLEMENTATION = 'webcrypto.subtle.ecdsa-p256-sha-256.v1';
6
+ export const CRYPTO_ES256_GUEST_LINKED_REALIZATION = 'guest-linked:pulse-es256-rustcrypto-p256';
7
+ export const CRYPTO_ES256_GUEST_LINKED_IMPLEMENTATION = 'rustcrypto.p256-0.13.2.ecdsa-0.16.9.sha2-0.10.9.v1';
8
+ /**
9
+ * Executable algorithms remain intentionally narrower than frozen future
10
+ * contracts. G3, not G0, owns activation of ES256.
11
+ */
12
+ export const CRYPTO_ALGORITHMS = Object.freeze([
13
+ 'HS256',
14
+ 'ES256',
15
+ ]);
16
+ export const CRYPTO_VERIFICATION_STATUSES = Object.freeze([
17
+ 'valid',
18
+ 'invalid-authenticator',
19
+ 'invalid-key',
20
+ 'invalid-input',
21
+ 'realization-failure',
22
+ ]);
23
+ export const CRYPTO_RESOURCE_LIMITS = Object.freeze({
24
+ hmacKeyBytesMinimum: 32,
25
+ hmacKeyBytesMaximum: 4 * 1024,
26
+ macDataBytesMaximum: 1024 * 1024,
27
+ hs256TagBytes: 32,
28
+ es256PublicKeyBytes: 64,
29
+ es256SignatureBytes: 64,
30
+ es256SigningInputBytesMaximum: 16_340,
31
+ });
32
+ export const CRYPTO_ES256_CONTRACT = Object.freeze({
33
+ version: CRYPTO_ES256_CONTRACT_VERSION,
34
+ status: 'executable-g3',
35
+ semanticOwner: '@pulse-compute/crypto',
36
+ algorithm: 'ES256',
37
+ primitive: Object.freeze({
38
+ kind: 'ecdsa',
39
+ curve: 'P-256',
40
+ hash: 'SHA-256',
41
+ }),
42
+ operation: 'verify',
43
+ request: Object.freeze({
44
+ function: 'crypto.signature.verify',
45
+ keyType: 'p256-public-key-bytes',
46
+ publicKeyEncoding: 'raw-x-y-big-endian',
47
+ publicKeyBytes: CRYPTO_RESOURCE_LIMITS.es256PublicKeyBytes,
48
+ dataBytesMaximum: CRYPTO_RESOURCE_LIMITS.es256SigningInputBytesMaximum,
49
+ signatureEncoding: 'jose-r-s-big-endian',
50
+ signatureBytes: CRYPTO_RESOURCE_LIMITS.es256SignatureBytes,
51
+ derAccepted: false,
52
+ }),
53
+ runtimeBuiltin: Object.freeze({
54
+ realization: 'runtime-builtin',
55
+ implementation: CRYPTO_ES256_RUNTIME_BUILTIN_IMPLEMENTATION,
56
+ eligibleTargets: Object.freeze([
57
+ 'node-javascript',
58
+ 'fastly-javascript',
59
+ ]),
60
+ }),
61
+ native: Object.freeze({
62
+ realization: CRYPTO_ES256_GUEST_LINKED_REALIZATION,
63
+ implementation: CRYPTO_ES256_GUEST_LINKED_IMPLEMENTATION,
64
+ eligibleTargets: Object.freeze([
65
+ 'node-native',
66
+ 'fastly-native',
67
+ ]),
68
+ }),
69
+ guest: Object.freeze({
70
+ unitVersion: 'pulse.guest-unit.v2',
71
+ unitId: 'pulse.crypto.es256.rustcrypto-p256.v1',
72
+ module: 'pulse_crypto_es256',
73
+ owner: '@pulse-compute/crypto',
74
+ abi: 'pulse.crypto.es256.verify.v1',
75
+ export: Object.freeze({
76
+ name: 'pulse_crypto_es256_verify',
77
+ parameters: Object.freeze(['i32', 'i32']),
78
+ results: Object.freeze(['i32']),
79
+ }),
80
+ origin: 'package-prebuilt',
81
+ sourceBuildDuringApplicationBuild: false,
82
+ memory: Object.freeze({
83
+ identity: 'pulse.guest-memory.invocation-frame.v2',
84
+ import: 'env.memory',
85
+ minimumPages: 32,
86
+ maximumPages: 32,
87
+ growable: false,
88
+ }),
89
+ start: 'forbidden',
90
+ hostCallbacks: false,
91
+ allocator: false,
92
+ }),
93
+ frame: Object.freeze({
94
+ identity: 'pulse.crypto.es256.invocation-frame.v2',
95
+ byteOrder: 'little-endian',
96
+ pointerWidthBits: 32,
97
+ magic: 0x32534550,
98
+ version: 2,
99
+ headerBytes: 64,
100
+ capacityBytes: 16_640,
101
+ alignmentBytes: 16,
102
+ signingInputBytesMaximum: 16_340,
103
+ publicKeyBytes: 64,
104
+ signatureBytes: 64,
105
+ rawPayloadBytesMaximum: 16_468,
106
+ reservedHeaderAndAlignmentBytes: 172,
107
+ canonicalOffsets: Object.freeze({
108
+ publicKey: 64,
109
+ signature: 128,
110
+ signingInput: 192,
111
+ }),
112
+ header: Object.freeze({
113
+ magic: 0,
114
+ version: 4,
115
+ headerLength: 8,
116
+ totalLength: 12,
117
+ algorithm: 16,
118
+ flags: 20,
119
+ signingInputOffset: 24,
120
+ signingInputLength: 28,
121
+ publicKeyOffset: 32,
122
+ publicKeyLength: 36,
123
+ signatureOffset: 40,
124
+ signatureLength: 44,
125
+ reserved0: 48,
126
+ reserved1: 52,
127
+ reserved2: 56,
128
+ reserved3: 60,
129
+ }),
130
+ algorithmCode: 1,
131
+ flags: 0,
132
+ reservedWordCount: 4,
133
+ reservedWordValue: 0,
134
+ callerOwned: true,
135
+ synchronous: true,
136
+ retainable: false,
137
+ clearCapacityAfterReturnOrTrap: true,
138
+ }),
139
+ resultStatuses: CRYPTO_VERIFICATION_STATUSES,
140
+ resultCodes: Object.freeze({
141
+ valid: 1,
142
+ invalidAuthenticator: 0,
143
+ invalidKey: -1,
144
+ invalidInput: -2,
145
+ realizationFailure: -3,
146
+ }),
147
+ automaticFallback: false,
148
+ });
149
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { CRYPTO_ALGORITHMS, CRYPTO_CONTRACT_VERSION, CRYPTO_ES256_CONTRACT, CRYPTO_ES256_CONTRACT_VERSION, CRYPTO_ES256_GUEST_LINKED_IMPLEMENTATION, CRYPTO_ES256_GUEST_LINKED_REALIZATION, CRYPTO_ES256_RUNTIME_BUILTIN_IMPLEMENTATION, CRYPTO_GUEST_SOURCE_IMPLEMENTATION, CRYPTO_RESOURCE_LIMITS, CRYPTO_RUNTIME_BUILTIN_IMPLEMENTATION, CRYPTO_VERIFICATION_STATUSES, type CryptoAlgorithm, type CryptoVerificationResult, type CryptoVerificationStatus, type Es256JoseVerifyInput, type HmacKeyBytes, type HmacVerificationKey, type MacAlgorithm, type MacVerifyRequest, type P256PublicKeyBytes, type P256PublicKeyCoordinates, type SignatureAlgorithm, type SignatureVerifyRequest } from './contracts.js';
2
+ import { normalizeEs256JoseVerifyRequest, normalizeP256PublicKeyCoordinates } from './internal/verification.js';
3
+ export { CRYPTO_ALGORITHMS, CRYPTO_CONTRACT_VERSION, CRYPTO_ES256_CONTRACT, CRYPTO_ES256_CONTRACT_VERSION, CRYPTO_ES256_GUEST_LINKED_IMPLEMENTATION, CRYPTO_ES256_GUEST_LINKED_REALIZATION, CRYPTO_ES256_RUNTIME_BUILTIN_IMPLEMENTATION, CRYPTO_GUEST_SOURCE_IMPLEMENTATION, CRYPTO_RESOURCE_LIMITS, CRYPTO_RUNTIME_BUILTIN_IMPLEMENTATION, CRYPTO_VERIFICATION_STATUSES, };
4
+ export type { CryptoAlgorithm, CryptoVerificationResult, CryptoVerificationStatus, Es256JoseVerifyInput, HmacKeyBytes, HmacVerificationKey, MacAlgorithm, MacVerifyRequest, P256PublicKeyBytes, P256PublicKeyCoordinates, SignatureAlgorithm, SignatureVerifyRequest, };
5
+ export { normalizeEs256JoseVerifyRequest, normalizeP256PublicKeyCoordinates, };
6
+ export declare function verifyMac(request: MacVerifyRequest): Promise<CryptoVerificationResult>;
7
+ export declare function verifySignature(request: SignatureVerifyRequest): Promise<CryptoVerificationResult>;
8
+ export declare const mac: Readonly<{
9
+ verify: typeof verifyMac;
10
+ }>;
11
+ export declare const signature: Readonly<{
12
+ verify: typeof verifySignature;
13
+ }>;
14
+ export declare const crypto: Readonly<{
15
+ mac: Readonly<{
16
+ verify: typeof verifyMac;
17
+ }>;
18
+ signature: Readonly<{
19
+ verify: typeof verifySignature;
20
+ }>;
21
+ }>;
22
+ export default crypto;
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,wCAAwC,EACxC,qCAAqC,EACrC,2CAA2C,EAC3C,kCAAkC,EAClC,sBAAsB,EACtB,qCAAqC,EACrC,4BAA4B,EAC5B,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC5B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,+BAA+B,EAE/B,iCAAiC,EAGlC,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,wCAAwC,EACxC,qCAAqC,EACrC,2CAA2C,EAC3C,kCAAkC,EAClC,sBAAsB,EACtB,qCAAqC,EACrC,4BAA4B,GAC7B,CAAC;AACF,YAAY,EACV,eAAe,EACf,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,GACvB,CAAC;AAEF,OAAO,EACL,+BAA+B,EAC/B,iCAAiC,GAClC,CAAC;AAEF,wBAAsB,SAAS,CAC7B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,wBAAwB,CAAC,CAcnC;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,CAenC;AAED,eAAO,MAAM,GAAG;;EAEd,CAAC;AAEH,eAAO,MAAM,SAAS;;EAEpB,CAAC;AAEH,eAAO,MAAM,MAAM;;;;;;;EAGjB,CAAC;AAEH,eAAe,MAAM,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,52 @@
1
+ import { CRYPTO_ALGORITHMS, CRYPTO_CONTRACT_VERSION, CRYPTO_ES256_CONTRACT, CRYPTO_ES256_CONTRACT_VERSION, CRYPTO_ES256_GUEST_LINKED_IMPLEMENTATION, CRYPTO_ES256_GUEST_LINKED_REALIZATION, CRYPTO_ES256_RUNTIME_BUILTIN_IMPLEMENTATION, CRYPTO_GUEST_SOURCE_IMPLEMENTATION, CRYPTO_RESOURCE_LIMITS, CRYPTO_RUNTIME_BUILTIN_IMPLEMENTATION, CRYPTO_VERIFICATION_STATUSES, } from './contracts.js';
2
+ import { verifyEs256, verifyHs256 } from './internal/realization.js';
3
+ import { normalizeEs256JoseVerifyRequest, normalizeMacVerifyRequest, normalizeP256PublicKeyCoordinates, normalizeSignatureVerifyRequest, normalizeVerificationResult, } from './internal/verification.js';
4
+ export { CRYPTO_ALGORITHMS, CRYPTO_CONTRACT_VERSION, CRYPTO_ES256_CONTRACT, CRYPTO_ES256_CONTRACT_VERSION, CRYPTO_ES256_GUEST_LINKED_IMPLEMENTATION, CRYPTO_ES256_GUEST_LINKED_REALIZATION, CRYPTO_ES256_RUNTIME_BUILTIN_IMPLEMENTATION, CRYPTO_GUEST_SOURCE_IMPLEMENTATION, CRYPTO_RESOURCE_LIMITS, CRYPTO_RUNTIME_BUILTIN_IMPLEMENTATION, CRYPTO_VERIFICATION_STATUSES, };
5
+ export { normalizeEs256JoseVerifyRequest, normalizeP256PublicKeyCoordinates, };
6
+ export async function verifyMac(request) {
7
+ let normalized;
8
+ try {
9
+ normalized = normalizeMacVerifyRequest(request);
10
+ }
11
+ catch {
12
+ return normalizeVerificationResult({ status: 'invalid-input' });
13
+ }
14
+ if (!normalized.ok)
15
+ return normalized.result;
16
+ try {
17
+ return normalizeVerificationResult(await verifyHs256(normalized.request));
18
+ }
19
+ catch {
20
+ return normalizeVerificationResult(undefined);
21
+ }
22
+ }
23
+ export async function verifySignature(request) {
24
+ let normalized;
25
+ try {
26
+ normalized = normalizeSignatureVerifyRequest(request);
27
+ }
28
+ catch {
29
+ return normalizeVerificationResult({ status: 'invalid-input' });
30
+ }
31
+ if (!normalized.ok)
32
+ return normalized.result;
33
+ try {
34
+ return normalizeVerificationResult(await verifyEs256(normalized.request));
35
+ }
36
+ catch {
37
+ normalized.request.key.bytes.fill(0);
38
+ return normalizeVerificationResult(undefined);
39
+ }
40
+ }
41
+ export const mac = Object.freeze({
42
+ verify: verifyMac,
43
+ });
44
+ export const signature = Object.freeze({
45
+ verify: verifySignature,
46
+ });
47
+ export const crypto = Object.freeze({
48
+ mac,
49
+ signature,
50
+ });
51
+ export default crypto;
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,wCAAwC,EACxC,qCAAqC,EACrC,2CAA2C,EAC3C,kCAAkC,EAClC,sBAAsB,EACtB,qCAAqC,EACrC,4BAA4B,GAa7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EACL,+BAA+B,EAC/B,yBAAyB,EACzB,iCAAiC,EACjC,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,wCAAwC,EACxC,qCAAqC,EACrC,2CAA2C,EAC3C,kCAAkC,EAClC,sBAAsB,EACtB,qCAAqC,EACrC,4BAA4B,GAC7B,CAAC;AAgBF,OAAO,EACL,+BAA+B,EAC/B,iCAAiC,GAClC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAyB;IAEzB,IAAI,UAAwD,CAAC;IAC7D,IAAI,CAAC;QACH,UAAU,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,2BAA2B,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC,MAAM,CAAC;IAE7C,IAAI,CAAC;QACH,OAAO,2BAA2B,CAAC,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,2BAA2B,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA+B;IAE/B,IAAI,UAA8D,CAAC;IACnE,IAAI,CAAC;QACH,UAAU,GAAG,+BAA+B,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,2BAA2B,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,UAAU,CAAC,MAAM,CAAC;IAE7C,IAAI,CAAC;QACH,OAAO,2BAA2B,CAAC,MAAM,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,2BAA2B,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,MAAM,EAAE,SAAS;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IACrC,MAAM,EAAE,eAAe;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,GAAG;IACH,SAAS;CACV,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface OwnDataProperty {
2
+ readonly present: boolean;
3
+ readonly valid: boolean;
4
+ readonly value?: unknown;
5
+ }
6
+ export declare function isOrdinaryObject(value: unknown): value is Readonly<Record<string, unknown>>;
7
+ export declare function ownDataProperty(value: object, name: string): OwnDataProperty;
8
+ export declare function exactDataProperties(value: object, required: ReadonlySet<string>): boolean;
9
+ export declare function copyBytes(value: unknown): Uint8Array<ArrayBuffer> | undefined;
10
+ //# sourceMappingURL=data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/internal/data.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAI3F;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,eAAe,CAc5E;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAC5B,OAAO,CAaT;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,SAAS,CAK7E"}
@@ -0,0 +1,41 @@
1
+ export function isOrdinaryObject(value) {
2
+ if (!value || typeof value !== 'object' || Array.isArray(value))
3
+ return false;
4
+ const prototype = Object.getPrototypeOf(value);
5
+ return prototype === Object.prototype || prototype === null;
6
+ }
7
+ export function ownDataProperty(value, name) {
8
+ const descriptor = Object.getOwnPropertyDescriptor(value, name);
9
+ if (!descriptor)
10
+ return Object.freeze({ present: false, valid: true });
11
+ if (!descriptor.enumerable
12
+ || !Object.prototype.hasOwnProperty.call(descriptor, 'value')) {
13
+ return Object.freeze({ present: true, valid: false });
14
+ }
15
+ return Object.freeze({
16
+ present: true,
17
+ valid: true,
18
+ value: descriptor.value,
19
+ });
20
+ }
21
+ export function exactDataProperties(value, required) {
22
+ const keys = Reflect.ownKeys(value);
23
+ if (keys.some((key) => typeof key !== 'string')
24
+ || keys.length !== required.size) {
25
+ return false;
26
+ }
27
+ for (const name of required) {
28
+ const property = ownDataProperty(value, name);
29
+ if (!property.present || !property.valid)
30
+ return false;
31
+ }
32
+ return true;
33
+ }
34
+ export function copyBytes(value) {
35
+ if (!(value instanceof Uint8Array))
36
+ return undefined;
37
+ const output = new Uint8Array(value.byteLength);
38
+ Uint8Array.prototype.set.call(output, value);
39
+ return output;
40
+ }
41
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/internal/data.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,IAAY;IACzD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,IACE,CAAC,UAAU,CAAC,UAAU;WACnB,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,EAC7D,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,UAAU,CAAC,KAAK;KACxB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,QAA6B;IAE7B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpC,IACE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC;WACxC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,EAChC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;IACzD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAChD,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { CryptoVerificationResult } from '../contracts.js';
2
+ import { type NormalizedMacVerifyRequest, type NormalizedSignatureVerifyRequest } from './verification.js';
3
+ export type Hs256SubtleCrypto = Pick<SubtleCrypto, 'importKey' | 'verify'>;
4
+ export type Es256SubtleCrypto = Pick<SubtleCrypto, 'importKey' | 'verify'>;
5
+ export declare function verifyHs256WithSubtle(request: NormalizedMacVerifyRequest, subtle: Hs256SubtleCrypto | undefined): Promise<CryptoVerificationResult>;
6
+ /** Execute the already-selected JavaScript runtime-builtin realization. */
7
+ export declare function verifyHs256(request: NormalizedMacVerifyRequest): Promise<CryptoVerificationResult>;
8
+ export declare function verifyEs256WithSubtle(request: NormalizedSignatureVerifyRequest, subtle: Es256SubtleCrypto | undefined): Promise<CryptoVerificationResult>;
9
+ /** Execute the already-selected JavaScript runtime-builtin realization. */
10
+ export declare function verifyEs256(request: NormalizedSignatureVerifyRequest): Promise<CryptoVerificationResult>;
11
+ //# sourceMappingURL=realization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realization.d.ts","sourceRoot":"","sources":["../../src/internal/realization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACtC,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,QAAQ,CAAC,CAAC;AAC3E,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,QAAQ,CAAC,CAAC;AA8D3E,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,0BAA0B,EACnC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GACpC,OAAO,CAAC,wBAAwB,CAAC,CAyCnC;AAED,2EAA2E;AAC3E,wBAAsB,WAAW,CAC/B,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,wBAAwB,CAAC,CAEnC;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,gCAAgC,EACzC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GACpC,OAAO,CAAC,wBAAwB,CAAC,CAoDnC;AAED,2EAA2E;AAC3E,wBAAsB,WAAW,CAC/B,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,wBAAwB,CAAC,CAEnC"}
@@ -0,0 +1,140 @@
1
+ import { verificationResult, } from './verification.js';
2
+ const BASE64URL_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
3
+ const P256_FIELD = 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffffn;
4
+ const P256_B = 0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604bn;
5
+ function fixedWidthBase64url(bytes) {
6
+ let output = '';
7
+ for (let index = 0; index < bytes.byteLength; index += 3) {
8
+ const first = bytes[index];
9
+ const second = bytes[index + 1];
10
+ const third = bytes[index + 2];
11
+ output += BASE64URL_ALPHABET[first >>> 2];
12
+ output += BASE64URL_ALPHABET[((first & 0x03) << 4) | ((second ?? 0) >>> 4)];
13
+ if (index + 1 < bytes.byteLength) {
14
+ output += BASE64URL_ALPHABET[((second & 0x0f) << 2) | ((third ?? 0) >>> 6)];
15
+ }
16
+ if (index + 2 < bytes.byteLength) {
17
+ output += BASE64URL_ALPHABET[third & 0x3f];
18
+ }
19
+ }
20
+ return output;
21
+ }
22
+ function bigEndianInteger(bytes) {
23
+ let output = 0n;
24
+ for (const byte of bytes)
25
+ output = (output << 8n) | BigInt(byte);
26
+ return output;
27
+ }
28
+ function validP256Point(bytes) {
29
+ const x = bigEndianInteger(bytes.subarray(0, 32));
30
+ const y = bigEndianInteger(bytes.subarray(32, 64));
31
+ if (x >= P256_FIELD || y >= P256_FIELD)
32
+ return false;
33
+ const left = (y * y) % P256_FIELD;
34
+ const right = ((((x * x) % P256_FIELD) * x)
35
+ - (3n * x)
36
+ + P256_B) % P256_FIELD;
37
+ return left === (right < 0n ? right + P256_FIELD : right);
38
+ }
39
+ function selectedRuntimeBuiltin() {
40
+ try {
41
+ const subtle = globalThis.crypto?.subtle;
42
+ if (!subtle
43
+ || typeof subtle.importKey !== 'function'
44
+ || typeof subtle.verify !== 'function') {
45
+ return undefined;
46
+ }
47
+ return subtle;
48
+ }
49
+ catch {
50
+ return undefined;
51
+ }
52
+ }
53
+ export async function verifyHs256WithSubtle(request, subtle) {
54
+ if (!subtle) {
55
+ request.key.bytes.fill(0);
56
+ return verificationResult('realization-failure');
57
+ }
58
+ let key;
59
+ try {
60
+ key = await subtle.importKey('raw', request.key.bytes.buffer, {
61
+ name: 'HMAC',
62
+ hash: { name: 'SHA-256' },
63
+ length: request.key.bytes.byteLength * 8,
64
+ }, false, ['verify']);
65
+ }
66
+ catch {
67
+ request.key.bytes.fill(0);
68
+ return verificationResult('invalid-key');
69
+ }
70
+ // Keep the normalized key storage live until the selected runtime has
71
+ // completed its final use, then erase it on every verification outcome.
72
+ try {
73
+ const valid = await subtle.verify({ name: 'HMAC' }, key, request.tag.buffer, request.data.buffer);
74
+ if (valid === true)
75
+ return verificationResult('valid');
76
+ if (valid === false)
77
+ return verificationResult('invalid-authenticator');
78
+ return verificationResult('realization-failure');
79
+ }
80
+ catch {
81
+ return verificationResult('realization-failure');
82
+ }
83
+ finally {
84
+ request.key.bytes.fill(0);
85
+ }
86
+ }
87
+ /** Execute the already-selected JavaScript runtime-builtin realization. */
88
+ export async function verifyHs256(request) {
89
+ return verifyHs256WithSubtle(request, selectedRuntimeBuiltin());
90
+ }
91
+ export async function verifyEs256WithSubtle(request, subtle) {
92
+ if (!subtle) {
93
+ request.key.bytes.fill(0);
94
+ return verificationResult('realization-failure');
95
+ }
96
+ if (!validP256Point(request.key.bytes)) {
97
+ request.key.bytes.fill(0);
98
+ return verificationResult('invalid-key');
99
+ }
100
+ const jwk = {
101
+ kty: 'EC',
102
+ crv: 'P-256',
103
+ x: fixedWidthBase64url(request.key.bytes.subarray(0, 32)),
104
+ y: fixedWidthBase64url(request.key.bytes.subarray(32, 64)),
105
+ ext: true,
106
+ key_ops: ['verify'],
107
+ };
108
+ let key;
109
+ try {
110
+ key = await subtle.importKey('jwk', jwk, {
111
+ name: 'ECDSA',
112
+ namedCurve: 'P-256',
113
+ }, false, ['verify']);
114
+ }
115
+ catch {
116
+ return verificationResult('invalid-key');
117
+ }
118
+ finally {
119
+ request.key.bytes.fill(0);
120
+ }
121
+ try {
122
+ const valid = await subtle.verify({
123
+ name: 'ECDSA',
124
+ hash: { name: 'SHA-256' },
125
+ }, key, request.signature.buffer, request.data.buffer);
126
+ if (valid === true)
127
+ return verificationResult('valid');
128
+ if (valid === false)
129
+ return verificationResult('invalid-authenticator');
130
+ return verificationResult('realization-failure');
131
+ }
132
+ catch {
133
+ return verificationResult('realization-failure');
134
+ }
135
+ }
136
+ /** Execute the already-selected JavaScript runtime-builtin realization. */
137
+ export async function verifyEs256(request) {
138
+ return verifyEs256WithSubtle(request, selectedRuntimeBuiltin());
139
+ }
140
+ //# sourceMappingURL=realization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realization.js","sourceRoot":"","sources":["../../src/internal/realization.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,GAGnB,MAAM,mBAAmB,CAAC;AAK3B,MAAM,kBAAkB,GACtB,kEAAkE,CAAC;AACrE,MAAM,UAAU,GACd,mEAAmE,CAAC;AACtE,MAAM,MAAM,GACV,mEAAmE,CAAC;AAEtE,SAAS,mBAAmB,CAAC,KAAiB;IAC5C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC/B,MAAM,IAAI,kBAAkB,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,kBAAkB,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,kBAAkB,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,kBAAkB,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAiB;IACzC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,MAAM,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACjE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,KAAiB;IACvC,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU;QAAE,OAAO,KAAK,CAAC;IACrD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;IAClC,MAAM,KAAK,GAAG,CACZ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;UAC1B,CAAC,EAAE,GAAG,CAAC,CAAC;UACR,MAAM,CACT,GAAG,UAAU,CAAC;IACf,OAAO,IAAI,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,sBAAsB;IAC7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC;QACzC,IACE,CAAC,MAAM;eACJ,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU;eACtC,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EACtC,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAmC,EACnC,MAAqC;IAErC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,GAAc,CAAC;IACnB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAC1B,KAAK,EACL,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EACxB;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACzB,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC;SACzC,EACD,KAAK,EACL,CAAC,QAAQ,CAAC,CACX,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC;IAED,sEAAsE;IACtE,wEAAwE;IACxE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAC/B,EAAE,IAAI,EAAE,MAAM,EAAE,EAChB,GAAG,EACH,OAAO,CAAC,GAAG,CAAC,MAAM,EAClB,OAAO,CAAC,IAAI,CAAC,MAAM,CACpB,CAAC;QACF,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,kBAAkB,CAAC,uBAAuB,CAAC,CAAC;QACxE,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;IACnD,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAmC;IAEnC,OAAO,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAyC,EACzC,MAAqC;IAErC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,GAAG,GAAG;QACV,GAAG,EAAE,IAAI;QACT,GAAG,EAAE,OAAO;QACZ,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzD,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1D,GAAG,EAAE,IAAI;QACT,OAAO,EAAE,CAAC,QAAQ,CAAC;KACC,CAAC;IACvB,IAAI,GAAc,CAAC;IACnB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAC1B,KAAK,EACL,GAAG,EACH;YACE,IAAI,EAAE,OAAO;YACb,UAAU,EAAE,OAAO;SACpB,EACD,KAAK,EACL,CAAC,QAAQ,CAAC,CACX,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAC/B;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SAC1B,EACD,GAAG,EACH,OAAO,CAAC,SAAS,CAAC,MAAM,EACxB,OAAO,CAAC,IAAI,CAAC,MAAM,CACpB,CAAC;QACF,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,kBAAkB,CAAC,uBAAuB,CAAC,CAAC;QACxE,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAyC;IAEzC,OAAO,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { type CryptoVerificationResult, type CryptoVerificationStatus, type Es256JoseVerifyInput, type MacVerifyRequest, type P256PublicKeyCoordinates, type SignatureVerifyRequest } from '../contracts.js';
2
+ export interface NormalizedMacVerifyRequest {
3
+ readonly algorithm: 'HS256';
4
+ readonly key: {
5
+ readonly type: 'hmac-key-bytes';
6
+ readonly bytes: Uint8Array<ArrayBuffer>;
7
+ };
8
+ readonly data: Uint8Array<ArrayBuffer>;
9
+ readonly tag: Uint8Array<ArrayBuffer>;
10
+ }
11
+ export type MacVerifyRequestNormalization = {
12
+ readonly ok: true;
13
+ readonly request: NormalizedMacVerifyRequest;
14
+ } | {
15
+ readonly ok: false;
16
+ readonly result: CryptoVerificationResult;
17
+ };
18
+ export interface NormalizedSignatureVerifyRequest {
19
+ readonly algorithm: 'ES256';
20
+ readonly key: {
21
+ readonly type: 'p256-public-key-bytes';
22
+ readonly bytes: Uint8Array<ArrayBuffer>;
23
+ };
24
+ readonly data: Uint8Array<ArrayBuffer>;
25
+ readonly signature: Uint8Array<ArrayBuffer>;
26
+ }
27
+ export type SignatureVerifyRequestNormalization = {
28
+ readonly ok: true;
29
+ readonly request: NormalizedSignatureVerifyRequest;
30
+ } | {
31
+ readonly ok: false;
32
+ readonly result: CryptoVerificationResult;
33
+ };
34
+ export type P256PublicKeyNormalization = {
35
+ readonly ok: true;
36
+ readonly key: NormalizedSignatureVerifyRequest['key'];
37
+ } | {
38
+ readonly ok: false;
39
+ readonly result: CryptoVerificationResult;
40
+ };
41
+ export declare function verificationResult(status: CryptoVerificationStatus): CryptoVerificationResult;
42
+ export declare function normalizeMacVerifyRequest(value: unknown): MacVerifyRequestNormalization;
43
+ export declare function normalizeSignatureVerifyRequest(value: unknown): SignatureVerifyRequestNormalization;
44
+ export declare function normalizeEs256JoseVerifyRequest(value: Es256JoseVerifyInput): SignatureVerifyRequestNormalization;
45
+ export declare function normalizeP256PublicKeyCoordinates(value: P256PublicKeyCoordinates): P256PublicKeyNormalization;
46
+ export declare function normalizeVerificationResult(value: unknown): CryptoVerificationResult;
47
+ export declare function redactMacVerifyRequest(request: MacVerifyRequest | NormalizedMacVerifyRequest): Readonly<{
48
+ algorithm: 'HS256';
49
+ key: Readonly<{
50
+ type: 'hmac-key-bytes';
51
+ compatibleAlgorithms: readonly ['HS256'];
52
+ identity: '[redacted]';
53
+ }>;
54
+ data: '[redacted]';
55
+ tag: '[redacted]';
56
+ }>;
57
+ export declare function redactSignatureVerifyRequest(request: SignatureVerifyRequest | NormalizedSignatureVerifyRequest): Readonly<{
58
+ algorithm: 'ES256';
59
+ key: Readonly<{
60
+ type: 'p256-public-key-bytes';
61
+ compatibleAlgorithms: readonly ['ES256'];
62
+ identity: '[redacted]';
63
+ }>;
64
+ data: '[redacted]';
65
+ signature: '[redacted]';
66
+ }>;
67
+ //# sourceMappingURL=verification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/internal/verification.ts"],"names":[],"mappings":"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"}