@rhinestone/sdk 0.0.0-dev-20260803104759 → 0.0.0-dev-20260804115147
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.
|
@@ -3,7 +3,7 @@ import { createOrchestratorAuth } from './auth.js';
|
|
|
3
3
|
import { ChainCatalog, parseChains } from './chain-catalog.js';
|
|
4
4
|
import { fetchOrchestratorJson } from './fetch.js';
|
|
5
5
|
import { mapIntentRequestToWire, mapIntentStatusFromWire, mapPortfolioFromWire, mapQuoteResponseFromWire, mapSignedIntentToWire, mapSplitRequestToWire, mapSplitResultFromWire, } from './mappers.js';
|
|
6
|
-
const SDK_VERSION = '0.0.0-dev-
|
|
6
|
+
const SDK_VERSION = '0.0.0-dev-20260804115147';
|
|
7
7
|
const API_VERSION = '2026-04.blanc';
|
|
8
8
|
export function createOrchestratorClient(options) {
|
|
9
9
|
const fetchPort = options.fetch ?? globalThis.fetch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webauthn.d.ts","sourceRoot":"","sources":["../../../../modules/validators/webauthn.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAGZ,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"webauthn.d.ts","sourceRoot":"","sources":["../../../../modules/validators/webauthn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,40 @@
|
|
|
1
|
-
import { bytesToHex, encodeAbiParameters, hexToBytes, keccak256, } from 'viem';
|
|
1
|
+
import { bytesToHex, encodeAbiParameters, hexToBytes, keccak256, stringToBytes, } from 'viem';
|
|
2
2
|
export const WEBAUTHN_VALIDATOR_ADDRESS = '0x0000000000578c4cb0e472a5462da43c495c3f33';
|
|
3
3
|
export const WEBAUTHN_V0_VALIDATOR_ADDRESS = WEBAUTHN_VALIDATOR_ADDRESS;
|
|
4
4
|
export const WEBAUTHN_MOCK_SIGNATURE = '0x0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001b9b86eb98fda3ed4d797d9e690588dfadf17b329a76a47cec935bebf92d7ddc80000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000000019b2e9410bb6850f9f660a03d609d5a844fb96bcdc87a15139b03ee22c70f469100d2b865a215c3bf786387064effa8fcedcb1d625b5148f8a1236d5e3ff11acf000000000000000000000000000000000000000000000000000000000000002549960de5880e8c687434170f6476605b8fe4aeb9a28632c7995cf3ba831d9763050000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000867b2274797065223a22776562617574686e2e676574222c226368616c6c656e6765223a22396a4546696a75684557724d34534f572d7443684a625545484550343456636a634a2d42716f3166544d38222c226f726967696e223a22687474703a2f2f6c6f63616c686f73743a38303830222c2263726f73734f726967696e223a66616c73657d0000000000000000000000000000000000000000000000000000';
|
|
5
|
+
const P256_CURVE_ORDER = 0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551n;
|
|
6
|
+
const P256_HALF_CURVE_ORDER = P256_CURVE_ORDER / 2n;
|
|
7
|
+
const WEBAUTHN_TYPE_LITERAL = stringToBytes('"type":"webauthn.get"');
|
|
8
|
+
const WEBAUTHN_CHALLENGE_LITERAL = stringToBytes('"challenge":"');
|
|
9
|
+
function findClientDataLiteral(clientData, literal, name) {
|
|
10
|
+
const lastStart = clientData.length - literal.length;
|
|
11
|
+
for (let start = 0; start <= lastStart; start++) {
|
|
12
|
+
if (literal.every((byte, offset) => clientData[start + offset] === byte)) {
|
|
13
|
+
return BigInt(start);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
throw new Error(`WebAuthn clientDataJSON is missing the required ${name} field`);
|
|
17
|
+
}
|
|
18
|
+
function normalizeP256S(s) {
|
|
19
|
+
return s > P256_HALF_CURVE_ORDER ? P256_CURVE_ORDER - s : s;
|
|
20
|
+
}
|
|
21
|
+
function normalizeWebauthnSignature(signature) {
|
|
22
|
+
const clientData = stringToBytes(signature.clientDataJSON);
|
|
23
|
+
return {
|
|
24
|
+
...signature,
|
|
25
|
+
challengeIndex: findClientDataLiteral(clientData, WEBAUTHN_CHALLENGE_LITERAL, 'challenge'),
|
|
26
|
+
typeIndex: findClientDataLiteral(clientData, WEBAUTHN_TYPE_LITERAL, 'type'),
|
|
27
|
+
s: normalizeP256S(signature.s),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function normalizeWebauthnSignatureV0(signature) {
|
|
31
|
+
const clientData = stringToBytes(signature.clientDataJSON);
|
|
32
|
+
return {
|
|
33
|
+
...signature,
|
|
34
|
+
typeIndex: findClientDataLiteral(clientData, WEBAUTHN_TYPE_LITERAL, 'type'),
|
|
35
|
+
s: normalizeP256S(signature.s),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
5
38
|
export function parseWebauthnPublicKey(publicKey) {
|
|
6
39
|
const bytes = typeof publicKey === 'string' ? hexToBytes(publicKey) : publicKey;
|
|
7
40
|
const offset = bytes.length === 65 ? 1 : 0;
|
|
@@ -26,7 +59,7 @@ export function encodeWebauthnSignatures(credentialIds, usePrecompile, signature
|
|
|
26
59
|
const ordered = credentialIds
|
|
27
60
|
.map((credentialId, index) => ({
|
|
28
61
|
credentialId,
|
|
29
|
-
signature: signatures[index],
|
|
62
|
+
signature: normalizeWebauthnSignature(signatures[index]),
|
|
30
63
|
}))
|
|
31
64
|
.sort((left, right) => left.credentialId.localeCompare(right.credentialId));
|
|
32
65
|
return encodeAbiParameters([
|
|
@@ -51,6 +84,7 @@ export function encodeWebauthnSignatures(credentialIds, usePrecompile, signature
|
|
|
51
84
|
]);
|
|
52
85
|
}
|
|
53
86
|
export function encodeWebauthnSignatureV0(signature, usePrecompile) {
|
|
87
|
+
const normalized = normalizeWebauthnSignatureV0(signature);
|
|
54
88
|
return encodeAbiParameters([
|
|
55
89
|
{ type: 'bytes', name: 'authenticatorData' },
|
|
56
90
|
{ type: 'string', name: 'clientDataJSON' },
|
|
@@ -59,11 +93,11 @@ export function encodeWebauthnSignatureV0(signature, usePrecompile) {
|
|
|
59
93
|
{ type: 'uint256', name: 's' },
|
|
60
94
|
{ type: 'bool', name: 'usePrecompiled' },
|
|
61
95
|
], [
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
96
|
+
normalized.authenticatorData,
|
|
97
|
+
normalized.clientDataJSON,
|
|
98
|
+
normalized.typeIndex,
|
|
99
|
+
normalized.r,
|
|
100
|
+
normalized.s,
|
|
67
101
|
usePrecompile,
|
|
68
102
|
]);
|
|
69
103
|
}
|