@dynamic-labs-wallet/node 1.1.15 → 1.1.17
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/index.cjs +174 -74
- package/index.esm.js +171 -72
- package/package.json +3 -3
- package/src/api.d.ts +18 -0
- package/src/api.d.ts.map +1 -0
- package/src/client.d.ts +28 -3
- package/src/client.d.ts.map +1 -1
- package/src/core/createCore.d.ts.map +1 -1
- package/src/index.d.ts +1 -0
- package/src/index.d.ts.map +1 -1
package/index.cjs
CHANGED
|
@@ -44,6 +44,43 @@ function _extends() {
|
|
|
44
44
|
return _extends.apply(this, arguments);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
function _object_without_properties_loose(source, excluded) {
|
|
48
|
+
if (source == null) return {};
|
|
49
|
+
var target = {};
|
|
50
|
+
var sourceKeys = Object.keys(source);
|
|
51
|
+
var key, i;
|
|
52
|
+
for(i = 0; i < sourceKeys.length; i++){
|
|
53
|
+
key = sourceKeys[i];
|
|
54
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
55
|
+
target[key] = source[key];
|
|
56
|
+
}
|
|
57
|
+
return target;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Server SDK variant of {@link DynamicApiClient}. Defaults `isServerSdk` to `true`
|
|
62
|
+
* so routes use the `/api/v0/server` prefix.
|
|
63
|
+
* @see DYNT-537
|
|
64
|
+
*/ class DynamicServerApiClient extends core$1.DynamicApiClient {
|
|
65
|
+
/**
|
|
66
|
+
* Refreshing only makes sense for a JWT-holding client — a server client
|
|
67
|
+
* already holds the raw API key and re-authenticates via
|
|
68
|
+
* `authenticateApiToken` instead. Never call this on a `DynamicServerApiClient`;
|
|
69
|
+
* construct a plain `DynamicApiClient` bearer-authenticated with the current
|
|
70
|
+
* JWT for the refresh call (see `DynamicWalletClient.refreshAuthToken`).
|
|
71
|
+
*/ async refreshUser() {
|
|
72
|
+
throw new Error('refreshUser is not supported on DynamicServerApiClient. Use a plain DynamicApiClient instead.');
|
|
73
|
+
}
|
|
74
|
+
constructor(_param){
|
|
75
|
+
var { isServerSdk } = _param, options = _object_without_properties_loose(_param, [
|
|
76
|
+
"isServerSdk"
|
|
77
|
+
]);
|
|
78
|
+
super(_extends({}, options, {
|
|
79
|
+
isServerSdk: isServerSdk != null ? isServerSdk : true
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
47
84
|
const createLogError = (clientTag)=>({ message, error, context })=>logError({
|
|
48
85
|
message,
|
|
49
86
|
error,
|
|
@@ -372,6 +409,67 @@ const getKey = async ({ password, salt, encryptionConfig })=>{
|
|
|
372
409
|
// walletId resolution server-side.
|
|
373
410
|
const CEREMONY_COMPLETE_WAIT_MS = 5000;
|
|
374
411
|
|
|
412
|
+
const subtle = crypto.webcrypto.subtle;
|
|
413
|
+
const ALGO = {
|
|
414
|
+
name: 'ECDSA',
|
|
415
|
+
namedCurve: 'P-256'
|
|
416
|
+
};
|
|
417
|
+
const SIGN_ALGO = {
|
|
418
|
+
name: 'ECDSA',
|
|
419
|
+
hash: 'SHA-256'
|
|
420
|
+
};
|
|
421
|
+
/** Compress a 65-byte uncompressed SEC1 P-256 point to 33-byte compressed lowercase hex. */ const compress = (raw)=>{
|
|
422
|
+
if (raw.length !== 65 || raw[0] !== 0x04) {
|
|
423
|
+
throw new Error('expected a 65-byte uncompressed P-256 public key');
|
|
424
|
+
}
|
|
425
|
+
const x = Buffer.from(raw.slice(1, 33));
|
|
426
|
+
const prefix = (raw[64] & 1) === 0 ? 0x02 : 0x03;
|
|
427
|
+
return Buffer.concat([
|
|
428
|
+
Buffer.from([
|
|
429
|
+
prefix
|
|
430
|
+
]),
|
|
431
|
+
x
|
|
432
|
+
]).toString('hex');
|
|
433
|
+
};
|
|
434
|
+
/**
|
|
435
|
+
* Generates a P-256 session key pair for the signed-session flow.
|
|
436
|
+
*
|
|
437
|
+
* Returns the compressed public-key hex (bind it into the Dynamic JWT via the
|
|
438
|
+
* `x-dyn-session-public-key` header when you sign in) and the private JWK.
|
|
439
|
+
*
|
|
440
|
+
* Stateless and custody-agnostic: the SDK does NOT persist the key. YOU store
|
|
441
|
+
* `privateKeyJwk` wherever you keep secrets. The returned JWK is extractable
|
|
442
|
+
* (so it can be handed back to you) and is therefore a convenience path, not a
|
|
443
|
+
* security boundary — if you need a non-extractable key (so a host/operator
|
|
444
|
+
* cannot exfiltrate it), generate it in a KMS/HSM/enclave instead and supply a
|
|
445
|
+
* `getSessionSignature` that signs there.
|
|
446
|
+
*/ async function generateSessionKeyPair() {
|
|
447
|
+
const keyPair = await subtle.generateKey(ALGO, true, [
|
|
448
|
+
'sign',
|
|
449
|
+
'verify'
|
|
450
|
+
]);
|
|
451
|
+
const rawPublicKey = await subtle.exportKey('raw', keyPair.publicKey);
|
|
452
|
+
const exportedJwk = await subtle.exportKey('jwk', keyPair.privateKey);
|
|
453
|
+
const privateKeyJwk = exportedJwk;
|
|
454
|
+
return {
|
|
455
|
+
publicKeyHex: compress(new Uint8Array(rawPublicKey)),
|
|
456
|
+
privateKeyJwk
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Signs a message with a P-256 session private JWK using the exact encoding the
|
|
461
|
+
* keyshares relay expects: ECDSA P-256 / SHA-256 over UTF-8(message), raw r‖s
|
|
462
|
+
* (64 bytes), lowercase hex. Use it to implement `getSessionSignature`:
|
|
463
|
+
* getSessionSignature: (message) => signSessionMessage(message, privateKeyJwk)
|
|
464
|
+
* The JWK is imported non-extractable for signing.
|
|
465
|
+
*/ async function signSessionMessage(message, privateKeyJwk) {
|
|
466
|
+
const key = await subtle.importKey('jwk', privateKeyJwk, ALGO, false, [
|
|
467
|
+
'sign'
|
|
468
|
+
]);
|
|
469
|
+
const signature = await subtle.sign(SIGN_ALGO, key, new TextEncoder().encode(message));
|
|
470
|
+
return Buffer.from(new Uint8Array(signature)).toString('hex');
|
|
471
|
+
}
|
|
472
|
+
|
|
375
473
|
class DynamicWalletClient {
|
|
376
474
|
ensureApiClientAuthenticated() {
|
|
377
475
|
if (!this.isApiClientAuthenticated) {
|
|
@@ -410,7 +508,7 @@ class DynamicWalletClient {
|
|
|
410
508
|
* and rebuilds the API client, preserving the forward-MPC client.
|
|
411
509
|
*/ setAuthenticatedJwt(jwt) {
|
|
412
510
|
this.baseJWTAuthToken = jwt;
|
|
413
|
-
this.apiClient = new
|
|
511
|
+
this.apiClient = new DynamicServerApiClient({
|
|
414
512
|
environmentId: this.environmentId,
|
|
415
513
|
authToken: jwt,
|
|
416
514
|
baseApiUrl: this.baseApiUrl,
|
|
@@ -422,19 +520,54 @@ class DynamicWalletClient {
|
|
|
422
520
|
this.nonceCache.length = 0;
|
|
423
521
|
this.nonceRefill = undefined;
|
|
424
522
|
this.nonceAuthGeneration += 1;
|
|
523
|
+
// Deliberately does not touch nonceApiClient: refreshAuthToken installs a
|
|
524
|
+
// refreshed JWT for the *same* session and must keep using the raw-token
|
|
525
|
+
// client for nonces. authenticateJwt and authenticateApiToken manage
|
|
526
|
+
// nonceApiClient themselves since only they know whether a raw token
|
|
527
|
+
// still applies to the new session.
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Resolves the session key to bind into `authenticateApiToken`'s JWT.
|
|
531
|
+
*
|
|
532
|
+
* Defaults to generating a fresh session key per call (never persisted),
|
|
533
|
+
* mirroring the browser's rotate-on-reauth behavior. Pass `sessionPublicKey`
|
|
534
|
+
* + `getSessionSignature` together to supply your own instead — e.g. a
|
|
535
|
+
* stable key reused across calls, or one backed by a KMS/HSM/enclave signer.
|
|
536
|
+
*/ async resolveSessionKey(options) {
|
|
537
|
+
if ((options == null ? void 0 : options.sessionPublicKey) || (options == null ? void 0 : options.getSessionSignature)) {
|
|
538
|
+
if (!options.sessionPublicKey || !options.getSessionSignature) {
|
|
539
|
+
throw new Error('authenticateApiToken: sessionPublicKey and getSessionSignature must be supplied together, or both omitted to auto-generate a session key.');
|
|
540
|
+
}
|
|
541
|
+
return {
|
|
542
|
+
publicKeyHex: options.sessionPublicKey,
|
|
543
|
+
getSessionSignature: options.getSessionSignature
|
|
544
|
+
};
|
|
545
|
+
}
|
|
546
|
+
const { publicKeyHex, privateKeyJwk } = await generateSessionKeyPair();
|
|
547
|
+
return {
|
|
548
|
+
publicKeyHex,
|
|
549
|
+
getSessionSignature: (message)=>signSessionMessage(message, privateKeyJwk)
|
|
550
|
+
};
|
|
425
551
|
}
|
|
426
|
-
async authenticateApiToken(authToken) {
|
|
427
|
-
const tmpClient = new
|
|
552
|
+
async authenticateApiToken(authToken, options) {
|
|
553
|
+
const tmpClient = new DynamicServerApiClient({
|
|
428
554
|
environmentId: this.environmentId,
|
|
429
555
|
authToken,
|
|
430
556
|
baseApiUrl: this.baseApiUrl,
|
|
431
557
|
logger: this.logger
|
|
432
558
|
});
|
|
559
|
+
// Binds the resulting JWT's session_public_key claim, which server-side
|
|
560
|
+
// BA operations (e.g. addSigner's client-keyshare backup grant) require present.
|
|
561
|
+
const { publicKeyHex, getSessionSignature } = await this.resolveSessionKey(options);
|
|
433
562
|
const response = await tmpClient.authenticateApiToken({
|
|
434
|
-
environmentId: this.environmentId
|
|
563
|
+
environmentId: this.environmentId,
|
|
564
|
+
sessionPublicKey: publicKeyHex
|
|
435
565
|
});
|
|
436
566
|
this.setAuthenticatedJwt(response.data.encodedJwts.minifiedJwt);
|
|
437
|
-
this.getSessionSignature =
|
|
567
|
+
this.getSessionSignature = getSessionSignature;
|
|
568
|
+
// /nonces is authenticated via DYN_API_TOKEN only — reuse the client
|
|
569
|
+
// already holding the raw token instead of the JWT-authenticated one.
|
|
570
|
+
this.nonceApiClient = tmpClient;
|
|
438
571
|
}
|
|
439
572
|
/**
|
|
440
573
|
* Authenticates the client with a Dynamic user JWT obtained outside the SDK —
|
|
@@ -453,6 +586,9 @@ class DynamicWalletClient {
|
|
|
453
586
|
throw new Error('Invalid JWT: expected a compact JWS with three dot-separated segments');
|
|
454
587
|
}
|
|
455
588
|
this.setAuthenticatedJwt(jwt);
|
|
589
|
+
// No raw API token backs this session — drop any raw-token client left
|
|
590
|
+
// over from a prior authenticateApiToken call on this instance.
|
|
591
|
+
this.nonceApiClient = undefined;
|
|
456
592
|
this.getSessionSignature = options == null ? void 0 : options.getSessionSignature;
|
|
457
593
|
}
|
|
458
594
|
async buildSignedSessionId() {
|
|
@@ -494,8 +630,8 @@ class DynamicWalletClient {
|
|
|
494
630
|
// A refill that lands after a re-auth belongs to the old session — drop it
|
|
495
631
|
// (and leave the new session's refill slot alone) so stale nonces are never used.
|
|
496
632
|
const generation = this.nonceAuthGeneration;
|
|
497
|
-
var _this_nonceRefill;
|
|
498
|
-
(_this_nonceRefill = this.nonceRefill) != null ? _this_nonceRefill : this.nonceRefill = this.apiClient.getNonces({
|
|
633
|
+
var _this_nonceApiClient, _this_nonceRefill;
|
|
634
|
+
(_this_nonceRefill = this.nonceRefill) != null ? _this_nonceRefill : this.nonceRefill = ((_this_nonceApiClient = this.nonceApiClient) != null ? _this_nonceApiClient : this.apiClient).getNonces({
|
|
499
635
|
count: this.nonceBatchSize
|
|
500
636
|
}).then(({ nonces })=>{
|
|
501
637
|
if (!(nonces == null ? void 0 : nonces.length)) throw new Error('No session nonce available');
|
|
@@ -514,7 +650,20 @@ class DynamicWalletClient {
|
|
|
514
650
|
* must re-authenticate.
|
|
515
651
|
*/ async refreshAuthToken() {
|
|
516
652
|
this.ensureApiClientAuthenticated();
|
|
517
|
-
|
|
653
|
+
if (!this.baseJWTAuthToken) {
|
|
654
|
+
throw new Error('Client is not authenticated');
|
|
655
|
+
}
|
|
656
|
+
// refreshUser only makes sense for a JWT-holding client — this.apiClient is a
|
|
657
|
+
// DynamicServerApiClient, which throws if refreshUser is called on it (a server
|
|
658
|
+
// client re-authenticates via authenticateApiToken instead). Use a plain client
|
|
659
|
+
// bearer-authenticated with the current JWT for the refresh call itself.
|
|
660
|
+
const refreshClient = new core$1.DynamicApiClient({
|
|
661
|
+
environmentId: this.environmentId,
|
|
662
|
+
authToken: this.baseJWTAuthToken,
|
|
663
|
+
baseApiUrl: this.baseApiUrl,
|
|
664
|
+
logger: this.logger
|
|
665
|
+
});
|
|
666
|
+
const data = await refreshClient.refreshUser();
|
|
518
667
|
var _data_minifiedJwt;
|
|
519
668
|
const refreshedJwt = (_data_minifiedJwt = data == null ? void 0 : data.minifiedJwt) != null ? _data_minifiedJwt : data == null ? void 0 : data.jwt;
|
|
520
669
|
if (typeof refreshedJwt !== 'string' || refreshedJwt.length === 0) {
|
|
@@ -524,6 +673,15 @@ class DynamicWalletClient {
|
|
|
524
673
|
return refreshedJwt;
|
|
525
674
|
}
|
|
526
675
|
/**
|
|
676
|
+
* Resolves this environment's server identity — a real userId the server
|
|
677
|
+
* itself is authenticated as, with no email/externalUserId of its own.
|
|
678
|
+
* Feed the returned userId into a business-account `addMember` call to add
|
|
679
|
+
* the server as a member.
|
|
680
|
+
*/ async getServerIdentity() {
|
|
681
|
+
this.ensureApiClientAuthenticated();
|
|
682
|
+
return this.apiClient.getServerIdentity();
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
527
685
|
* Fetches non-sensitive wallet identity (walletId, accountAddress, chainName,
|
|
528
686
|
* derivationPath, thresholdSignatureScheme) from the Dynamic API by
|
|
529
687
|
* `accountAddress`. SDK-scoped — works with the customer auth token from
|
|
@@ -857,7 +1015,7 @@ class DynamicWalletClient {
|
|
|
857
1015
|
externalServerKeyShares: externalServerKeygenResults
|
|
858
1016
|
};
|
|
859
1017
|
}
|
|
860
|
-
async dynamicServerSign({ walletId, message, isFormatted, context, bitcoinConfig, onError, dynamicRequestId: providedRequestId }) {
|
|
1018
|
+
async dynamicServerSign({ walletId, message, isFormatted, context, bitcoinConfig, onError, dynamicRequestId: providedRequestId, shareSetId }) {
|
|
861
1019
|
const dynamicRequestId = providedRequestId || uuid.v4();
|
|
862
1020
|
this.ensureApiClientAuthenticated();
|
|
863
1021
|
// Create the room and sign the message
|
|
@@ -872,7 +1030,8 @@ class DynamicWalletClient {
|
|
|
872
1030
|
context: context ? JSON.parse(JSON.stringify(context, (_key, value)=>typeof value === 'bigint' ? String(value) : value)) : undefined,
|
|
873
1031
|
onError,
|
|
874
1032
|
forwardMPCClientEnabled: this.forwardMPCEnabled,
|
|
875
|
-
bitcoinConfig
|
|
1033
|
+
bitcoinConfig,
|
|
1034
|
+
shareSetId
|
|
876
1035
|
});
|
|
877
1036
|
return _extends({}, data, {
|
|
878
1037
|
dynamicRequestId
|
|
@@ -1046,7 +1205,8 @@ class DynamicWalletClient {
|
|
|
1046
1205
|
onError: (error)=>{
|
|
1047
1206
|
sseErrorGate.reject(error);
|
|
1048
1207
|
onError == null ? void 0 : onError(error);
|
|
1049
|
-
}
|
|
1208
|
+
},
|
|
1209
|
+
shareSetId: walletMetadata.shareSetId
|
|
1050
1210
|
});
|
|
1051
1211
|
const derivationPath = derivationPathStr && derivationPathStr != '' ? new Uint32Array(Object.values(JSON.parse(derivationPathStr))) : undefined;
|
|
1052
1212
|
// Try forward MPC first if enabled, with fallback to relay-based signing on attestation failure
|
|
@@ -2081,7 +2241,7 @@ class DynamicWalletClient {
|
|
|
2081
2241
|
logger: this.logger
|
|
2082
2242
|
});
|
|
2083
2243
|
})();
|
|
2084
|
-
this.apiClient = new
|
|
2244
|
+
this.apiClient = new DynamicServerApiClient({
|
|
2085
2245
|
environmentId,
|
|
2086
2246
|
baseApiUrl,
|
|
2087
2247
|
forwardMPCClient: this.resolvedForwardMPCClient,
|
|
@@ -2090,67 +2250,6 @@ class DynamicWalletClient {
|
|
|
2090
2250
|
}
|
|
2091
2251
|
}
|
|
2092
2252
|
|
|
2093
|
-
const subtle = crypto.webcrypto.subtle;
|
|
2094
|
-
const ALGO = {
|
|
2095
|
-
name: 'ECDSA',
|
|
2096
|
-
namedCurve: 'P-256'
|
|
2097
|
-
};
|
|
2098
|
-
const SIGN_ALGO = {
|
|
2099
|
-
name: 'ECDSA',
|
|
2100
|
-
hash: 'SHA-256'
|
|
2101
|
-
};
|
|
2102
|
-
/** Compress a 65-byte uncompressed SEC1 P-256 point to 33-byte compressed lowercase hex. */ const compress = (raw)=>{
|
|
2103
|
-
if (raw.length !== 65 || raw[0] !== 0x04) {
|
|
2104
|
-
throw new Error('expected a 65-byte uncompressed P-256 public key');
|
|
2105
|
-
}
|
|
2106
|
-
const x = Buffer.from(raw.slice(1, 33));
|
|
2107
|
-
const prefix = (raw[64] & 1) === 0 ? 0x02 : 0x03;
|
|
2108
|
-
return Buffer.concat([
|
|
2109
|
-
Buffer.from([
|
|
2110
|
-
prefix
|
|
2111
|
-
]),
|
|
2112
|
-
x
|
|
2113
|
-
]).toString('hex');
|
|
2114
|
-
};
|
|
2115
|
-
/**
|
|
2116
|
-
* Generates a P-256 session key pair for the signed-session flow.
|
|
2117
|
-
*
|
|
2118
|
-
* Returns the compressed public-key hex (bind it into the Dynamic JWT via the
|
|
2119
|
-
* `x-dyn-session-public-key` header when you sign in) and the private JWK.
|
|
2120
|
-
*
|
|
2121
|
-
* Stateless and custody-agnostic: the SDK does NOT persist the key. YOU store
|
|
2122
|
-
* `privateKeyJwk` wherever you keep secrets. The returned JWK is extractable
|
|
2123
|
-
* (so it can be handed back to you) and is therefore a convenience path, not a
|
|
2124
|
-
* security boundary — if you need a non-extractable key (so a host/operator
|
|
2125
|
-
* cannot exfiltrate it), generate it in a KMS/HSM/enclave instead and supply a
|
|
2126
|
-
* `getSessionSignature` that signs there.
|
|
2127
|
-
*/ async function generateSessionKeyPair() {
|
|
2128
|
-
const keyPair = await subtle.generateKey(ALGO, true, [
|
|
2129
|
-
'sign',
|
|
2130
|
-
'verify'
|
|
2131
|
-
]);
|
|
2132
|
-
const rawPublicKey = await subtle.exportKey('raw', keyPair.publicKey);
|
|
2133
|
-
const exportedJwk = await subtle.exportKey('jwk', keyPair.privateKey);
|
|
2134
|
-
const privateKeyJwk = exportedJwk;
|
|
2135
|
-
return {
|
|
2136
|
-
publicKeyHex: compress(new Uint8Array(rawPublicKey)),
|
|
2137
|
-
privateKeyJwk
|
|
2138
|
-
};
|
|
2139
|
-
}
|
|
2140
|
-
/**
|
|
2141
|
-
* Signs a message with a P-256 session private JWK using the exact encoding the
|
|
2142
|
-
* keyshares relay expects: ECDSA P-256 / SHA-256 over UTF-8(message), raw r‖s
|
|
2143
|
-
* (64 bytes), lowercase hex. Use it to implement `getSessionSignature`:
|
|
2144
|
-
* getSessionSignature: (message) => signSessionMessage(message, privateKeyJwk)
|
|
2145
|
-
* The JWK is imported non-extractable for signing.
|
|
2146
|
-
*/ async function signSessionMessage(message, privateKeyJwk) {
|
|
2147
|
-
const key = await subtle.importKey('jwk', privateKeyJwk, ALGO, false, [
|
|
2148
|
-
'sign'
|
|
2149
|
-
]);
|
|
2150
|
-
const signature = await subtle.sign(SIGN_ALGO, key, new TextEncoder().encode(message));
|
|
2151
|
-
return Buffer.from(new Uint8Array(signature)).toString('hex');
|
|
2152
|
-
}
|
|
2153
|
-
|
|
2154
2253
|
const createCore = ({ environmentId, baseApiUrl, baseMPCRelayApiUrl, debug = false, logger: logger$1 })=>{
|
|
2155
2254
|
let coreLogger;
|
|
2156
2255
|
if (logger$1) {
|
|
@@ -2162,7 +2261,7 @@ const createCore = ({ environmentId, baseApiUrl, baseMPCRelayApiUrl, debug = fal
|
|
|
2162
2261
|
}
|
|
2163
2262
|
core$1.Logger.configure(coreLogger);
|
|
2164
2263
|
const createApiClient = (options = {})=>{
|
|
2165
|
-
return new
|
|
2264
|
+
return new DynamicServerApiClient(_extends({
|
|
2166
2265
|
environmentId,
|
|
2167
2266
|
baseApiUrl
|
|
2168
2267
|
}, options, {
|
|
@@ -2729,6 +2828,7 @@ Object.defineProperty(exports, "SignMessageRawSignHashFunctionEnum", {
|
|
|
2729
2828
|
enumerable: true,
|
|
2730
2829
|
get: function () { return sdkApiCore.SignMessageRawSignHashFunctionEnum; }
|
|
2731
2830
|
});
|
|
2831
|
+
exports.DynamicServerApiClient = DynamicServerApiClient;
|
|
2732
2832
|
exports.DynamicWalletClient = DynamicWalletClient;
|
|
2733
2833
|
exports.ERROR_RAW_SIGN_CONTEXT_REQUIRED = ERROR_RAW_SIGN_CONTEXT_REQUIRED;
|
|
2734
2834
|
exports.base64ToBytes = base64ToBytes;
|
package/index.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from '#internal/core';
|
|
2
|
-
import { MPC_RELAY_PROD_API_URL, DEFAULT_ED25519_VARIANT, getMPCChainConfig, BackupLocation, isAxiosError, handleAxiosError, Logger,
|
|
2
|
+
import { MPC_RELAY_PROD_API_URL, DEFAULT_ED25519_VARIANT, getMPCChainConfig, DynamicApiClient, BackupLocation, isAxiosError, handleAxiosError, Logger, getClientThreshold, MPC_CONFIG, classifyForwardMpcError, getTSSConfig, serializeMessageForForwardMPC, getEnvironmentFromUrl, MPC_RELAY_URL_MAP, WalletOperation, createRejectablePromise, getServerWalletReshareConfig, getRequiredExternalKeyShareId, verifiedCredentialNameToChainEnum, ThresholdSignatureScheme, DYNAMIC_AUTH_PROD_BASE_API_URL, DYNAMIC_FORWARD_MPC_ENCLAVE_URL_MAP, DYNAMIC_FORWARD_MPC_ENCLAVE_ATTESTATION_CONFIG_MAP } from '@dynamic-labs-wallet/core';
|
|
3
3
|
export { SOLANA_RPC_URL, ThresholdSignatureScheme, WalletOperation, getMPCChainConfig } from '@dynamic-labs-wallet/core';
|
|
4
4
|
import { SigningAlgorithm } from '@dynamic-labs-wallet/primitives';
|
|
5
5
|
import { BIP340, Ed25519, ExportableEd25519, Ecdsa, MessageHash, EcdsaSignature, EcdsaKeygenResult, ExportableEd25519KeygenResult, BIP340KeygenResult } from '#internal/node';
|
|
@@ -44,6 +44,43 @@ function _extends() {
|
|
|
44
44
|
return _extends.apply(this, arguments);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
function _object_without_properties_loose(source, excluded) {
|
|
48
|
+
if (source == null) return {};
|
|
49
|
+
var target = {};
|
|
50
|
+
var sourceKeys = Object.keys(source);
|
|
51
|
+
var key, i;
|
|
52
|
+
for(i = 0; i < sourceKeys.length; i++){
|
|
53
|
+
key = sourceKeys[i];
|
|
54
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
55
|
+
target[key] = source[key];
|
|
56
|
+
}
|
|
57
|
+
return target;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Server SDK variant of {@link DynamicApiClient}. Defaults `isServerSdk` to `true`
|
|
62
|
+
* so routes use the `/api/v0/server` prefix.
|
|
63
|
+
* @see DYNT-537
|
|
64
|
+
*/ class DynamicServerApiClient extends DynamicApiClient {
|
|
65
|
+
/**
|
|
66
|
+
* Refreshing only makes sense for a JWT-holding client — a server client
|
|
67
|
+
* already holds the raw API key and re-authenticates via
|
|
68
|
+
* `authenticateApiToken` instead. Never call this on a `DynamicServerApiClient`;
|
|
69
|
+
* construct a plain `DynamicApiClient` bearer-authenticated with the current
|
|
70
|
+
* JWT for the refresh call (see `DynamicWalletClient.refreshAuthToken`).
|
|
71
|
+
*/ async refreshUser() {
|
|
72
|
+
throw new Error('refreshUser is not supported on DynamicServerApiClient. Use a plain DynamicApiClient instead.');
|
|
73
|
+
}
|
|
74
|
+
constructor(_param){
|
|
75
|
+
var { isServerSdk } = _param, options = _object_without_properties_loose(_param, [
|
|
76
|
+
"isServerSdk"
|
|
77
|
+
]);
|
|
78
|
+
super(_extends({}, options, {
|
|
79
|
+
isServerSdk: isServerSdk != null ? isServerSdk : true
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
47
84
|
const createLogError = (clientTag)=>({ message, error, context })=>logError({
|
|
48
85
|
message,
|
|
49
86
|
error,
|
|
@@ -372,6 +409,67 @@ const getKey = async ({ password, salt, encryptionConfig })=>{
|
|
|
372
409
|
// walletId resolution server-side.
|
|
373
410
|
const CEREMONY_COMPLETE_WAIT_MS = 5000;
|
|
374
411
|
|
|
412
|
+
const subtle = webcrypto.subtle;
|
|
413
|
+
const ALGO = {
|
|
414
|
+
name: 'ECDSA',
|
|
415
|
+
namedCurve: 'P-256'
|
|
416
|
+
};
|
|
417
|
+
const SIGN_ALGO = {
|
|
418
|
+
name: 'ECDSA',
|
|
419
|
+
hash: 'SHA-256'
|
|
420
|
+
};
|
|
421
|
+
/** Compress a 65-byte uncompressed SEC1 P-256 point to 33-byte compressed lowercase hex. */ const compress = (raw)=>{
|
|
422
|
+
if (raw.length !== 65 || raw[0] !== 0x04) {
|
|
423
|
+
throw new Error('expected a 65-byte uncompressed P-256 public key');
|
|
424
|
+
}
|
|
425
|
+
const x = Buffer.from(raw.slice(1, 33));
|
|
426
|
+
const prefix = (raw[64] & 1) === 0 ? 0x02 : 0x03;
|
|
427
|
+
return Buffer.concat([
|
|
428
|
+
Buffer.from([
|
|
429
|
+
prefix
|
|
430
|
+
]),
|
|
431
|
+
x
|
|
432
|
+
]).toString('hex');
|
|
433
|
+
};
|
|
434
|
+
/**
|
|
435
|
+
* Generates a P-256 session key pair for the signed-session flow.
|
|
436
|
+
*
|
|
437
|
+
* Returns the compressed public-key hex (bind it into the Dynamic JWT via the
|
|
438
|
+
* `x-dyn-session-public-key` header when you sign in) and the private JWK.
|
|
439
|
+
*
|
|
440
|
+
* Stateless and custody-agnostic: the SDK does NOT persist the key. YOU store
|
|
441
|
+
* `privateKeyJwk` wherever you keep secrets. The returned JWK is extractable
|
|
442
|
+
* (so it can be handed back to you) and is therefore a convenience path, not a
|
|
443
|
+
* security boundary — if you need a non-extractable key (so a host/operator
|
|
444
|
+
* cannot exfiltrate it), generate it in a KMS/HSM/enclave instead and supply a
|
|
445
|
+
* `getSessionSignature` that signs there.
|
|
446
|
+
*/ async function generateSessionKeyPair() {
|
|
447
|
+
const keyPair = await subtle.generateKey(ALGO, true, [
|
|
448
|
+
'sign',
|
|
449
|
+
'verify'
|
|
450
|
+
]);
|
|
451
|
+
const rawPublicKey = await subtle.exportKey('raw', keyPair.publicKey);
|
|
452
|
+
const exportedJwk = await subtle.exportKey('jwk', keyPair.privateKey);
|
|
453
|
+
const privateKeyJwk = exportedJwk;
|
|
454
|
+
return {
|
|
455
|
+
publicKeyHex: compress(new Uint8Array(rawPublicKey)),
|
|
456
|
+
privateKeyJwk
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Signs a message with a P-256 session private JWK using the exact encoding the
|
|
461
|
+
* keyshares relay expects: ECDSA P-256 / SHA-256 over UTF-8(message), raw r‖s
|
|
462
|
+
* (64 bytes), lowercase hex. Use it to implement `getSessionSignature`:
|
|
463
|
+
* getSessionSignature: (message) => signSessionMessage(message, privateKeyJwk)
|
|
464
|
+
* The JWK is imported non-extractable for signing.
|
|
465
|
+
*/ async function signSessionMessage(message, privateKeyJwk) {
|
|
466
|
+
const key = await subtle.importKey('jwk', privateKeyJwk, ALGO, false, [
|
|
467
|
+
'sign'
|
|
468
|
+
]);
|
|
469
|
+
const signature = await subtle.sign(SIGN_ALGO, key, new TextEncoder().encode(message));
|
|
470
|
+
return Buffer.from(new Uint8Array(signature)).toString('hex');
|
|
471
|
+
}
|
|
472
|
+
|
|
375
473
|
class DynamicWalletClient {
|
|
376
474
|
ensureApiClientAuthenticated() {
|
|
377
475
|
if (!this.isApiClientAuthenticated) {
|
|
@@ -422,19 +520,54 @@ class DynamicWalletClient {
|
|
|
422
520
|
this.nonceCache.length = 0;
|
|
423
521
|
this.nonceRefill = undefined;
|
|
424
522
|
this.nonceAuthGeneration += 1;
|
|
523
|
+
// Deliberately does not touch nonceApiClient: refreshAuthToken installs a
|
|
524
|
+
// refreshed JWT for the *same* session and must keep using the raw-token
|
|
525
|
+
// client for nonces. authenticateJwt and authenticateApiToken manage
|
|
526
|
+
// nonceApiClient themselves since only they know whether a raw token
|
|
527
|
+
// still applies to the new session.
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Resolves the session key to bind into `authenticateApiToken`'s JWT.
|
|
531
|
+
*
|
|
532
|
+
* Defaults to generating a fresh session key per call (never persisted),
|
|
533
|
+
* mirroring the browser's rotate-on-reauth behavior. Pass `sessionPublicKey`
|
|
534
|
+
* + `getSessionSignature` together to supply your own instead — e.g. a
|
|
535
|
+
* stable key reused across calls, or one backed by a KMS/HSM/enclave signer.
|
|
536
|
+
*/ async resolveSessionKey(options) {
|
|
537
|
+
if ((options == null ? void 0 : options.sessionPublicKey) || (options == null ? void 0 : options.getSessionSignature)) {
|
|
538
|
+
if (!options.sessionPublicKey || !options.getSessionSignature) {
|
|
539
|
+
throw new Error('authenticateApiToken: sessionPublicKey and getSessionSignature must be supplied together, or both omitted to auto-generate a session key.');
|
|
540
|
+
}
|
|
541
|
+
return {
|
|
542
|
+
publicKeyHex: options.sessionPublicKey,
|
|
543
|
+
getSessionSignature: options.getSessionSignature
|
|
544
|
+
};
|
|
545
|
+
}
|
|
546
|
+
const { publicKeyHex, privateKeyJwk } = await generateSessionKeyPair();
|
|
547
|
+
return {
|
|
548
|
+
publicKeyHex,
|
|
549
|
+
getSessionSignature: (message)=>signSessionMessage(message, privateKeyJwk)
|
|
550
|
+
};
|
|
425
551
|
}
|
|
426
|
-
async authenticateApiToken(authToken) {
|
|
552
|
+
async authenticateApiToken(authToken, options) {
|
|
427
553
|
const tmpClient = new DynamicServerApiClient({
|
|
428
554
|
environmentId: this.environmentId,
|
|
429
555
|
authToken,
|
|
430
556
|
baseApiUrl: this.baseApiUrl,
|
|
431
557
|
logger: this.logger
|
|
432
558
|
});
|
|
559
|
+
// Binds the resulting JWT's session_public_key claim, which server-side
|
|
560
|
+
// BA operations (e.g. addSigner's client-keyshare backup grant) require present.
|
|
561
|
+
const { publicKeyHex, getSessionSignature } = await this.resolveSessionKey(options);
|
|
433
562
|
const response = await tmpClient.authenticateApiToken({
|
|
434
|
-
environmentId: this.environmentId
|
|
563
|
+
environmentId: this.environmentId,
|
|
564
|
+
sessionPublicKey: publicKeyHex
|
|
435
565
|
});
|
|
436
566
|
this.setAuthenticatedJwt(response.data.encodedJwts.minifiedJwt);
|
|
437
|
-
this.getSessionSignature =
|
|
567
|
+
this.getSessionSignature = getSessionSignature;
|
|
568
|
+
// /nonces is authenticated via DYN_API_TOKEN only — reuse the client
|
|
569
|
+
// already holding the raw token instead of the JWT-authenticated one.
|
|
570
|
+
this.nonceApiClient = tmpClient;
|
|
438
571
|
}
|
|
439
572
|
/**
|
|
440
573
|
* Authenticates the client with a Dynamic user JWT obtained outside the SDK —
|
|
@@ -453,6 +586,9 @@ class DynamicWalletClient {
|
|
|
453
586
|
throw new Error('Invalid JWT: expected a compact JWS with three dot-separated segments');
|
|
454
587
|
}
|
|
455
588
|
this.setAuthenticatedJwt(jwt);
|
|
589
|
+
// No raw API token backs this session — drop any raw-token client left
|
|
590
|
+
// over from a prior authenticateApiToken call on this instance.
|
|
591
|
+
this.nonceApiClient = undefined;
|
|
456
592
|
this.getSessionSignature = options == null ? void 0 : options.getSessionSignature;
|
|
457
593
|
}
|
|
458
594
|
async buildSignedSessionId() {
|
|
@@ -494,8 +630,8 @@ class DynamicWalletClient {
|
|
|
494
630
|
// A refill that lands after a re-auth belongs to the old session — drop it
|
|
495
631
|
// (and leave the new session's refill slot alone) so stale nonces are never used.
|
|
496
632
|
const generation = this.nonceAuthGeneration;
|
|
497
|
-
var _this_nonceRefill;
|
|
498
|
-
(_this_nonceRefill = this.nonceRefill) != null ? _this_nonceRefill : this.nonceRefill = this.apiClient.getNonces({
|
|
633
|
+
var _this_nonceApiClient, _this_nonceRefill;
|
|
634
|
+
(_this_nonceRefill = this.nonceRefill) != null ? _this_nonceRefill : this.nonceRefill = ((_this_nonceApiClient = this.nonceApiClient) != null ? _this_nonceApiClient : this.apiClient).getNonces({
|
|
499
635
|
count: this.nonceBatchSize
|
|
500
636
|
}).then(({ nonces })=>{
|
|
501
637
|
if (!(nonces == null ? void 0 : nonces.length)) throw new Error('No session nonce available');
|
|
@@ -514,7 +650,20 @@ class DynamicWalletClient {
|
|
|
514
650
|
* must re-authenticate.
|
|
515
651
|
*/ async refreshAuthToken() {
|
|
516
652
|
this.ensureApiClientAuthenticated();
|
|
517
|
-
|
|
653
|
+
if (!this.baseJWTAuthToken) {
|
|
654
|
+
throw new Error('Client is not authenticated');
|
|
655
|
+
}
|
|
656
|
+
// refreshUser only makes sense for a JWT-holding client — this.apiClient is a
|
|
657
|
+
// DynamicServerApiClient, which throws if refreshUser is called on it (a server
|
|
658
|
+
// client re-authenticates via authenticateApiToken instead). Use a plain client
|
|
659
|
+
// bearer-authenticated with the current JWT for the refresh call itself.
|
|
660
|
+
const refreshClient = new DynamicApiClient({
|
|
661
|
+
environmentId: this.environmentId,
|
|
662
|
+
authToken: this.baseJWTAuthToken,
|
|
663
|
+
baseApiUrl: this.baseApiUrl,
|
|
664
|
+
logger: this.logger
|
|
665
|
+
});
|
|
666
|
+
const data = await refreshClient.refreshUser();
|
|
518
667
|
var _data_minifiedJwt;
|
|
519
668
|
const refreshedJwt = (_data_minifiedJwt = data == null ? void 0 : data.minifiedJwt) != null ? _data_minifiedJwt : data == null ? void 0 : data.jwt;
|
|
520
669
|
if (typeof refreshedJwt !== 'string' || refreshedJwt.length === 0) {
|
|
@@ -524,6 +673,15 @@ class DynamicWalletClient {
|
|
|
524
673
|
return refreshedJwt;
|
|
525
674
|
}
|
|
526
675
|
/**
|
|
676
|
+
* Resolves this environment's server identity — a real userId the server
|
|
677
|
+
* itself is authenticated as, with no email/externalUserId of its own.
|
|
678
|
+
* Feed the returned userId into a business-account `addMember` call to add
|
|
679
|
+
* the server as a member.
|
|
680
|
+
*/ async getServerIdentity() {
|
|
681
|
+
this.ensureApiClientAuthenticated();
|
|
682
|
+
return this.apiClient.getServerIdentity();
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
527
685
|
* Fetches non-sensitive wallet identity (walletId, accountAddress, chainName,
|
|
528
686
|
* derivationPath, thresholdSignatureScheme) from the Dynamic API by
|
|
529
687
|
* `accountAddress`. SDK-scoped — works with the customer auth token from
|
|
@@ -857,7 +1015,7 @@ class DynamicWalletClient {
|
|
|
857
1015
|
externalServerKeyShares: externalServerKeygenResults
|
|
858
1016
|
};
|
|
859
1017
|
}
|
|
860
|
-
async dynamicServerSign({ walletId, message, isFormatted, context, bitcoinConfig, onError, dynamicRequestId: providedRequestId }) {
|
|
1018
|
+
async dynamicServerSign({ walletId, message, isFormatted, context, bitcoinConfig, onError, dynamicRequestId: providedRequestId, shareSetId }) {
|
|
861
1019
|
const dynamicRequestId = providedRequestId || v4();
|
|
862
1020
|
this.ensureApiClientAuthenticated();
|
|
863
1021
|
// Create the room and sign the message
|
|
@@ -872,7 +1030,8 @@ class DynamicWalletClient {
|
|
|
872
1030
|
context: context ? JSON.parse(JSON.stringify(context, (_key, value)=>typeof value === 'bigint' ? String(value) : value)) : undefined,
|
|
873
1031
|
onError,
|
|
874
1032
|
forwardMPCClientEnabled: this.forwardMPCEnabled,
|
|
875
|
-
bitcoinConfig
|
|
1033
|
+
bitcoinConfig,
|
|
1034
|
+
shareSetId
|
|
876
1035
|
});
|
|
877
1036
|
return _extends({}, data, {
|
|
878
1037
|
dynamicRequestId
|
|
@@ -1046,7 +1205,8 @@ class DynamicWalletClient {
|
|
|
1046
1205
|
onError: (error)=>{
|
|
1047
1206
|
sseErrorGate.reject(error);
|
|
1048
1207
|
onError == null ? void 0 : onError(error);
|
|
1049
|
-
}
|
|
1208
|
+
},
|
|
1209
|
+
shareSetId: walletMetadata.shareSetId
|
|
1050
1210
|
});
|
|
1051
1211
|
const derivationPath = derivationPathStr && derivationPathStr != '' ? new Uint32Array(Object.values(JSON.parse(derivationPathStr))) : undefined;
|
|
1052
1212
|
// Try forward MPC first if enabled, with fallback to relay-based signing on attestation failure
|
|
@@ -2090,67 +2250,6 @@ class DynamicWalletClient {
|
|
|
2090
2250
|
}
|
|
2091
2251
|
}
|
|
2092
2252
|
|
|
2093
|
-
const subtle = webcrypto.subtle;
|
|
2094
|
-
const ALGO = {
|
|
2095
|
-
name: 'ECDSA',
|
|
2096
|
-
namedCurve: 'P-256'
|
|
2097
|
-
};
|
|
2098
|
-
const SIGN_ALGO = {
|
|
2099
|
-
name: 'ECDSA',
|
|
2100
|
-
hash: 'SHA-256'
|
|
2101
|
-
};
|
|
2102
|
-
/** Compress a 65-byte uncompressed SEC1 P-256 point to 33-byte compressed lowercase hex. */ const compress = (raw)=>{
|
|
2103
|
-
if (raw.length !== 65 || raw[0] !== 0x04) {
|
|
2104
|
-
throw new Error('expected a 65-byte uncompressed P-256 public key');
|
|
2105
|
-
}
|
|
2106
|
-
const x = Buffer.from(raw.slice(1, 33));
|
|
2107
|
-
const prefix = (raw[64] & 1) === 0 ? 0x02 : 0x03;
|
|
2108
|
-
return Buffer.concat([
|
|
2109
|
-
Buffer.from([
|
|
2110
|
-
prefix
|
|
2111
|
-
]),
|
|
2112
|
-
x
|
|
2113
|
-
]).toString('hex');
|
|
2114
|
-
};
|
|
2115
|
-
/**
|
|
2116
|
-
* Generates a P-256 session key pair for the signed-session flow.
|
|
2117
|
-
*
|
|
2118
|
-
* Returns the compressed public-key hex (bind it into the Dynamic JWT via the
|
|
2119
|
-
* `x-dyn-session-public-key` header when you sign in) and the private JWK.
|
|
2120
|
-
*
|
|
2121
|
-
* Stateless and custody-agnostic: the SDK does NOT persist the key. YOU store
|
|
2122
|
-
* `privateKeyJwk` wherever you keep secrets. The returned JWK is extractable
|
|
2123
|
-
* (so it can be handed back to you) and is therefore a convenience path, not a
|
|
2124
|
-
* security boundary — if you need a non-extractable key (so a host/operator
|
|
2125
|
-
* cannot exfiltrate it), generate it in a KMS/HSM/enclave instead and supply a
|
|
2126
|
-
* `getSessionSignature` that signs there.
|
|
2127
|
-
*/ async function generateSessionKeyPair() {
|
|
2128
|
-
const keyPair = await subtle.generateKey(ALGO, true, [
|
|
2129
|
-
'sign',
|
|
2130
|
-
'verify'
|
|
2131
|
-
]);
|
|
2132
|
-
const rawPublicKey = await subtle.exportKey('raw', keyPair.publicKey);
|
|
2133
|
-
const exportedJwk = await subtle.exportKey('jwk', keyPair.privateKey);
|
|
2134
|
-
const privateKeyJwk = exportedJwk;
|
|
2135
|
-
return {
|
|
2136
|
-
publicKeyHex: compress(new Uint8Array(rawPublicKey)),
|
|
2137
|
-
privateKeyJwk
|
|
2138
|
-
};
|
|
2139
|
-
}
|
|
2140
|
-
/**
|
|
2141
|
-
* Signs a message with a P-256 session private JWK using the exact encoding the
|
|
2142
|
-
* keyshares relay expects: ECDSA P-256 / SHA-256 over UTF-8(message), raw r‖s
|
|
2143
|
-
* (64 bytes), lowercase hex. Use it to implement `getSessionSignature`:
|
|
2144
|
-
* getSessionSignature: (message) => signSessionMessage(message, privateKeyJwk)
|
|
2145
|
-
* The JWK is imported non-extractable for signing.
|
|
2146
|
-
*/ async function signSessionMessage(message, privateKeyJwk) {
|
|
2147
|
-
const key = await subtle.importKey('jwk', privateKeyJwk, ALGO, false, [
|
|
2148
|
-
'sign'
|
|
2149
|
-
]);
|
|
2150
|
-
const signature = await subtle.sign(SIGN_ALGO, key, new TextEncoder().encode(message));
|
|
2151
|
-
return Buffer.from(new Uint8Array(signature)).toString('hex');
|
|
2152
|
-
}
|
|
2153
|
-
|
|
2154
2253
|
const createCore = ({ environmentId, baseApiUrl, baseMPCRelayApiUrl, debug = false, logger })=>{
|
|
2155
2254
|
let coreLogger;
|
|
2156
2255
|
if (logger) {
|
|
@@ -2709,4 +2808,4 @@ const asAuthError = async (error, operation)=>{
|
|
|
2709
2808
|
};
|
|
2710
2809
|
}
|
|
2711
2810
|
|
|
2712
|
-
export { DynamicWalletClient, ERROR_RAW_SIGN_CONTEXT_REQUIRED, base64ToBytes, bytesToBase64, createAuthClient, createDelegatedWalletClient, createLogError, decryptDelegatedWebhookData, delegatedSignMessage, ensureBase64Padding, formatEvmMessage, formatMessage, generateSessionKeyPair, getExternalServerKeyShareBackupInfo, getMPCSignatureScheme, getMPCSigner, isHexString, logError, mergeUniqueKeyShares, parseIndexMapDerivationPath, resolveRawSignContext, retryPromise, revokeDelegation, signSessionMessage, stringToBytes, stripHexPrefix, withDelegatedServerAuth };
|
|
2811
|
+
export { DynamicServerApiClient, DynamicWalletClient, ERROR_RAW_SIGN_CONTEXT_REQUIRED, base64ToBytes, bytesToBase64, createAuthClient, createDelegatedWalletClient, createLogError, decryptDelegatedWebhookData, delegatedSignMessage, ensureBase64Padding, formatEvmMessage, formatMessage, generateSessionKeyPair, getExternalServerKeyShareBackupInfo, getMPCSignatureScheme, getMPCSigner, isHexString, logError, mergeUniqueKeyShares, parseIndexMapDerivationPath, resolveRawSignContext, retryPromise, revokeDelegation, signSessionMessage, stringToBytes, stripHexPrefix, withDelegatedServerAuth };
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs-wallet/node",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.17",
|
|
4
4
|
"license": "Licensed under the Dynamic Labs, Inc. Terms Of Service (https://www.dynamic.xyz/terms-conditions)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@dynamic-labs-wallet/core": "1.1.
|
|
7
|
+
"@dynamic-labs-wallet/core": "1.1.17",
|
|
8
8
|
"@dynamic-labs-wallet/forward-mpc-client": "2.0.2",
|
|
9
|
-
"@dynamic-labs-wallet/primitives": "1.1.
|
|
9
|
+
"@dynamic-labs-wallet/primitives": "1.1.17",
|
|
10
10
|
"@dynamic-labs/logger": "^5.0.0",
|
|
11
11
|
"@dynamic-labs/sdk-api-core": "^0.16.0",
|
|
12
12
|
"uuid": "11.1.0",
|
package/src/api.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DynamicApiClient, type DynamicApiClientOptions } from '@dynamic-labs-wallet/core';
|
|
2
|
+
/**
|
|
3
|
+
* Server SDK variant of {@link DynamicApiClient}. Defaults `isServerSdk` to `true`
|
|
4
|
+
* so routes use the `/api/v0/server` prefix.
|
|
5
|
+
* @see DYNT-537
|
|
6
|
+
*/
|
|
7
|
+
export declare class DynamicServerApiClient extends DynamicApiClient {
|
|
8
|
+
constructor({ isServerSdk, ...options }: DynamicApiClientOptions);
|
|
9
|
+
/**
|
|
10
|
+
* Refreshing only makes sense for a JWT-holding client — a server client
|
|
11
|
+
* already holds the raw API key and re-authenticates via
|
|
12
|
+
* `authenticateApiToken` instead. Never call this on a `DynamicServerApiClient`;
|
|
13
|
+
* construct a plain `DynamicApiClient` bearer-authenticated with the current
|
|
14
|
+
* JWT for the refresh call (see `DynamicWalletClient.refreshAuthToken`).
|
|
15
|
+
*/
|
|
16
|
+
refreshUser(): Promise<never>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=api.d.ts.map
|
package/src/api.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../packages/src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAE3F;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,gBAAgB;gBAC9C,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,EAAE,uBAAuB;IAOhE;;;;;;OAMG;IACY,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;CAG7C"}
|
package/src/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BIP340, Ecdsa, EcdsaKeygenResult, EcdsaSignature, ExportableEd25519, MessageHash, type EcdsaPublicKey } from '#internal/node';
|
|
2
|
-
import { BackupLocation,
|
|
2
|
+
import { BackupLocation, DynamicApiClient, ThresholdSignatureScheme, type ILogger, WalletOperation, type BitcoinConfig, type KeyShareBackupInfo, type RequestWithElevatedAccessToken, type ShareSetType } from '@dynamic-labs-wallet/core';
|
|
3
3
|
import { ForwardMPCClientV2 } from '@dynamic-labs-wallet/forward-mpc-client';
|
|
4
4
|
import type { SignMessageContext } from '@dynamic-labs/sdk-api-core';
|
|
5
5
|
import type { ServerKeyShare } from './mpc/index.js';
|
|
@@ -22,6 +22,7 @@ export declare class DynamicWalletClient {
|
|
|
22
22
|
private readonly nonceCache;
|
|
23
23
|
private nonceRefill?;
|
|
24
24
|
private nonceAuthGeneration;
|
|
25
|
+
private nonceApiClient?;
|
|
25
26
|
constructor({ environmentId, baseApiUrl, baseMPCRelayApiUrl, debug, forwardMPCClient, enableMPCAccelerator, logger, }: DynamicWalletClientProps);
|
|
26
27
|
private ensureApiClientAuthenticated;
|
|
27
28
|
/**
|
|
@@ -40,7 +41,21 @@ export declare class DynamicWalletClient {
|
|
|
40
41
|
* and rebuilds the API client, preserving the forward-MPC client.
|
|
41
42
|
*/
|
|
42
43
|
private setAuthenticatedJwt;
|
|
43
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Resolves the session key to bind into `authenticateApiToken`'s JWT.
|
|
46
|
+
*
|
|
47
|
+
* Defaults to generating a fresh session key per call (never persisted),
|
|
48
|
+
* mirroring the browser's rotate-on-reauth behavior. Pass `sessionPublicKey`
|
|
49
|
+
* + `getSessionSignature` together to supply your own instead — e.g. a
|
|
50
|
+
* stable key reused across calls, or one backed by a KMS/HSM/enclave signer.
|
|
51
|
+
*/
|
|
52
|
+
private resolveSessionKey;
|
|
53
|
+
authenticateApiToken(authToken: string, options?: {
|
|
54
|
+
/** Compressed P-256 public key hex, bound into the JWT's `session_public_key` claim. Must be supplied together with `getSessionSignature`. */
|
|
55
|
+
sessionPublicKey?: string;
|
|
56
|
+
/** Signs with the private key backing `sessionPublicKey` (see `signSessionMessage`, or your own KMS/HSM/enclave signer). Must be supplied together with `sessionPublicKey`. */
|
|
57
|
+
getSessionSignature?: (message: string) => Promise<string>;
|
|
58
|
+
}): Promise<void>;
|
|
44
59
|
/**
|
|
45
60
|
* Authenticates the client with a Dynamic user JWT obtained outside the SDK —
|
|
46
61
|
* e.g. by an agent that completed a Dynamic sign-in (external auth, email OTP)
|
|
@@ -66,6 +81,15 @@ export declare class DynamicWalletClient {
|
|
|
66
81
|
* must re-authenticate.
|
|
67
82
|
*/
|
|
68
83
|
refreshAuthToken(): Promise<string>;
|
|
84
|
+
/**
|
|
85
|
+
* Resolves this environment's server identity — a real userId the server
|
|
86
|
+
* itself is authenticated as, with no email/externalUserId of its own.
|
|
87
|
+
* Feed the returned userId into a business-account `addMember` call to add
|
|
88
|
+
* the server as a member.
|
|
89
|
+
*/
|
|
90
|
+
getServerIdentity(): Promise<{
|
|
91
|
+
userId: string;
|
|
92
|
+
}>;
|
|
69
93
|
/**
|
|
70
94
|
* Fetches non-sensitive wallet identity (walletId, accountAddress, chainName,
|
|
71
95
|
* derivationPath, thresholdSignatureScheme) from the Dynamic API by
|
|
@@ -175,7 +199,7 @@ export declare class DynamicWalletClient {
|
|
|
175
199
|
rawPublicKey: RawPublicKey;
|
|
176
200
|
externalServerKeyShares: ServerKeyShare[];
|
|
177
201
|
}>;
|
|
178
|
-
dynamicServerSign({ walletId, message, isFormatted, context, bitcoinConfig, onError, dynamicRequestId: providedRequestId, }: {
|
|
202
|
+
dynamicServerSign({ walletId, message, isFormatted, context, bitcoinConfig, onError, dynamicRequestId: providedRequestId, shareSetId, }: {
|
|
179
203
|
walletId: string;
|
|
180
204
|
message: string | Uint8Array;
|
|
181
205
|
isFormatted?: boolean;
|
|
@@ -183,6 +207,7 @@ export declare class DynamicWalletClient {
|
|
|
183
207
|
bitcoinConfig?: BitcoinConfig;
|
|
184
208
|
onError?: (error: Error) => void;
|
|
185
209
|
dynamicRequestId?: string;
|
|
210
|
+
shareSetId?: string;
|
|
186
211
|
}): Promise<{
|
|
187
212
|
dynamicRequestId: string;
|
|
188
213
|
roomId: string;
|
package/src/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../packages/src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../packages/src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createCore.d.ts","sourceRoot":"","sources":["../../src/core/createCore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,
|
|
1
|
+
{"version":3,"file":"createCore.d.ts","sourceRoot":"","sources":["../../src/core/createCore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAU,KAAK,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAIxF,MAAM,MAAM,UAAU,GAAG;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,KAAK,gBAAgB,CAAC;IACjF,MAAM,EAAE,OAAO,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,UAAU,sEAMpB,UAAU,KAAG,IA4Bf,CAAC"}
|
package/src/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export type { TraceContext } from '@dynamic-labs-wallet/core';
|
|
|
4
4
|
export { WalletOperation, SOLANA_RPC_URL, getMPCChainConfig } from '@dynamic-labs-wallet/core';
|
|
5
5
|
export { getMPCSignatureScheme, getMPCSigner } from './mpc/index.js';
|
|
6
6
|
export type { ServerInitKeygenResult, ServerKeyShare, SignMessage } from './mpc/index.js';
|
|
7
|
+
export { DynamicServerApiClient } from './api.js';
|
|
7
8
|
export * from './client.js';
|
|
8
9
|
export * from './types.js';
|
|
9
10
|
export * from './utils.js';
|
package/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/src/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG/F,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACrE,YAAY,EAAE,sBAAsB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG1F,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,EAClC,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/src/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG/F,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACrE,YAAY,EAAE,sBAAsB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGlD,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,+BAA+B,EAC/B,kCAAkC,EAClC,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|