@zerodev/wallet-core 0.0.1-alpha.5 → 0.0.1-alpha.7
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/README.md +43 -2
- package/dist/_cjs/actions/auth/authenticateWithOAuth.js +3 -7
- package/dist/_cjs/actions/auth/authenticateWithOAuth.js.map +1 -1
- package/dist/_cjs/actions/auth/getUserEmail.js +15 -0
- package/dist/_cjs/actions/auth/getUserEmail.js.map +1 -0
- package/dist/_cjs/actions/auth/index.js +3 -1
- package/dist/_cjs/actions/auth/index.js.map +1 -1
- package/dist/_cjs/actions/auth/loginWithOTP.js +3 -5
- package/dist/_cjs/actions/auth/loginWithOTP.js.map +1 -1
- package/dist/_cjs/actions/auth/loginWithStamp.js +4 -3
- package/dist/_cjs/actions/auth/loginWithStamp.js.map +1 -1
- package/dist/_cjs/actions/auth/registerWithOTP.js +1 -2
- package/dist/_cjs/actions/auth/registerWithOTP.js.map +1 -1
- package/dist/_cjs/actions/index.js +2 -1
- package/dist/_cjs/actions/index.js.map +1 -1
- package/dist/_cjs/actions/wallet/signRawPayload.js +13 -12
- package/dist/_cjs/actions/wallet/signRawPayload.js.map +1 -1
- package/dist/_cjs/actions/wallet/signTransaction.js +12 -11
- package/dist/_cjs/actions/wallet/signTransaction.js.map +1 -1
- package/dist/_cjs/adapters/viem.js +2 -0
- package/dist/_cjs/adapters/viem.js.map +1 -1
- package/dist/_cjs/client/authProxy.js +31 -0
- package/dist/_cjs/client/authProxy.js.map +1 -0
- package/dist/_cjs/client/decorators/client.js +1 -0
- package/dist/_cjs/client/decorators/client.js.map +1 -1
- package/dist/_cjs/client/index.js +3 -1
- package/dist/_cjs/client/index.js.map +1 -1
- package/dist/_cjs/client/transports/rest.js +3 -1
- package/dist/_cjs/client/transports/rest.js.map +1 -1
- package/dist/_cjs/constants.js +2 -1
- package/dist/_cjs/constants.js.map +1 -1
- package/dist/_cjs/core/createZeroDevWallet.js +22 -16
- package/dist/_cjs/core/createZeroDevWallet.js.map +1 -1
- package/dist/_cjs/index.js +5 -1
- package/dist/_cjs/index.js.map +1 -1
- package/dist/_cjs/stampers/iframeStamper.js +3 -0
- package/dist/_cjs/stampers/iframeStamper.js.map +1 -1
- package/dist/_cjs/utils/buildClientSignature.js +39 -0
- package/dist/_cjs/utils/buildClientSignature.js.map +1 -0
- package/dist/_cjs/utils/derToRawSignature.js +63 -0
- package/dist/_cjs/utils/derToRawSignature.js.map +1 -0
- package/dist/_cjs/utils/exportPrivateKey.js +55 -0
- package/dist/_cjs/utils/exportPrivateKey.js.map +1 -0
- package/dist/_esm/actions/auth/authenticateWithOAuth.js +8 -10
- package/dist/_esm/actions/auth/authenticateWithOAuth.js.map +1 -1
- package/dist/_esm/actions/auth/getUserEmail.js +28 -0
- package/dist/_esm/actions/auth/getUserEmail.js.map +1 -0
- package/dist/_esm/actions/auth/index.js +1 -0
- package/dist/_esm/actions/auth/index.js.map +1 -1
- package/dist/_esm/actions/auth/loginWithOTP.js +14 -12
- package/dist/_esm/actions/auth/loginWithOTP.js.map +1 -1
- package/dist/_esm/actions/auth/loginWithStamp.js +4 -3
- package/dist/_esm/actions/auth/loginWithStamp.js.map +1 -1
- package/dist/_esm/actions/auth/registerWithOTP.js +5 -6
- package/dist/_esm/actions/auth/registerWithOTP.js.map +1 -1
- package/dist/_esm/actions/index.js +1 -1
- package/dist/_esm/actions/index.js.map +1 -1
- package/dist/_esm/actions/wallet/signRawPayload.js +13 -12
- package/dist/_esm/actions/wallet/signRawPayload.js.map +1 -1
- package/dist/_esm/actions/wallet/signTransaction.js +12 -11
- package/dist/_esm/actions/wallet/signTransaction.js.map +1 -1
- package/dist/_esm/adapters/viem.js +2 -0
- package/dist/_esm/adapters/viem.js.map +1 -1
- package/dist/_esm/client/authProxy.js +41 -0
- package/dist/_esm/client/authProxy.js.map +1 -0
- package/dist/_esm/client/decorators/client.js +2 -1
- package/dist/_esm/client/decorators/client.js.map +1 -1
- package/dist/_esm/client/index.js +1 -0
- package/dist/_esm/client/index.js.map +1 -1
- package/dist/_esm/client/transports/rest.js +3 -1
- package/dist/_esm/client/transports/rest.js.map +1 -1
- package/dist/_esm/constants.js +1 -0
- package/dist/_esm/constants.js.map +1 -1
- package/dist/_esm/core/createZeroDevWallet.js +30 -18
- package/dist/_esm/core/createZeroDevWallet.js.map +1 -1
- package/dist/_esm/index.js +3 -0
- package/dist/_esm/index.js.map +1 -1
- package/dist/_esm/stampers/iframeStamper.js +4 -1
- package/dist/_esm/stampers/iframeStamper.js.map +1 -1
- package/dist/_esm/utils/buildClientSignature.js +64 -0
- package/dist/_esm/utils/buildClientSignature.js.map +1 -0
- package/dist/_esm/utils/derToRawSignature.js +89 -0
- package/dist/_esm/utils/derToRawSignature.js.map +1 -0
- package/dist/_esm/utils/exportPrivateKey.js +83 -0
- package/dist/_esm/utils/exportPrivateKey.js.map +1 -0
- package/dist/_types/actions/auth/authenticateWithOAuth.d.ts +6 -8
- package/dist/_types/actions/auth/authenticateWithOAuth.d.ts.map +1 -1
- package/dist/_types/actions/auth/getUserEmail.d.ts +29 -0
- package/dist/_types/actions/auth/getUserEmail.d.ts.map +1 -0
- package/dist/_types/actions/auth/index.d.ts +1 -0
- package/dist/_types/actions/auth/index.d.ts.map +1 -1
- package/dist/_types/actions/auth/loginWithOTP.d.ts +15 -15
- package/dist/_types/actions/auth/loginWithOTP.d.ts.map +1 -1
- package/dist/_types/actions/auth/loginWithStamp.d.ts.map +1 -1
- package/dist/_types/actions/auth/registerWithOTP.d.ts +5 -11
- package/dist/_types/actions/auth/registerWithOTP.d.ts.map +1 -1
- package/dist/_types/actions/index.d.ts +1 -1
- package/dist/_types/actions/index.d.ts.map +1 -1
- package/dist/_types/actions/wallet/signRawPayload.d.ts +2 -0
- package/dist/_types/actions/wallet/signRawPayload.d.ts.map +1 -1
- package/dist/_types/actions/wallet/signTransaction.d.ts +2 -0
- package/dist/_types/actions/wallet/signTransaction.d.ts.map +1 -1
- package/dist/_types/adapters/viem.d.ts.map +1 -1
- package/dist/_types/client/authProxy.d.ts +36 -0
- package/dist/_types/client/authProxy.d.ts.map +1 -0
- package/dist/_types/client/decorators/client.d.ts +5 -1
- package/dist/_types/client/decorators/client.d.ts.map +1 -1
- package/dist/_types/client/index.d.ts +1 -0
- package/dist/_types/client/index.d.ts.map +1 -1
- package/dist/_types/client/transports/rest.d.ts +2 -0
- package/dist/_types/client/transports/rest.d.ts.map +1 -1
- package/dist/_types/constants.d.ts +1 -0
- package/dist/_types/constants.d.ts.map +1 -1
- package/dist/_types/core/createZeroDevWallet.d.ts +0 -3
- package/dist/_types/core/createZeroDevWallet.d.ts.map +1 -1
- package/dist/_types/index.d.ts +3 -0
- package/dist/_types/index.d.ts.map +1 -1
- package/dist/_types/stampers/iframeStamper.d.ts.map +1 -1
- package/dist/_types/stampers/types.d.ts +2 -0
- package/dist/_types/stampers/types.d.ts.map +1 -1
- package/dist/_types/utils/buildClientSignature.d.ts +25 -0
- package/dist/_types/utils/buildClientSignature.d.ts.map +1 -0
- package/dist/_types/utils/derToRawSignature.d.ts +11 -0
- package/dist/_types/utils/derToRawSignature.d.ts.map +1 -0
- package/dist/_types/utils/exportPrivateKey.d.ts +47 -0
- package/dist/_types/utils/exportPrivateKey.d.ts.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -2
- package/src/actions/auth/authenticateWithOAuth.ts +9 -15
- package/src/actions/auth/getUserEmail.ts +45 -0
- package/src/actions/auth/index.ts +5 -2
- package/src/actions/auth/loginWithOTP.ts +18 -21
- package/src/actions/auth/loginWithStamp.ts +4 -3
- package/src/actions/auth/registerWithOTP.ts +6 -13
- package/src/actions/index.ts +3 -0
- package/src/actions/wallet/signRawPayload.ts +15 -11
- package/src/actions/wallet/signTransaction.ts +15 -11
- package/src/adapters/viem.ts +2 -0
- package/src/client/authProxy.ts +78 -0
- package/src/client/decorators/client.ts +11 -0
- package/src/client/index.ts +7 -0
- package/src/client/transports/rest.ts +5 -1
- package/src/constants.ts +2 -0
- package/src/core/createZeroDevWallet.ts +34 -21
- package/src/index.ts +4 -0
- package/src/stampers/iframeStamper.ts +16 -2
- package/src/stampers/types.ts +7 -0
- package/src/utils/buildClientSignature.ts +86 -0
- package/src/utils/derToRawSignature.ts +103 -0
- package/src/utils/exportPrivateKey.ts +116 -0
|
@@ -19,6 +19,7 @@ export async function toViemAccount(params) {
|
|
|
19
19
|
return await client.signRawPayload({
|
|
20
20
|
organizationId,
|
|
21
21
|
projectId,
|
|
22
|
+
token,
|
|
22
23
|
address,
|
|
23
24
|
payload,
|
|
24
25
|
encoding,
|
|
@@ -36,6 +37,7 @@ export async function toViemAccount(params) {
|
|
|
36
37
|
const signature = await client.signTransaction({
|
|
37
38
|
organizationId,
|
|
38
39
|
projectId,
|
|
40
|
+
token,
|
|
39
41
|
address,
|
|
40
42
|
unsignedTransaction: nonHexPrefixedSerializedTx,
|
|
41
43
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viem.js","sourceRoot":"","sources":["../../../src/adapters/viem.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"viem.js","sourceRoot":"","sources":["../../../src/adapters/viem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const AUTH_PROXY_BASE_URL = 'https://authproxy.turnkey.com';
|
|
2
|
+
/**
|
|
3
|
+
* Creates an Auth Proxy client for making requests to Turnkey's Auth Proxy
|
|
4
|
+
*
|
|
5
|
+
* Note: This client only handles OTP verification. The actual OTP login
|
|
6
|
+
* is handled by the backend (/auth/login/otp) which manages sub-organization
|
|
7
|
+
* creation and session handling.
|
|
8
|
+
*/
|
|
9
|
+
export function createAuthProxyClient(config) {
|
|
10
|
+
const { authProxyConfigId, baseUrl = AUTH_PROXY_BASE_URL } = config;
|
|
11
|
+
async function request(path, body, method = 'POST') {
|
|
12
|
+
const fetchOptions = {
|
|
13
|
+
method,
|
|
14
|
+
headers: {
|
|
15
|
+
'Content-Type': 'application/json',
|
|
16
|
+
'X-Auth-Proxy-Config-Id': authProxyConfigId,
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
if (method !== 'GET') {
|
|
20
|
+
fetchOptions.body = JSON.stringify(body);
|
|
21
|
+
}
|
|
22
|
+
const response = await fetch(`${baseUrl}${path}`, fetchOptions);
|
|
23
|
+
if (!response.ok) {
|
|
24
|
+
const errorText = await response.text();
|
|
25
|
+
throw new Error(`Auth Proxy request failed: ${response.status} ${response.statusText} - ${errorText}`);
|
|
26
|
+
}
|
|
27
|
+
return response.json();
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
/**
|
|
31
|
+
* Verifies an OTP code with Turnkey's Auth Proxy
|
|
32
|
+
*
|
|
33
|
+
* Returns a verificationToken that should be passed to the backend's
|
|
34
|
+
* /auth/login/otp endpoint along with a client signature.
|
|
35
|
+
*/
|
|
36
|
+
async verifyOtp(params) {
|
|
37
|
+
return request('/v1/otp_verify', params);
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=authProxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authProxy.js","sourceRoot":"","sources":["../../../src/client/authProxy.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,+BAA+B,CAAA;AAuB3D;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAA6B;IACjE,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAG,mBAAmB,EAAE,GAAG,MAAM,CAAA;IAEnE,KAAK,UAAU,OAAO,CACpB,IAAY,EACZ,IAAa,EACb,SAAyB,MAAM;QAE/B,MAAM,YAAY,GAAgB;YAChC,MAAM;YACN,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,wBAAwB,EAAE,iBAAiB;aAC5C;SACF,CAAA;QAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAC1C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,EAAE,YAAY,CAAC,CAAA;QAE/D,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YACvC,MAAM,IAAI,KAAK,CACb,8BAA8B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,SAAS,EAAE,CACtF,CAAA;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;IACxB,CAAC;IAED,OAAO;QACL;;;;;WAKG;QACH,KAAK,CAAC,SAAS,CACb,MAAiC;YAEjC,OAAO,OAAO,CAA6B,gBAAgB,EAAE,MAAM,CAAC,CAAA;QACtE,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { loginWithStamp, } from '../../actions/auth/loginWithStamp.js';
|
|
2
|
-
import { authenticateWithEmail, authenticateWithOAuth, getUserWallet, getWhoami, loginWithOTP, registerWithOTP, registerWithPasskey, signRawPayload, } from '../../actions/index.js';
|
|
2
|
+
import { authenticateWithEmail, authenticateWithOAuth, getUserEmail, getUserWallet, getWhoami, loginWithOTP, registerWithOTP, registerWithPasskey, signRawPayload, } from '../../actions/index.js';
|
|
3
3
|
import { signTransaction, } from '../../actions/wallet/signTransaction.js';
|
|
4
4
|
/**
|
|
5
5
|
* Decorator function that adds ZeroDev Wallet client actions to a client
|
|
@@ -29,6 +29,7 @@ export function zeroDevWalletActions(client) {
|
|
|
29
29
|
authenticateWithEmail: (params) => authenticateWithEmail(client, params),
|
|
30
30
|
authenticateWithOAuth: (params) => authenticateWithOAuth(client, params),
|
|
31
31
|
getWhoami: (params) => getWhoami(client, params),
|
|
32
|
+
getUserEmail: (params) => getUserEmail(client, params),
|
|
32
33
|
// Wallet actions
|
|
33
34
|
getUserWallet: (params) => getUserWallet(client, params),
|
|
34
35
|
signRawPayload: (params) => signRawPayload(client, params),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/client/decorators/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,GACf,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAKL,qBAAqB,EACrB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/client/decorators/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,GACf,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAKL,qBAAqB,EACrB,qBAAqB,EAOrB,YAAY,EACZ,aAAa,EACb,SAAS,EAGT,YAAY,EAKZ,eAAe,EACf,mBAAmB,EAGnB,cAAc,GACf,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAGL,eAAe,GAChB,MAAM,yCAAyC,CAAA;AAqFhD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,OAAO;QACL,eAAe;QACf,qBAAqB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC;QACxE,qBAAqB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC;QACxE,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;QAChD,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;QAEtD,iBAAiB;QACjB,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;QACxD,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;QAC1D,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC;QAC5D,mBAAmB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC;QACpE,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;QAC1D,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC;QAC5D,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;KACvD,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,YAAY,GAEb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,qBAAqB,GACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,gBAAgB,EAChB,YAAY,GAEb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { canonicalizeEx } from 'json-canonicalize';
|
|
1
2
|
import { RestRequestError, RestTimeoutError } from '../../errors/request.js';
|
|
2
3
|
export function rest(url, cfg) {
|
|
3
4
|
const timeoutMs = cfg.timeoutMs ?? 10_000;
|
|
@@ -27,7 +28,7 @@ export function rest(url, cfg) {
|
|
|
27
28
|
stamper = cfg.indexedDbStamper;
|
|
28
29
|
}
|
|
29
30
|
const { body, apiUrl } = args.body;
|
|
30
|
-
const bodyString =
|
|
31
|
+
const bodyString = canonicalizeEx(body ?? args.body);
|
|
31
32
|
const stamp = await stamper.stamp(bodyString);
|
|
32
33
|
// Restructure request body to match backend expectation
|
|
33
34
|
if (args.stampPostion === 'headers') {
|
|
@@ -62,6 +63,7 @@ export function rest(url, cfg) {
|
|
|
62
63
|
headers: requestHeaders,
|
|
63
64
|
body: requestBody != null ? JSON.stringify(requestBody) : null,
|
|
64
65
|
signal: controller.signal,
|
|
66
|
+
...(args.credentials && { credentials: args.credentials }),
|
|
65
67
|
};
|
|
66
68
|
const finalInit = (await cfg.onRequest?.(fullUrl, init)) ?? init;
|
|
67
69
|
const res = await fetch(fullUrl, finalInit);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../../src/client/transports/rest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../../src/client/transports/rest.ts"],"names":[],"mappings":"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"}
|
package/dist/_esm/constants.js
CHANGED
|
@@ -2,5 +2,6 @@ export const DEFAULT_SESSION_EXPIRATION_IN_SECONDS = '900'; // default to 15 min
|
|
|
2
2
|
export const DEFAULT_IFRAME_CONTAINER_ID = 'turnkey-auth-iframe-container-id';
|
|
3
3
|
export const DEFAULT_IFRAME_ELEMENT_ID = 'turnkey-default-iframe-element-id';
|
|
4
4
|
export const DEFAULT_ORGANIZATION_ID = '6254bb1d-0d0d-4f7e-96b8-77c94fe0b0c1';
|
|
5
|
+
export const DEFAULT_AUTH_PROXY_CONFIG_ID = 'f69f6246-a814-43c6-90e6-2a8d947853d3';
|
|
5
6
|
export const KMS_SERVER_URL = 'https://kms.dev.zerodev.app';
|
|
6
7
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qCAAqC,GAAG,KAAK,CAAA,CAAC,wBAAwB;AACnF,MAAM,CAAC,MAAM,2BAA2B,GAAG,kCAAkC,CAAA;AAC7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,mCAAmC,CAAA;AAC5E,MAAM,CAAC,MAAM,uBAAuB,GAAG,sCAAsC,CAAA;AAC7E,MAAM,CAAC,MAAM,cAAc,GAAG,6BAA6B,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qCAAqC,GAAG,KAAK,CAAA,CAAC,wBAAwB;AACnF,MAAM,CAAC,MAAM,2BAA2B,GAAG,kCAAkC,CAAA;AAC7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,mCAAmC,CAAA;AAC5E,MAAM,CAAC,MAAM,uBAAuB,GAAG,sCAAsC,CAAA;AAC7E,MAAM,CAAC,MAAM,4BAA4B,GACvC,sCAAsC,CAAA;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,6BAA6B,CAAA"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { getWebAuthnAttestation } from '@turnkey/http';
|
|
2
2
|
import { toViemAccount } from '../adapters/viem.js';
|
|
3
|
-
import { createClient, zeroDevWalletTransport, } from '../client/index.js';
|
|
4
|
-
import { DEFAULT_ORGANIZATION_ID, DEFAULT_SESSION_EXPIRATION_IN_SECONDS, KMS_SERVER_URL, } from '../constants.js';
|
|
3
|
+
import { createAuthProxyClient, createClient, zeroDevWalletTransport, } from '../client/index.js';
|
|
4
|
+
import { DEFAULT_AUTH_PROXY_CONFIG_ID, DEFAULT_ORGANIZATION_ID, DEFAULT_SESSION_EXPIRATION_IN_SECONDS, KMS_SERVER_URL, } from '../constants.js';
|
|
5
5
|
import { createIndexedDbStamper } from '../stampers/indexedDbStamper.js';
|
|
6
6
|
import { createWebauthnStamper } from '../stampers/webauthnStamper.js';
|
|
7
7
|
import { createWebStorageAdapter } from '../storage/adapters.js';
|
|
8
8
|
import { createStorageManager, } from '../storage/manager.js';
|
|
9
9
|
import { SessionType } from '../types/session.js';
|
|
10
|
+
import { buildClientSignature } from '../utils/buildClientSignature.js';
|
|
10
11
|
import { base64UrlEncode, generateCompressedPublicKeyFromKeyPair, generateRandomBuffer, humanReadableDateTime, parseSession, } from '../utils/utils.js';
|
|
11
12
|
export async function createZeroDevWallet(config) {
|
|
12
13
|
const { projectId, sessionStorage, rpId = window.location.hostname, organizationId = DEFAULT_ORGANIZATION_ID, } = config;
|
|
@@ -90,30 +91,26 @@ export async function createZeroDevWallet(config) {
|
|
|
90
91
|
async auth(params) {
|
|
91
92
|
switch (params.type) {
|
|
92
93
|
case 'oauth': {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
if (!targetPublicKey) {
|
|
96
|
-
throw new Error('Failed to get public key');
|
|
97
|
-
}
|
|
94
|
+
// Backend OAuth flow - the backend reads the OAuth session from a cookie
|
|
95
|
+
// set during the OAuth popup flow via /oauth/google/login
|
|
98
96
|
const data = await client.authenticateWithOAuth({
|
|
99
|
-
|
|
100
|
-
provider: 'google',
|
|
101
|
-
targetPublicKey,
|
|
97
|
+
provider: params.provider,
|
|
102
98
|
projectId,
|
|
103
99
|
});
|
|
104
|
-
if (data.
|
|
100
|
+
if (data.session) {
|
|
105
101
|
// Parse the JWT to get session data
|
|
106
|
-
const parsedSession = parseSession(data.
|
|
102
|
+
const parsedSession = parseSession(data.session);
|
|
103
|
+
const publicKey = await client.indexedDbStamper.getPublicKey();
|
|
107
104
|
const session = {
|
|
108
105
|
id: `session_oauth_${Date.now()}`,
|
|
109
106
|
userId: parsedSession.userId,
|
|
110
107
|
organizationId: parsedSession.organizationId,
|
|
111
108
|
stamperType: 'indexedDb',
|
|
112
109
|
sessionType: parsedSession.sessionType || SessionType.READ_WRITE,
|
|
113
|
-
token: data.
|
|
110
|
+
token: data.session,
|
|
114
111
|
expiry: parsedSession.expiry,
|
|
115
112
|
createdAt: Date.now(),
|
|
116
|
-
publicKey:
|
|
113
|
+
publicKey: publicKey || '',
|
|
117
114
|
};
|
|
118
115
|
await sessionStorageManager.storeSession(session, session.id);
|
|
119
116
|
}
|
|
@@ -232,17 +229,32 @@ export async function createZeroDevWallet(config) {
|
|
|
232
229
|
return data;
|
|
233
230
|
}
|
|
234
231
|
if (type === 'otp' && mode === 'verifyOtp') {
|
|
235
|
-
const { otpId, otpCode
|
|
232
|
+
const { otpId, otpCode } = params;
|
|
233
|
+
// Step 1: Generate new key pair
|
|
236
234
|
await client.indexedDbStamper.resetKeyPair();
|
|
237
235
|
const targetPublicKey = await client.indexedDbStamper.getPublicKey();
|
|
238
236
|
if (!targetPublicKey) {
|
|
239
237
|
throw new Error('Failed to get public key');
|
|
240
238
|
}
|
|
241
|
-
|
|
239
|
+
// Step 2: Verify OTP via Auth Proxy
|
|
240
|
+
const authProxyClient = createAuthProxyClient({
|
|
241
|
+
authProxyConfigId: DEFAULT_AUTH_PROXY_CONFIG_ID,
|
|
242
|
+
});
|
|
243
|
+
const { verificationToken } = await authProxyClient.verifyOtp({
|
|
242
244
|
otpId,
|
|
243
245
|
otpCode,
|
|
244
|
-
|
|
245
|
-
|
|
246
|
+
public_key: targetPublicKey,
|
|
247
|
+
});
|
|
248
|
+
// Step 3: Build client signature
|
|
249
|
+
const clientSignature = await buildClientSignature({
|
|
250
|
+
verificationToken,
|
|
251
|
+
publicKey: targetPublicKey,
|
|
252
|
+
stamper: client.indexedDbStamper,
|
|
253
|
+
});
|
|
254
|
+
// Step 4: Login via backend (not Auth Proxy!)
|
|
255
|
+
const data = await client.loginWithOTP({
|
|
256
|
+
verificationToken,
|
|
257
|
+
clientSignature,
|
|
246
258
|
projectId,
|
|
247
259
|
});
|
|
248
260
|
if (data.session) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createZeroDevWallet.js","sourceRoot":"","sources":["../../../src/core/createZeroDevWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EACL,YAAY,EAEZ,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,uBAAuB,EACvB,qCAAqC,EACrC,cAAc,GACf,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EACL,oBAAoB,GAErB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,WAAW,EAA6B,MAAM,qBAAqB,CAAA;AAC5E,OAAO,EACL,eAAe,EACf,sCAAsC,EACtC,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,GACb,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"createZeroDevWallet.js","sourceRoot":"","sources":["../../../src/core/createZeroDevWallet.ts"],"names":[],"mappings":"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"}
|
package/dist/_esm/index.js
CHANGED
|
@@ -10,10 +10,13 @@ export { toViemAccount } from './adapters/viem.js';
|
|
|
10
10
|
export { zeroDevWalletActions } from './client/decorators/client.js';
|
|
11
11
|
// Client
|
|
12
12
|
export { createBaseClient, createClient, zeroDevWalletTransport, } from './client/index.js';
|
|
13
|
+
// Constants
|
|
14
|
+
export { KMS_SERVER_URL } from './constants.js';
|
|
13
15
|
// Core
|
|
14
16
|
export { createZeroDevWallet } from './core/createZeroDevWallet.js';
|
|
15
17
|
// Stampers
|
|
16
18
|
export { createIframeStamper, createIndexedDbStamper, createWebauthnStamper, } from './stampers/index.js';
|
|
19
|
+
export { exportPrivateKey } from './utils/exportPrivateKey.js';
|
|
17
20
|
export { exportWallet } from './utils/exportWallet.js';
|
|
18
21
|
// Utils
|
|
19
22
|
export { normalizeTimestamp } from './utils/utils.js';
|
package/dist/_esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAuBA,UAAU;AACV,OAAO;AACL,eAAe;AACf,qBAAqB,EACrB,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,oBAAoB,CAAA;AAE3B,WAAW;AACX,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,oBAAoB;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAEpE,SAAS;AACT,OAAO,EACL,gBAAgB,EAChB,YAAY,EAEZ,sBAAsB,GACvB,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAuBA,UAAU;AACV,OAAO;AACL,eAAe;AACf,qBAAqB,EACrB,qBAAqB;AACrB,iBAAiB;AACjB,aAAa,EACb,SAAS,EACT,YAAY,EACZ,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,oBAAoB,CAAA;AAE3B,WAAW;AACX,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,oBAAoB;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAEpE,SAAS;AACT,OAAO,EACL,gBAAgB,EAChB,YAAY,EAEZ,sBAAsB,GACvB,MAAM,mBAAmB,CAAA;AAC1B,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAM/C,OAAO;AACP,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,WAAW;AACX,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,qBAAqB,CAAA;AAW5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,QAAQ;AACR,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IframeStamper as TurnkeyIframeStamper } from '@turnkey/iframe-stamper';
|
|
1
|
+
import { KeyFormat, IframeStamper as TurnkeyIframeStamper, } from '@turnkey/iframe-stamper';
|
|
2
2
|
export async function createIframeStamper(cfg) {
|
|
3
3
|
const inner = new TurnkeyIframeStamper({
|
|
4
4
|
iframeUrl: cfg.iframeUrl,
|
|
@@ -24,6 +24,9 @@ export async function createIframeStamper(cfg) {
|
|
|
24
24
|
async injectWalletExportBundle(bundle, organizationId) {
|
|
25
25
|
return await inner.injectWalletExportBundle(bundle, organizationId);
|
|
26
26
|
},
|
|
27
|
+
async injectKeyExportBundle(bundle, organizationId, keyFormat) {
|
|
28
|
+
return await inner.injectKeyExportBundle(bundle, organizationId, keyFormat ? KeyFormat[keyFormat] : KeyFormat.Hexadecimal);
|
|
29
|
+
},
|
|
27
30
|
};
|
|
28
31
|
}
|
|
29
32
|
//# sourceMappingURL=iframeStamper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iframeStamper.js","sourceRoot":"","sources":["../../../src/stampers/iframeStamper.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"iframeStamper.js","sourceRoot":"","sources":["../../../src/stampers/iframeStamper.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,IAAI,oBAAoB,GACtC,MAAM,yBAAyB,CAAA;AAGhC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAIzC;IACC,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC;QACrC,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,eAAe,EAAE,GAAG,CAAC,eAAe;KACrC,CAAC,CAAA;IAEF,OAAO;QACL,KAAK,CAAC,IAAI;YACR,OAAO,MAAM,KAAK,CAAC,IAAI,EAAE,CAAA;QAC3B,CAAC;QACD,KAAK,CAAC,sBAAsB,CAAC,MAAc;YACzC,OAAO,MAAM,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAA;QACnD,CAAC;QACD,KAAK,CAAC,YAAY;YAChB,OAAO,MAAM,KAAK,CAAC,oBAAoB,EAAE,CAAA;QAC3C,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,OAAe;YACzB,OAAO,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACnC,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;QACD,KAAK,CAAC,wBAAwB,CAAC,MAAc,EAAE,cAAsB;YACnE,OAAO,MAAM,KAAK,CAAC,wBAAwB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;QACrE,CAAC;QACD,KAAK,CAAC,qBAAqB,CACzB,MAAc,EACd,cAAsB,EACtB,SAAyB;YAEzB,OAAO,MAAM,KAAK,CAAC,qBAAqB,CACtC,MAAM,EACN,cAAc,EACd,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CACzD,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { derToRawSignature } from './derToRawSignature.js';
|
|
2
|
+
/**
|
|
3
|
+
* Builds a client signature for OTP login.
|
|
4
|
+
*
|
|
5
|
+
* Steps:
|
|
6
|
+
* 1. Decode verificationToken JWT to extract `id` field as tokenId
|
|
7
|
+
* 2. Build message: JSON.stringify({ login: { publicKey }, tokenId, type: "USAGE_TYPE_LOGIN" })
|
|
8
|
+
* 3. Sign message with stamper → get stampHeaderValue
|
|
9
|
+
* 4. Parse stampHeaderValue → extract DER signature hex
|
|
10
|
+
* 5. Convert DER to raw r||s format
|
|
11
|
+
* 6. Return raw signature hex
|
|
12
|
+
*
|
|
13
|
+
* @param params - The parameters for building the client signature
|
|
14
|
+
* @returns The raw r||s signature hex (64 bytes = 128 chars)
|
|
15
|
+
*/
|
|
16
|
+
export async function buildClientSignature(params) {
|
|
17
|
+
const { verificationToken, publicKey, stamper } = params;
|
|
18
|
+
// Step 1: Extract tokenId from verification token JWT payload
|
|
19
|
+
const tokenId = extractTokenIdFromJwt(verificationToken);
|
|
20
|
+
// Step 2: Build the signature payload message
|
|
21
|
+
const signaturePayload = {
|
|
22
|
+
login: { publicKey },
|
|
23
|
+
tokenId,
|
|
24
|
+
type: 'USAGE_TYPE_LOGIN',
|
|
25
|
+
};
|
|
26
|
+
const message = JSON.stringify(signaturePayload);
|
|
27
|
+
// Step 3: Sign the message using the stamper
|
|
28
|
+
const stamp = await stamper.stamp(message);
|
|
29
|
+
// Step 4: Parse the stamp to extract the DER signature
|
|
30
|
+
// The stampHeaderValue is base64url encoded JSON containing the signature
|
|
31
|
+
const stampData = JSON.parse(base64UrlDecode(stamp.stampHeaderValue));
|
|
32
|
+
const derSignatureHex = stampData.signature;
|
|
33
|
+
// Step 5: Convert DER signature to raw r||s format
|
|
34
|
+
const rawSignature = derToRawSignature(derSignatureHex);
|
|
35
|
+
// Step 6: Return raw signature hex
|
|
36
|
+
return rawSignature;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Extracts the token ID (id field) from a JWT's payload
|
|
40
|
+
*/
|
|
41
|
+
function extractTokenIdFromJwt(jwt) {
|
|
42
|
+
const parts = jwt.split('.');
|
|
43
|
+
if (parts.length !== 3) {
|
|
44
|
+
throw new Error('Invalid JWT format');
|
|
45
|
+
}
|
|
46
|
+
const payload = JSON.parse(base64UrlDecode(parts[1]));
|
|
47
|
+
if (!payload.id) {
|
|
48
|
+
throw new Error('JWT payload missing id field');
|
|
49
|
+
}
|
|
50
|
+
return payload.id;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Decodes a base64url encoded string
|
|
54
|
+
*/
|
|
55
|
+
function base64UrlDecode(str) {
|
|
56
|
+
// Add padding if necessary
|
|
57
|
+
let base64 = str.replace(/-/g, '+').replace(/_/g, '/');
|
|
58
|
+
const padding = base64.length % 4;
|
|
59
|
+
if (padding) {
|
|
60
|
+
base64 += '='.repeat(4 - padding);
|
|
61
|
+
}
|
|
62
|
+
return atob(base64);
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=buildClientSignature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildClientSignature.js","sourceRoot":"","sources":["../../../src/utils/buildClientSignature.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAW1D;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAkC;IAElC,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAExD,8DAA8D;IAC9D,MAAM,OAAO,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,CAAA;IAExD,8CAA8C;IAC9C,MAAM,gBAAgB,GAAG;QACvB,KAAK,EAAE,EAAE,SAAS,EAAE;QACpB,OAAO;QACP,IAAI,EAAE,kBAAkB;KACzB,CAAA;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;IAEhD,6CAA6C;IAC7C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAE1C,uDAAuD;IACvD,0EAA0E;IAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAA;IACrE,MAAM,eAAe,GAAW,SAAS,CAAC,SAAS,CAAA;IAEnD,mDAAmD;IACnD,MAAM,YAAY,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAA;IAEvD,mCAAmC;IACnC,OAAO,YAAY,CAAA;AACrB,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,GAAW;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAA;IACtD,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACjD,CAAC;IAED,OAAO,OAAO,CAAC,EAAE,CAAA;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,GAAW;IAClC,2BAA2B;IAC3B,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;IACjC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAA;AACrB,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a DER-encoded ECDSA signature to raw r||s format.
|
|
3
|
+
*
|
|
4
|
+
* DER format: 0x30 [length] 0x02 [r-length] [r] 0x02 [s-length] [s]
|
|
5
|
+
* Raw format: [r (32 bytes)] [s (32 bytes)]
|
|
6
|
+
*
|
|
7
|
+
* @param derHex - The DER-encoded signature as a hex string
|
|
8
|
+
* @returns The raw signature as a hex string (r||s, 64 bytes = 128 chars)
|
|
9
|
+
*/
|
|
10
|
+
export function derToRawSignature(derHex) {
|
|
11
|
+
const der = hexToBytes(derHex);
|
|
12
|
+
// Verify SEQUENCE tag (0x30)
|
|
13
|
+
if (der[0] !== 0x30) {
|
|
14
|
+
throw new Error('Invalid DER signature: expected SEQUENCE tag (0x30)');
|
|
15
|
+
}
|
|
16
|
+
let offset = 2; // Skip SEQUENCE tag and length
|
|
17
|
+
// Parse r INTEGER
|
|
18
|
+
if (der[offset] !== 0x02) {
|
|
19
|
+
throw new Error('Invalid DER signature: expected INTEGER tag (0x02) for r');
|
|
20
|
+
}
|
|
21
|
+
offset++; // Skip INTEGER tag
|
|
22
|
+
const rLength = der[offset];
|
|
23
|
+
offset++; // Skip length byte
|
|
24
|
+
const rBytes = der.slice(offset, offset + rLength);
|
|
25
|
+
offset += rLength;
|
|
26
|
+
// Parse s INTEGER
|
|
27
|
+
if (der[offset] !== 0x02) {
|
|
28
|
+
throw new Error('Invalid DER signature: expected INTEGER tag (0x02) for s');
|
|
29
|
+
}
|
|
30
|
+
offset++; // Skip INTEGER tag
|
|
31
|
+
const sLength = der[offset];
|
|
32
|
+
offset++; // Skip length byte
|
|
33
|
+
const sBytes = der.slice(offset, offset + sLength);
|
|
34
|
+
// Remove leading zero bytes if present (DER uses signed integers)
|
|
35
|
+
// and pad to 32 bytes
|
|
36
|
+
const r = padTo32Bytes(stripLeadingZeros(rBytes));
|
|
37
|
+
const s = padTo32Bytes(stripLeadingZeros(sBytes));
|
|
38
|
+
// Concatenate r || s
|
|
39
|
+
const raw = new Uint8Array(64);
|
|
40
|
+
raw.set(r, 0);
|
|
41
|
+
raw.set(s, 32);
|
|
42
|
+
return bytesToHex(raw);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Converts a hex string to a Uint8Array
|
|
46
|
+
*/
|
|
47
|
+
function hexToBytes(hex) {
|
|
48
|
+
const cleanHex = hex.startsWith('0x') ? hex.slice(2) : hex;
|
|
49
|
+
const bytes = new Uint8Array(cleanHex.length / 2);
|
|
50
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
51
|
+
bytes[i] = parseInt(cleanHex.slice(i * 2, i * 2 + 2), 16);
|
|
52
|
+
}
|
|
53
|
+
return bytes;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Converts a Uint8Array to a hex string (no 0x prefix)
|
|
57
|
+
*/
|
|
58
|
+
function bytesToHex(bytes) {
|
|
59
|
+
return Array.from(bytes)
|
|
60
|
+
.map((b) => b.toString(16).padStart(2, '0'))
|
|
61
|
+
.join('');
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Strips leading zero bytes from a byte array
|
|
65
|
+
* DER integers are signed, so positive numbers may have a leading 0x00
|
|
66
|
+
*/
|
|
67
|
+
function stripLeadingZeros(bytes) {
|
|
68
|
+
let start = 0;
|
|
69
|
+
while (start < bytes.length - 1 && bytes[start] === 0) {
|
|
70
|
+
start++;
|
|
71
|
+
}
|
|
72
|
+
return bytes.slice(start);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Pads a byte array to 32 bytes (left-padded with zeros)
|
|
76
|
+
*/
|
|
77
|
+
function padTo32Bytes(bytes) {
|
|
78
|
+
if (bytes.length === 32) {
|
|
79
|
+
return bytes;
|
|
80
|
+
}
|
|
81
|
+
if (bytes.length > 32) {
|
|
82
|
+
// This shouldn't happen for P-256, but handle it gracefully
|
|
83
|
+
return bytes.slice(bytes.length - 32);
|
|
84
|
+
}
|
|
85
|
+
const padded = new Uint8Array(32);
|
|
86
|
+
padded.set(bytes, 32 - bytes.length);
|
|
87
|
+
return padded;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=derToRawSignature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"derToRawSignature.js","sourceRoot":"","sources":["../../../src/utils/derToRawSignature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Export a wallet account's private key
|
|
3
|
+
*
|
|
4
|
+
* This calls Turnkey's export_wallet_account API to get an encrypted bundle
|
|
5
|
+
* containing the account's private key. The bundle is encrypted with the
|
|
6
|
+
* targetPublicKey (from Turnkey's export iframe).
|
|
7
|
+
*
|
|
8
|
+
* @param params - Export parameters
|
|
9
|
+
* @returns Encrypted export bundle and metadata
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* // In UI: Initialize export iframe first
|
|
14
|
+
* const iframeStamper = await createIframeStamper({
|
|
15
|
+
* iframeUrl: 'https://export.turnkey.com',
|
|
16
|
+
* iframeContainer: document.getElementById('export-container'),
|
|
17
|
+
* iframeElementId: 'export-iframe'
|
|
18
|
+
* });
|
|
19
|
+
* const targetPublicKey = await iframeStamper.init();
|
|
20
|
+
*
|
|
21
|
+
* // Call SDK to get encrypted bundle
|
|
22
|
+
* const { exportBundle, address, organizationId } = await exportPrivateKey({
|
|
23
|
+
* wallet,
|
|
24
|
+
* targetPublicKey
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* // Inject into iframe to display private key
|
|
28
|
+
* await iframeStamper.injectKeyExportBundle(exportBundle, organizationId, 'Hexadecimal');
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export async function exportPrivateKey(params) {
|
|
32
|
+
const { targetPublicKey, wallet, address: addressParam } = params;
|
|
33
|
+
const session = await wallet.getSession();
|
|
34
|
+
if (!session) {
|
|
35
|
+
throw new Error('Session not found');
|
|
36
|
+
}
|
|
37
|
+
const { organizationId } = session;
|
|
38
|
+
// If address not provided, get it from the wallet's account
|
|
39
|
+
let address = addressParam;
|
|
40
|
+
if (!address) {
|
|
41
|
+
const account = await wallet.toAccount();
|
|
42
|
+
if (!account?.address) {
|
|
43
|
+
throw new Error('Could not get address from wallet account');
|
|
44
|
+
}
|
|
45
|
+
address = account.address;
|
|
46
|
+
}
|
|
47
|
+
const exportBody = JSON.stringify({
|
|
48
|
+
type: 'ACTIVITY_TYPE_EXPORT_WALLET_ACCOUNT',
|
|
49
|
+
timestampMs: Date.now().toString(),
|
|
50
|
+
organizationId: organizationId,
|
|
51
|
+
parameters: {
|
|
52
|
+
address: address,
|
|
53
|
+
targetPublicKey,
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
const stamperKey = session.stamperType === 'indexedDb' ? 'indexedDbStamper' : 'webauthnStamper';
|
|
57
|
+
const stamper = wallet.client[stamperKey];
|
|
58
|
+
if (!stamper) {
|
|
59
|
+
throw new Error(`Stamper '${stamperKey}' not found on wallet.client`);
|
|
60
|
+
}
|
|
61
|
+
const exportStamp = await stamper.stamp(exportBody);
|
|
62
|
+
if (!exportStamp) {
|
|
63
|
+
throw new Error('Failed to stamp export body');
|
|
64
|
+
}
|
|
65
|
+
const exportResponse = await fetch('https://api.turnkey.com/public/v1/submit/export_wallet_account', {
|
|
66
|
+
method: 'POST',
|
|
67
|
+
body: exportBody,
|
|
68
|
+
headers: {
|
|
69
|
+
[exportStamp.stampHeaderName]: exportStamp.stampHeaderValue,
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
if (!exportResponse.ok) {
|
|
73
|
+
const errorText = await exportResponse.text();
|
|
74
|
+
throw new Error(`Failed to export wallet account: ${exportResponse.status} ${errorText}`);
|
|
75
|
+
}
|
|
76
|
+
const exportData = await exportResponse.json();
|
|
77
|
+
const exportBundle = exportData?.activity?.result?.exportWalletAccountResult?.exportBundle;
|
|
78
|
+
if (!exportBundle) {
|
|
79
|
+
throw new Error(`Export bundle not found in response: ${JSON.stringify(exportData)}`);
|
|
80
|
+
}
|
|
81
|
+
return { exportBundle, address: address, organizationId };
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=exportPrivateKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exportPrivateKey.js","sourceRoot":"","sources":["../../../src/utils/exportPrivateKey.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAkC;IAElC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAAA;IAEjE,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACtC,CAAC;IACD,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;IAElC,4DAA4D;IAC5D,IAAI,OAAO,GAAG,YAAY,CAAA;IAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;QACxC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC9D,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC3B,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,EAAE,qCAAqC;QAC3C,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QAClC,cAAc,EAAE,cAAc;QAC9B,UAAU,EAAE;YACV,OAAO,EAAE,OAAO;YAChB,eAAe;SAChB;KACF,CAAC,CAAA;IAEF,MAAM,UAAU,GACd,OAAO,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,CAAA;IAC9E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,8BAA8B,CAAC,CAAA;IACvE,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IACnD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,KAAK,CAChC,gEAAgE,EAChE;QACE,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE;YACP,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,gBAAgB;SAC5D;KACF,CACF,CAAA;IACD,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAA;QAC7C,MAAM,IAAI,KAAK,CACb,oCAAoC,cAAc,CAAC,MAAM,IAAI,SAAS,EAAE,CACzE,CAAA;IACH,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAA;IAE9C,MAAM,YAAY,GAChB,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,yBAAyB,EAAE,YAAY,CAAA;IAEvE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,wCAAwC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CACrE,CAAA;IACH,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,OAAQ,EAAE,cAAc,EAAE,CAAA;AAC5D,CAAC"}
|