@turnkey/sdk-browser 0.2.1 → 0.4.0
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/CHANGELOG.md +12 -0
- package/dist/__generated__/version.d.ts +1 -1
- package/dist/__generated__/version.js +1 -1
- package/dist/__generated__/version.mjs +1 -1
- package/dist/models.d.ts +8 -0
- package/dist/models.d.ts.map +1 -1
- package/dist/sdk-client.d.ts +6 -2
- package/dist/sdk-client.d.ts.map +1 -1
- package/dist/sdk-client.js +51 -1
- package/dist/sdk-client.js.map +1 -1
- package/dist/sdk-client.mjs +52 -2
- package/dist/sdk-client.mjs.map +1 -1
- package/dist/storage.d.ts +6 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +4 -0
- package/dist/storage.js.map +1 -1
- package/dist/storage.mjs +4 -0
- package/dist/storage.mjs.map +1 -1
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +42 -0
- package/dist/utils.js.map +1 -1
- package/dist/utils.mjs +42 -1
- package/dist/utils.mjs.map +1 -1
- package/package.json +9 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @turnkey/sdk-browser
|
|
2
2
|
|
|
3
|
+
## 0.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- e4b29da: Deprecate the `getAuthBundle()` path for passkey sessions and replace it with `getReadWriteSession()` to store authBundles with their expirationTimestamps so applications can better manually manage active writing sessions
|
|
8
|
+
|
|
9
|
+
## 0.3.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- d409d81: Add support for Passkey Sessions
|
|
14
|
+
|
|
3
15
|
## 0.2.1
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "@turnkey/sdk-browser@0.
|
|
1
|
+
export declare const VERSION = "@turnkey/sdk-browser@0.4.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/models.d.ts
CHANGED
|
@@ -8,8 +8,16 @@ export interface ReadOnlySession {
|
|
|
8
8
|
session: string;
|
|
9
9
|
sessionExpiry: number;
|
|
10
10
|
}
|
|
11
|
+
export interface ReadWriteSession {
|
|
12
|
+
authBundle: string;
|
|
13
|
+
sessionExpiry: number;
|
|
14
|
+
}
|
|
11
15
|
export interface SubOrganization {
|
|
12
16
|
organizationId: string;
|
|
13
17
|
organizationName: string;
|
|
14
18
|
}
|
|
19
|
+
export type EmbeddedAPIKey = {
|
|
20
|
+
authBundle: string;
|
|
21
|
+
publicKey: string;
|
|
22
|
+
};
|
|
15
23
|
//# sourceMappingURL=models.d.ts.map
|
package/dist/models.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,eAAe,CAAC;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B"}
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,eAAe,CAAC;IAC9B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC"}
|
package/dist/sdk-client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { TurnkeySDKClientConfig, TurnkeySDKBrowserConfig, IframeClientParams } from "./__types__/base";
|
|
2
2
|
import { TurnkeySDKClientBase } from "./__generated__/sdk-client-base";
|
|
3
3
|
import type * as SdkApiTypes from "./__generated__/sdk_api_types";
|
|
4
|
-
import type { User, SubOrganization } from "./models";
|
|
4
|
+
import type { User, SubOrganization, ReadWriteSession } from "./models";
|
|
5
5
|
export declare class TurnkeyBrowserSDK {
|
|
6
6
|
config: TurnkeySDKBrowserConfig;
|
|
7
7
|
constructor(config: TurnkeySDKBrowserConfig);
|
|
@@ -9,13 +9,15 @@ export declare class TurnkeyBrowserSDK {
|
|
|
9
9
|
passkeyClient: (rpId?: string) => TurnkeyPasskeyClient;
|
|
10
10
|
iframeClient: (params: IframeClientParams) => Promise<TurnkeyIframeClient>;
|
|
11
11
|
serverSign: <TResponseType>(methodName: string, params: any[], serverSignUrl?: string) => Promise<TResponseType>;
|
|
12
|
+
getAuthBundle: () => Promise<string | undefined>;
|
|
12
13
|
getCurrentSubOrganization: () => Promise<SubOrganization | undefined>;
|
|
13
14
|
getCurrentUser: () => Promise<User | undefined>;
|
|
14
15
|
logoutUser: () => Promise<boolean>;
|
|
16
|
+
getReadWriteSession: () => Promise<ReadWriteSession | undefined>;
|
|
15
17
|
}
|
|
16
18
|
export declare class TurnkeyBrowserClient extends TurnkeySDKClientBase {
|
|
17
19
|
constructor(config: TurnkeySDKClientConfig);
|
|
18
|
-
login: () => Promise<SdkApiTypes.
|
|
20
|
+
login: () => Promise<SdkApiTypes.TCreateReadOnlySessionResponse>;
|
|
19
21
|
}
|
|
20
22
|
export declare class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
21
23
|
rpId: string;
|
|
@@ -29,6 +31,7 @@ export declare class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
|
29
31
|
transports: ("AUTHENTICATOR_TRANSPORT_BLE" | "AUTHENTICATOR_TRANSPORT_INTERNAL" | "AUTHENTICATOR_TRANSPORT_NFC" | "AUTHENTICATOR_TRANSPORT_USB" | "AUTHENTICATOR_TRANSPORT_HYBRID")[];
|
|
30
32
|
};
|
|
31
33
|
}>;
|
|
34
|
+
createPasskeySession: (userId: string, targetEmbeddedKey: string, expirationSeconds?: string) => Promise<ReadWriteSession>;
|
|
32
35
|
}
|
|
33
36
|
export declare class TurnkeyIframeClient extends TurnkeyBrowserClient {
|
|
34
37
|
iframePublicKey: string | null;
|
|
@@ -38,5 +41,6 @@ export declare class TurnkeyIframeClient extends TurnkeyBrowserClient {
|
|
|
38
41
|
injectKeyExportBundle: (credentialBundle: string, organizationId: string) => Promise<boolean>;
|
|
39
42
|
injectImportBundle: (bundle: string, organizationId: string, userId: string) => Promise<boolean>;
|
|
40
43
|
extractWalletEncryptedBundle: () => Promise<string>;
|
|
44
|
+
extractKeyEncryptedBundle: () => Promise<string>;
|
|
41
45
|
}
|
|
42
46
|
//# sourceMappingURL=sdk-client.d.ts.map
|
package/dist/sdk-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-client.d.ts","sourceRoot":"","sources":["../src/sdk-client.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,KAAK,WAAW,MAAM,+BAA+B,CAAC;AAElE,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk-client.d.ts","sourceRoot":"","sources":["../src/sdk-client.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEV,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,KAAK,WAAW,MAAM,+BAA+B,CAAC;AAElE,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAaxE,qBAAa,iBAAiB;IAC5B,MAAM,EAAE,uBAAuB,CAAC;gBAEpB,MAAM,EAAE,uBAAuB;IAI3C,kBAAkB,QAAa,QAAQ,oBAAoB,GAAG,SAAS,CAAC,CAiBtE;IAEF,aAAa,UAAW,MAAM,KAAG,oBAAoB,CAmBnD;IAEF,YAAY,WACF,kBAAkB,KACzB,QAAQ,mBAAmB,CAAC,CAuB7B;IAEF,UAAU,8BACI,MAAM,UACV,GAAG,EAAE,kBACG,MAAM,4BAoCtB;IAGF,aAAa,QAAa,QAAQ,MAAM,GAAG,SAAS,CAAC,CAEnD;IAEF,yBAAyB,QAAa,QACpC,eAAe,GAAG,SAAS,CAC5B,CAGC;IAEF,cAAc,QAAa,QAAQ,IAAI,GAAG,SAAS,CAAC,CAElD;IAEF,UAAU,QAAa,QAAQ,OAAO,CAAC,CAMrC;IAEF,mBAAmB,QAAa,QAAQ,gBAAgB,GAAG,SAAS,CAAC,CAWnE;CACH;AAED,qBAAa,oBAAqB,SAAQ,oBAAoB;gBAChD,MAAM,EAAE,sBAAsB;IAI1C,KAAK,QAAa,QAAQ,YAAY,8BAA8B,CAAC,CAiBnE;CACH;AAED,qBAAa,oBAAqB,SAAQ,oBAAoB;IAC5D,IAAI,EAAE,MAAM,CAAC;gBAED,MAAM,EAAE,sBAAsB;IAK1C,iBAAiB,YAAkB,OAAO,GAAG,EAAE,GAAG,CAAC;;;;;;;;OAoDjD;IAIF,oBAAoB,WACV,MAAM,qBACK,MAAM,sBACL,MAAM,KACzB,QAAQ,gBAAgB,CAAC,CAiC1B;CACH;AAED,qBAAa,mBAAoB,SAAQ,oBAAoB;IAC3D,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;gBAEnB,MAAM,EAAE,sBAAsB;IAK1C,sBAAsB,qBACF,MAAM,KACvB,QAAQ,OAAO,CAAC,CAGjB;IAEF,wBAAwB,qBACJ,MAAM,kBACR,MAAM,KACrB,QAAQ,OAAO,CAAC,CAMjB;IAEF,qBAAqB,qBACD,MAAM,kBACR,MAAM,KACrB,QAAQ,OAAO,CAAC,CAMjB;IAEF,kBAAkB,WACR,MAAM,kBACE,MAAM,UACd,MAAM,KACb,QAAQ,OAAO,CAAC,CAGjB;IAEF,4BAA4B,QAAa,QAAQ,MAAM,CAAC,CAGtD;IAEF,yBAAyB,QAAa,QAAQ,MAAM,CAAC,CAGnD;CACH"}
|
package/dist/sdk-client.js
CHANGED
|
@@ -92,7 +92,10 @@ class TurnkeyBrowserSDK {
|
|
|
92
92
|
const data = await response.json();
|
|
93
93
|
return data;
|
|
94
94
|
};
|
|
95
|
-
// Local
|
|
95
|
+
// Local Storage
|
|
96
|
+
this.getAuthBundle = async () => {
|
|
97
|
+
return await storage.getStorageValue(storage.StorageKeys.AuthBundle);
|
|
98
|
+
}; // LEGACY
|
|
96
99
|
this.getCurrentSubOrganization = async () => {
|
|
97
100
|
const currentUser = await this.getCurrentUser();
|
|
98
101
|
return currentUser?.organization;
|
|
@@ -101,9 +104,23 @@ class TurnkeyBrowserSDK {
|
|
|
101
104
|
return await storage.getStorageValue(storage.StorageKeys.CurrentUser);
|
|
102
105
|
};
|
|
103
106
|
this.logoutUser = async () => {
|
|
107
|
+
await storage.removeStorageValue(storage.StorageKeys.AuthBundle); // LEGACY
|
|
104
108
|
await storage.removeStorageValue(storage.StorageKeys.CurrentUser);
|
|
109
|
+
await storage.removeStorageValue(storage.StorageKeys.ReadWriteSession);
|
|
105
110
|
return true;
|
|
106
111
|
};
|
|
112
|
+
this.getReadWriteSession = async () => {
|
|
113
|
+
const readWriteSession = await storage.getStorageValue(storage.StorageKeys.ReadWriteSession);
|
|
114
|
+
if (readWriteSession) {
|
|
115
|
+
if (readWriteSession.sessionExpiry > Date.now()) {
|
|
116
|
+
return readWriteSession;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
await storage.removeStorageValue(storage.StorageKeys.ReadWriteSession);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return undefined;
|
|
123
|
+
};
|
|
107
124
|
this.config = config;
|
|
108
125
|
}
|
|
109
126
|
}
|
|
@@ -180,6 +197,35 @@ class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
|
180
197
|
attestation: attestation,
|
|
181
198
|
};
|
|
182
199
|
};
|
|
200
|
+
// createPasskeySession creates a session authenticated by passkey, via an embedded API key,
|
|
201
|
+
// and stores + returns the resulting auth bundle that contains the encrypted API key.
|
|
202
|
+
this.createPasskeySession = async (userId, targetEmbeddedKey, expirationSeconds) => {
|
|
203
|
+
const DEFAULT_SESSION_EXPIRATION = "900"; // default to 15 minutes
|
|
204
|
+
const localStorageUser = await storage.getStorageValue(storage.StorageKeys.CurrentUser);
|
|
205
|
+
userId = userId ?? localStorageUser?.userId;
|
|
206
|
+
const { authBundle, publicKey } = await utils.createEmbeddedAPIKey(targetEmbeddedKey);
|
|
207
|
+
// add API key to Turnkey User
|
|
208
|
+
await this.createApiKeys({
|
|
209
|
+
userId,
|
|
210
|
+
apiKeys: [
|
|
211
|
+
{
|
|
212
|
+
apiKeyName: `Session Key ${String(Date.now())}`,
|
|
213
|
+
publicKey,
|
|
214
|
+
expirationSeconds: expirationSeconds ?? DEFAULT_SESSION_EXPIRATION,
|
|
215
|
+
},
|
|
216
|
+
],
|
|
217
|
+
});
|
|
218
|
+
const readWriteSession = {
|
|
219
|
+
authBundle: authBundle,
|
|
220
|
+
sessionExpiry: Date.now() + Number(expirationSeconds) * 1000,
|
|
221
|
+
};
|
|
222
|
+
// store auth bundle in local storage
|
|
223
|
+
await storage.setStorageValue(storage.StorageKeys.ReadWriteSession, {
|
|
224
|
+
authBundle: authBundle,
|
|
225
|
+
sessionExpiry: Date.now() + Number(expirationSeconds) * 1000,
|
|
226
|
+
});
|
|
227
|
+
return readWriteSession;
|
|
228
|
+
};
|
|
183
229
|
this.rpId = config.stamper.rpId;
|
|
184
230
|
}
|
|
185
231
|
}
|
|
@@ -206,6 +252,10 @@ class TurnkeyIframeClient extends TurnkeyBrowserClient {
|
|
|
206
252
|
const stamper = this.config.stamper;
|
|
207
253
|
return await stamper.extractWalletEncryptedBundle();
|
|
208
254
|
};
|
|
255
|
+
this.extractKeyEncryptedBundle = async () => {
|
|
256
|
+
const stamper = this.config.stamper;
|
|
257
|
+
return await stamper.extractKeyEncryptedBundle();
|
|
258
|
+
};
|
|
209
259
|
this.iframePublicKey = config.stamper.iframePublicKey;
|
|
210
260
|
}
|
|
211
261
|
}
|
package/dist/sdk-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-client.js","sources":["../src/sdk-client.ts"],"sourcesContent":[null],"names":["WindowWrapper","webauthnStamper","WebauthnStamper","iframeStamper","IframeStamper","VERSION","TurnkeyRequestError","getStorageValue","StorageKeys","removeStorageValue","TurnkeySDKClientBase","setStorageValue","generateRandomBuffer","base64UrlEncode","getWebAuthnAttestation"],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"sdk-client.js","sources":["../src/sdk-client.ts"],"sourcesContent":[null],"names":["WindowWrapper","webauthnStamper","WebauthnStamper","iframeStamper","IframeStamper","VERSION","TurnkeyRequestError","getStorageValue","StorageKeys","removeStorageValue","TurnkeySDKClientBase","setStorageValue","generateRandomBuffer","base64UrlEncode","getWebAuthnAttestation","createEmbeddedAPIKey"],"mappings":"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"}
|
package/dist/sdk-client.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import WindowWrapper from './__polyfills__/window.mjs';
|
|
|
6
6
|
import { TurnkeyRequestError } from './__types__/base.mjs';
|
|
7
7
|
import { TurnkeySDKClientBase } from './__generated__/sdk-client-base.mjs';
|
|
8
8
|
import { getStorageValue, StorageKeys, removeStorageValue, setStorageValue } from './storage.mjs';
|
|
9
|
-
import { generateRandomBuffer, base64UrlEncode } from './utils.mjs';
|
|
9
|
+
import { generateRandomBuffer, base64UrlEncode, createEmbeddedAPIKey } from './utils.mjs';
|
|
10
10
|
|
|
11
11
|
class TurnkeyBrowserSDK {
|
|
12
12
|
constructor(config) {
|
|
@@ -90,7 +90,10 @@ class TurnkeyBrowserSDK {
|
|
|
90
90
|
const data = await response.json();
|
|
91
91
|
return data;
|
|
92
92
|
};
|
|
93
|
-
// Local
|
|
93
|
+
// Local Storage
|
|
94
|
+
this.getAuthBundle = async () => {
|
|
95
|
+
return await getStorageValue(StorageKeys.AuthBundle);
|
|
96
|
+
}; // LEGACY
|
|
94
97
|
this.getCurrentSubOrganization = async () => {
|
|
95
98
|
const currentUser = await this.getCurrentUser();
|
|
96
99
|
return currentUser?.organization;
|
|
@@ -99,9 +102,23 @@ class TurnkeyBrowserSDK {
|
|
|
99
102
|
return await getStorageValue(StorageKeys.CurrentUser);
|
|
100
103
|
};
|
|
101
104
|
this.logoutUser = async () => {
|
|
105
|
+
await removeStorageValue(StorageKeys.AuthBundle); // LEGACY
|
|
102
106
|
await removeStorageValue(StorageKeys.CurrentUser);
|
|
107
|
+
await removeStorageValue(StorageKeys.ReadWriteSession);
|
|
103
108
|
return true;
|
|
104
109
|
};
|
|
110
|
+
this.getReadWriteSession = async () => {
|
|
111
|
+
const readWriteSession = await getStorageValue(StorageKeys.ReadWriteSession);
|
|
112
|
+
if (readWriteSession) {
|
|
113
|
+
if (readWriteSession.sessionExpiry > Date.now()) {
|
|
114
|
+
return readWriteSession;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
await removeStorageValue(StorageKeys.ReadWriteSession);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return undefined;
|
|
121
|
+
};
|
|
105
122
|
this.config = config;
|
|
106
123
|
}
|
|
107
124
|
}
|
|
@@ -178,6 +195,35 @@ class TurnkeyPasskeyClient extends TurnkeyBrowserClient {
|
|
|
178
195
|
attestation: attestation,
|
|
179
196
|
};
|
|
180
197
|
};
|
|
198
|
+
// createPasskeySession creates a session authenticated by passkey, via an embedded API key,
|
|
199
|
+
// and stores + returns the resulting auth bundle that contains the encrypted API key.
|
|
200
|
+
this.createPasskeySession = async (userId, targetEmbeddedKey, expirationSeconds) => {
|
|
201
|
+
const DEFAULT_SESSION_EXPIRATION = "900"; // default to 15 minutes
|
|
202
|
+
const localStorageUser = await getStorageValue(StorageKeys.CurrentUser);
|
|
203
|
+
userId = userId ?? localStorageUser?.userId;
|
|
204
|
+
const { authBundle, publicKey } = await createEmbeddedAPIKey(targetEmbeddedKey);
|
|
205
|
+
// add API key to Turnkey User
|
|
206
|
+
await this.createApiKeys({
|
|
207
|
+
userId,
|
|
208
|
+
apiKeys: [
|
|
209
|
+
{
|
|
210
|
+
apiKeyName: `Session Key ${String(Date.now())}`,
|
|
211
|
+
publicKey,
|
|
212
|
+
expirationSeconds: expirationSeconds ?? DEFAULT_SESSION_EXPIRATION,
|
|
213
|
+
},
|
|
214
|
+
],
|
|
215
|
+
});
|
|
216
|
+
const readWriteSession = {
|
|
217
|
+
authBundle: authBundle,
|
|
218
|
+
sessionExpiry: Date.now() + Number(expirationSeconds) * 1000,
|
|
219
|
+
};
|
|
220
|
+
// store auth bundle in local storage
|
|
221
|
+
await setStorageValue(StorageKeys.ReadWriteSession, {
|
|
222
|
+
authBundle: authBundle,
|
|
223
|
+
sessionExpiry: Date.now() + Number(expirationSeconds) * 1000,
|
|
224
|
+
});
|
|
225
|
+
return readWriteSession;
|
|
226
|
+
};
|
|
181
227
|
this.rpId = config.stamper.rpId;
|
|
182
228
|
}
|
|
183
229
|
}
|
|
@@ -204,6 +250,10 @@ class TurnkeyIframeClient extends TurnkeyBrowserClient {
|
|
|
204
250
|
const stamper = this.config.stamper;
|
|
205
251
|
return await stamper.extractWalletEncryptedBundle();
|
|
206
252
|
};
|
|
253
|
+
this.extractKeyEncryptedBundle = async () => {
|
|
254
|
+
const stamper = this.config.stamper;
|
|
255
|
+
return await stamper.extractKeyEncryptedBundle();
|
|
256
|
+
};
|
|
207
257
|
this.iframePublicKey = config.stamper.iframePublicKey;
|
|
208
258
|
}
|
|
209
259
|
}
|
package/dist/sdk-client.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-client.mjs","sources":["../src/sdk-client.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"sdk-client.mjs","sources":["../src/sdk-client.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/storage.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import type { User } from "./models";
|
|
1
|
+
import type { User, ReadWriteSession } from "./models";
|
|
2
2
|
export declare enum StorageKeys {
|
|
3
|
-
|
|
3
|
+
AuthBundle = "@turnkey/auth_bundle",
|
|
4
|
+
CurrentUser = "@turnkey/current_user",
|
|
5
|
+
ReadWriteSession = "@turnkey/read_write_session"
|
|
4
6
|
}
|
|
5
7
|
interface StorageValue {
|
|
8
|
+
[StorageKeys.AuthBundle]: string;
|
|
6
9
|
[StorageKeys.CurrentUser]: User;
|
|
10
|
+
[StorageKeys.ReadWriteSession]: ReadWriteSession;
|
|
7
11
|
}
|
|
8
12
|
export declare const getStorageValue: <K extends StorageKeys>(storageKey: K) => Promise<StorageValue[K] | undefined>;
|
|
9
13
|
export declare const setStorageValue: <K extends StorageKeys>(storageKey: K, storageValue: StorageValue[K]) => Promise<any>;
|
package/dist/storage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAGvD,oBAAY,WAAW;IACrB,UAAU,yBAAyB;IACnC,WAAW,0BAA0B;IACrC,gBAAgB,gCAAgC;CACjD;AAED,UAAU,YAAY;IACpB,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IACjC,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAChC,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CAClD;AAoBD,eAAO,MAAM,eAAe,gFAO3B,CAAC;AAEF,eAAO,MAAM,eAAe,2EAGzB,QAAQ,GAAG,CAIb,CAAC;AAEF,eAAO,MAAM,kBAAkB,4CAE5B,QAAQ,IAAI,CAId,CAAC"}
|
package/dist/storage.js
CHANGED
|
@@ -4,7 +4,9 @@ var window = require('./__polyfills__/window.js');
|
|
|
4
4
|
|
|
5
5
|
exports.StorageKeys = void 0;
|
|
6
6
|
(function (StorageKeys) {
|
|
7
|
+
StorageKeys["AuthBundle"] = "@turnkey/auth_bundle";
|
|
7
8
|
StorageKeys["CurrentUser"] = "@turnkey/current_user";
|
|
9
|
+
StorageKeys["ReadWriteSession"] = "@turnkey/read_write_session";
|
|
8
10
|
})(exports.StorageKeys || (exports.StorageKeys = {}));
|
|
9
11
|
var StorageLocation;
|
|
10
12
|
(function (StorageLocation) {
|
|
@@ -13,7 +15,9 @@ var StorageLocation;
|
|
|
13
15
|
StorageLocation["Session"] = "session";
|
|
14
16
|
})(StorageLocation || (StorageLocation = {}));
|
|
15
17
|
const STORAGE_VALUE_LOCATIONS = {
|
|
18
|
+
[exports.StorageKeys.AuthBundle]: StorageLocation.Secure,
|
|
16
19
|
[exports.StorageKeys.CurrentUser]: StorageLocation.Local,
|
|
20
|
+
[exports.StorageKeys.ReadWriteSession]: StorageLocation.Secure,
|
|
17
21
|
};
|
|
18
22
|
const STORAGE_LOCATIONS = {
|
|
19
23
|
[StorageLocation.Local]: window.localStorage,
|
package/dist/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sources":["../src/storage.ts"],"sourcesContent":[null],"names":["StorageKeys","WindowWrapper"],"mappings":";;;;AAGYA,
|
|
1
|
+
{"version":3,"file":"storage.js","sources":["../src/storage.ts"],"sourcesContent":[null],"names":["StorageKeys","WindowWrapper"],"mappings":";;;;AAGYA,6BAIX;AAJD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,YAAA,CAAA,GAAA,sBAAmC,CAAA;AACnC,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,uBAAqC,CAAA;AACrC,IAAA,WAAA,CAAA,kBAAA,CAAA,GAAA,6BAAgD,CAAA;AAClD,CAAC,EAJWA,mBAAW,KAAXA,mBAAW,GAItB,EAAA,CAAA,CAAA,CAAA;AAQD,IAAK,eAIJ,CAAA;AAJD,CAAA,UAAK,eAAe,EAAA;AAClB,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EAJI,eAAe,KAAf,eAAe,GAInB,EAAA,CAAA,CAAA,CAAA;AAED,MAAM,uBAAuB,GAAyC;AACpE,IAAA,CAACA,mBAAW,CAAC,UAAU,GAAG,eAAe,CAAC,MAAM;AAChD,IAAA,CAACA,mBAAW,CAAC,WAAW,GAAG,eAAe,CAAC,KAAK;AAChD,IAAA,CAACA,mBAAW,CAAC,gBAAgB,GAAG,eAAe,CAAC,MAAM;CACvD,CAAC;AAEF,MAAM,iBAAiB,GAAG;AACxB,IAAA,CAAC,eAAe,CAAC,KAAK,GAAGC,MAAa,CAAC,YAAY;AACnD,IAAA,CAAC,eAAe,CAAC,MAAM,GAAGA,MAAa,CAAC,YAAY;AACpD,IAAA,CAAC,eAAe,CAAC,OAAO,GAAGA,MAAa,CAAC,YAAY;CACtD,CAAC;MAEW,eAAe,GAAG,OAC7B,UAAa,KAC2B;AACxC,IAAA,MAAM,eAAe,GAAoB,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAC7E,IAAA,MAAM,sBAAsB,GAAY,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAC3E,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC/D,IAAA,OAAO,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;AAC3D,EAAE;AAEW,MAAA,eAAe,GAAG,OAC7B,UAAa,EACb,YAA6B,KACb;AAChB,IAAA,MAAM,eAAe,GAAoB,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAC7E,IAAA,MAAM,sBAAsB,GAAY,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAC3E,IAAA,sBAAsB,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;AAC3E,EAAE;MAEW,kBAAkB,GAAG,OAChC,UAAa,KACI;AACjB,IAAA,MAAM,eAAe,GAAoB,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAC7E,IAAA,MAAM,sBAAsB,GAAY,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAC3E,IAAA,sBAAsB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAChD;;;;;;"}
|
package/dist/storage.mjs
CHANGED
|
@@ -2,7 +2,9 @@ import WindowWrapper from './__polyfills__/window.mjs';
|
|
|
2
2
|
|
|
3
3
|
var StorageKeys;
|
|
4
4
|
(function (StorageKeys) {
|
|
5
|
+
StorageKeys["AuthBundle"] = "@turnkey/auth_bundle";
|
|
5
6
|
StorageKeys["CurrentUser"] = "@turnkey/current_user";
|
|
7
|
+
StorageKeys["ReadWriteSession"] = "@turnkey/read_write_session";
|
|
6
8
|
})(StorageKeys || (StorageKeys = {}));
|
|
7
9
|
var StorageLocation;
|
|
8
10
|
(function (StorageLocation) {
|
|
@@ -11,7 +13,9 @@ var StorageLocation;
|
|
|
11
13
|
StorageLocation["Session"] = "session";
|
|
12
14
|
})(StorageLocation || (StorageLocation = {}));
|
|
13
15
|
const STORAGE_VALUE_LOCATIONS = {
|
|
16
|
+
[StorageKeys.AuthBundle]: StorageLocation.Secure,
|
|
14
17
|
[StorageKeys.CurrentUser]: StorageLocation.Local,
|
|
18
|
+
[StorageKeys.ReadWriteSession]: StorageLocation.Secure,
|
|
15
19
|
};
|
|
16
20
|
const STORAGE_LOCATIONS = {
|
|
17
21
|
[StorageLocation.Local]: WindowWrapper.localStorage,
|
package/dist/storage.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.mjs","sources":["../src/storage.ts"],"sourcesContent":[null],"names":[],"mappings":";;IAGY,
|
|
1
|
+
{"version":3,"file":"storage.mjs","sources":["../src/storage.ts"],"sourcesContent":[null],"names":[],"mappings":";;IAGY,YAIX;AAJD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,YAAA,CAAA,GAAA,sBAAmC,CAAA;AACnC,IAAA,WAAA,CAAA,aAAA,CAAA,GAAA,uBAAqC,CAAA;AACrC,IAAA,WAAA,CAAA,kBAAA,CAAA,GAAA,6BAAgD,CAAA;AAClD,CAAC,EAJW,WAAW,KAAX,WAAW,GAItB,EAAA,CAAA,CAAA,CAAA;AAQD,IAAK,eAIJ,CAAA;AAJD,CAAA,UAAK,eAAe,EAAA;AAClB,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EAJI,eAAe,KAAf,eAAe,GAInB,EAAA,CAAA,CAAA,CAAA;AAED,MAAM,uBAAuB,GAAyC;AACpE,IAAA,CAAC,WAAW,CAAC,UAAU,GAAG,eAAe,CAAC,MAAM;AAChD,IAAA,CAAC,WAAW,CAAC,WAAW,GAAG,eAAe,CAAC,KAAK;AAChD,IAAA,CAAC,WAAW,CAAC,gBAAgB,GAAG,eAAe,CAAC,MAAM;CACvD,CAAC;AAEF,MAAM,iBAAiB,GAAG;AACxB,IAAA,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC,YAAY;AACnD,IAAA,CAAC,eAAe,CAAC,MAAM,GAAG,aAAa,CAAC,YAAY;AACpD,IAAA,CAAC,eAAe,CAAC,OAAO,GAAG,aAAa,CAAC,YAAY;CACtD,CAAC;MAEW,eAAe,GAAG,OAC7B,UAAa,KAC2B;AACxC,IAAA,MAAM,eAAe,GAAoB,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAC7E,IAAA,MAAM,sBAAsB,GAAY,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAC3E,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAC/D,IAAA,OAAO,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;AAC3D,EAAE;AAEW,MAAA,eAAe,GAAG,OAC7B,UAAa,EACb,YAA6B,KACb;AAChB,IAAA,MAAM,eAAe,GAAoB,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAC7E,IAAA,MAAM,sBAAsB,GAAY,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAC3E,IAAA,sBAAsB,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;AAC3E,EAAE;MAEW,kBAAkB,GAAG,OAChC,UAAa,KACI;AACjB,IAAA,MAAM,eAAe,GAAoB,uBAAuB,CAAC,UAAU,CAAC,CAAC;AAC7E,IAAA,MAAM,sBAAsB,GAAY,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAC3E,IAAA,sBAAsB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAChD;;;;"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { EmbeddedAPIKey } from "./models";
|
|
2
|
+
export declare const createEmbeddedAPIKey: (targetPublicKey: string) => Promise<EmbeddedAPIKey>;
|
|
1
3
|
export declare const generateRandomBuffer: () => ArrayBuffer;
|
|
2
4
|
export declare const base64UrlEncode: (challenge: ArrayBuffer) => string;
|
|
3
5
|
export declare const bytesToHex: (bytes: Uint8Array) => string;
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI/C,eAAO,MAAM,oBAAoB,oBACd,MAAM,KACtB,QAAQ,cAAc,CAoDxB,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAO,WAIvC,CAAC;AAEF,eAAO,MAAM,eAAe,cAAe,WAAW,KAAG,MAMxD,CAAC;AAMF,eAAO,MAAM,UAAU,UAAW,UAAU,KAAG,MAO9C,CAAC"}
|
package/dist/utils.js
CHANGED
|
@@ -1,7 +1,48 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var encoding = require('@turnkey/encoding');
|
|
4
|
+
var crypto$1 = require('@turnkey/crypto');
|
|
3
5
|
var buffer = require('buffer');
|
|
6
|
+
var bs58check = require('bs58check');
|
|
7
|
+
var hpkeJs = require('hpke-js');
|
|
4
8
|
|
|
9
|
+
// createEmbeddedAPIKey creates an embedded API key encrypted to a target key (typically embedded within an iframe).
|
|
10
|
+
// This returns a bundle that can be decrypted by that target key, as well as the public key of the newly created API key.
|
|
11
|
+
const createEmbeddedAPIKey = async (targetPublicKey) => {
|
|
12
|
+
const TURNKEY_HPKE_INFO = new TextEncoder().encode("turnkey_hpke");
|
|
13
|
+
// 1: create new API key (to be encrypted to the targetPublicKey)
|
|
14
|
+
const p256key = crypto$1.generateP256KeyPair();
|
|
15
|
+
// 2: set up encryption
|
|
16
|
+
const suite = new hpkeJs.CipherSuite({
|
|
17
|
+
kem: hpkeJs.KemId.DhkemP256HkdfSha256,
|
|
18
|
+
kdf: hpkeJs.KdfId.HkdfSha256,
|
|
19
|
+
aead: hpkeJs.AeadId.Aes256Gcm,
|
|
20
|
+
});
|
|
21
|
+
// 3: import the targetPublicKey (i.e. passed in from the iframe)
|
|
22
|
+
const targetKeyBytes = encoding.uint8ArrayFromHexString(targetPublicKey);
|
|
23
|
+
const targetKey = await crypto.subtle.importKey("raw", targetKeyBytes, {
|
|
24
|
+
name: "ECDH",
|
|
25
|
+
namedCurve: "P-256",
|
|
26
|
+
}, true, []);
|
|
27
|
+
// 4: sender encrypts a message to the target key
|
|
28
|
+
const sender = await suite.createSenderContext({
|
|
29
|
+
recipientPublicKey: targetKey,
|
|
30
|
+
info: TURNKEY_HPKE_INFO,
|
|
31
|
+
});
|
|
32
|
+
const ciphertext = await sender.seal(encoding.uint8ArrayFromHexString(p256key.privateKey), crypto$1.buildAdditionalAssociatedData(new Uint8Array(sender.enc), targetKeyBytes));
|
|
33
|
+
const ciphertextUint8Array = new Uint8Array(ciphertext);
|
|
34
|
+
// 5: assemble bundle
|
|
35
|
+
const encappedKey = new Uint8Array(sender.enc);
|
|
36
|
+
const compressedEncappedKey = crypto$1.compressRawPublicKey(encappedKey);
|
|
37
|
+
const result = new Uint8Array(compressedEncappedKey.length + ciphertextUint8Array.length);
|
|
38
|
+
result.set(compressedEncappedKey);
|
|
39
|
+
result.set(ciphertextUint8Array, compressedEncappedKey.length);
|
|
40
|
+
const base58encodedBundle = bs58check.encode(result);
|
|
41
|
+
return {
|
|
42
|
+
authBundle: base58encodedBundle,
|
|
43
|
+
publicKey: p256key.publicKey,
|
|
44
|
+
};
|
|
45
|
+
};
|
|
5
46
|
const generateRandomBuffer = () => {
|
|
6
47
|
const arr = new Uint8Array(32);
|
|
7
48
|
crypto.getRandomValues(arr);
|
|
@@ -17,5 +58,6 @@ const base64UrlEncode = (challenge) => {
|
|
|
17
58
|
Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0"));
|
|
18
59
|
|
|
19
60
|
exports.base64UrlEncode = base64UrlEncode;
|
|
61
|
+
exports.createEmbeddedAPIKey = createEmbeddedAPIKey;
|
|
20
62
|
exports.generateRandomBuffer = generateRandomBuffer;
|
|
21
63
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":[null],"names":["Buffer"],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":[null],"names":["generateP256KeyPair","CipherSuite","KemId","KdfId","AeadId","uint8ArrayFromHexString","buildAdditionalAssociatedData","compressRawPublicKey","Buffer"],"mappings":";;;;;;;;AAaA;AACA;MACa,oBAAoB,GAAG,OAClC,eAAuB,KACI;IAC3B,MAAM,iBAAiB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;;AAGnE,IAAA,MAAM,OAAO,GAAGA,4BAAmB,EAAE,CAAC;;AAGtC,IAAA,MAAM,KAAK,GAAG,IAAIC,kBAAW,CAAC;QAC5B,GAAG,EAAEC,YAAK,CAAC,mBAAmB;QAC9B,GAAG,EAAEC,YAAK,CAAC,UAAU;QACrB,IAAI,EAAEC,aAAM,CAAC,SAAS;AACvB,KAAA,CAAC,CAAC;;AAGH,IAAA,MAAM,cAAc,GAAGC,gCAAuB,CAAC,eAAe,CAAC,CAAC;AAChE,IAAA,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAC7C,KAAK,EACL,cAAc,EACd;AACE,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,UAAU,EAAE,OAAO;AACpB,KAAA,EACD,IAAI,EACJ,EAAE,CACH,CAAC;;AAGF,IAAA,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC;AAC7C,QAAA,kBAAkB,EAAE,SAAS;AAC7B,QAAA,IAAI,EAAE,iBAAiB;AACxB,KAAA,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAClCA,gCAAuB,CAAC,OAAO,CAAC,UAAU,CAAC,EAC3CC,sCAA6B,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAC1E,CAAC;AACF,IAAA,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;;IAGxD,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAA,MAAM,qBAAqB,GAAGC,6BAAoB,CAAC,WAAW,CAAC,CAAC;AAChE,IAAA,MAAM,MAAM,GAAG,IAAI,UAAU,CAC3B,qBAAqB,CAAC,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAC3D,CAAC;AACF,IAAA,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAClC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE/D,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAErD,OAAO;AACL,QAAA,UAAU,EAAE,mBAAmB;QAC/B,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC;AACJ,EAAE;AAEK,MAAM,oBAAoB,GAAG,MAAkB;AACpD,IAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC/B,IAAA,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,EAAE;AAEW,MAAA,eAAe,GAAG,CAAC,SAAsB,KAAY;AAChE,IAAA,OAAOC,aAAM,CAAC,IAAI,CAAC,SAAS,CAAC;SAC1B,QAAQ,CAAC,QAAQ,CAAC;AAClB,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,SAAA,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACvB,EAAE;AAEgB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KACjD,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;;;;;;"}
|
package/dist/utils.mjs
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
|
+
import { uint8ArrayFromHexString } from '@turnkey/encoding';
|
|
2
|
+
import { generateP256KeyPair, buildAdditionalAssociatedData, compressRawPublicKey } from '@turnkey/crypto';
|
|
1
3
|
import { Buffer } from 'buffer';
|
|
4
|
+
import bs58check from 'bs58check';
|
|
5
|
+
import { CipherSuite, KemId, KdfId, AeadId } from 'hpke-js';
|
|
2
6
|
|
|
7
|
+
// createEmbeddedAPIKey creates an embedded API key encrypted to a target key (typically embedded within an iframe).
|
|
8
|
+
// This returns a bundle that can be decrypted by that target key, as well as the public key of the newly created API key.
|
|
9
|
+
const createEmbeddedAPIKey = async (targetPublicKey) => {
|
|
10
|
+
const TURNKEY_HPKE_INFO = new TextEncoder().encode("turnkey_hpke");
|
|
11
|
+
// 1: create new API key (to be encrypted to the targetPublicKey)
|
|
12
|
+
const p256key = generateP256KeyPair();
|
|
13
|
+
// 2: set up encryption
|
|
14
|
+
const suite = new CipherSuite({
|
|
15
|
+
kem: KemId.DhkemP256HkdfSha256,
|
|
16
|
+
kdf: KdfId.HkdfSha256,
|
|
17
|
+
aead: AeadId.Aes256Gcm,
|
|
18
|
+
});
|
|
19
|
+
// 3: import the targetPublicKey (i.e. passed in from the iframe)
|
|
20
|
+
const targetKeyBytes = uint8ArrayFromHexString(targetPublicKey);
|
|
21
|
+
const targetKey = await crypto.subtle.importKey("raw", targetKeyBytes, {
|
|
22
|
+
name: "ECDH",
|
|
23
|
+
namedCurve: "P-256",
|
|
24
|
+
}, true, []);
|
|
25
|
+
// 4: sender encrypts a message to the target key
|
|
26
|
+
const sender = await suite.createSenderContext({
|
|
27
|
+
recipientPublicKey: targetKey,
|
|
28
|
+
info: TURNKEY_HPKE_INFO,
|
|
29
|
+
});
|
|
30
|
+
const ciphertext = await sender.seal(uint8ArrayFromHexString(p256key.privateKey), buildAdditionalAssociatedData(new Uint8Array(sender.enc), targetKeyBytes));
|
|
31
|
+
const ciphertextUint8Array = new Uint8Array(ciphertext);
|
|
32
|
+
// 5: assemble bundle
|
|
33
|
+
const encappedKey = new Uint8Array(sender.enc);
|
|
34
|
+
const compressedEncappedKey = compressRawPublicKey(encappedKey);
|
|
35
|
+
const result = new Uint8Array(compressedEncappedKey.length + ciphertextUint8Array.length);
|
|
36
|
+
result.set(compressedEncappedKey);
|
|
37
|
+
result.set(ciphertextUint8Array, compressedEncappedKey.length);
|
|
38
|
+
const base58encodedBundle = bs58check.encode(result);
|
|
39
|
+
return {
|
|
40
|
+
authBundle: base58encodedBundle,
|
|
41
|
+
publicKey: p256key.publicKey,
|
|
42
|
+
};
|
|
43
|
+
};
|
|
3
44
|
const generateRandomBuffer = () => {
|
|
4
45
|
const arr = new Uint8Array(32);
|
|
5
46
|
crypto.getRandomValues(arr);
|
|
@@ -14,5 +55,5 @@ const base64UrlEncode = (challenge) => {
|
|
|
14
55
|
};
|
|
15
56
|
Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0"));
|
|
16
57
|
|
|
17
|
-
export { base64UrlEncode, generateRandomBuffer };
|
|
58
|
+
export { base64UrlEncode, createEmbeddedAPIKey, generateRandomBuffer };
|
|
18
59
|
//# sourceMappingURL=utils.mjs.map
|
package/dist/utils.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","sources":["../src/utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"utils.mjs","sources":["../src/utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAaA;AACA;MACa,oBAAoB,GAAG,OAClC,eAAuB,KACI;IAC3B,MAAM,iBAAiB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;;AAGnE,IAAA,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;;AAGtC,IAAA,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC;QAC5B,GAAG,EAAE,KAAK,CAAC,mBAAmB;QAC9B,GAAG,EAAE,KAAK,CAAC,UAAU;QACrB,IAAI,EAAE,MAAM,CAAC,SAAS;AACvB,KAAA,CAAC,CAAC;;AAGH,IAAA,MAAM,cAAc,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;AAChE,IAAA,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAC7C,KAAK,EACL,cAAc,EACd;AACE,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,UAAU,EAAE,OAAO;AACpB,KAAA,EACD,IAAI,EACJ,EAAE,CACH,CAAC;;AAGF,IAAA,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC;AAC7C,QAAA,kBAAkB,EAAE,SAAS;AAC7B,QAAA,IAAI,EAAE,iBAAiB;AACxB,KAAA,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAClC,uBAAuB,CAAC,OAAO,CAAC,UAAU,CAAC,EAC3C,6BAA6B,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAC1E,CAAC;AACF,IAAA,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;;IAGxD,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC/C,IAAA,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;AAChE,IAAA,MAAM,MAAM,GAAG,IAAI,UAAU,CAC3B,qBAAqB,CAAC,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAC3D,CAAC;AACF,IAAA,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAClC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE/D,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAErD,OAAO;AACL,QAAA,UAAU,EAAE,mBAAmB;QAC/B,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC;AACJ,EAAE;AAEK,MAAM,oBAAoB,GAAG,MAAkB;AACpD,IAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC/B,IAAA,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,EAAE;AAEW,MAAA,eAAe,GAAG,CAAC,SAAsB,KAAY;AAChE,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;SAC1B,QAAQ,CAAC,QAAQ,CAAC;AAClB,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,SAAA,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACvB,EAAE;AAEgB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KACjD,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@turnkey/sdk-browser",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"exports": {
|
|
@@ -38,13 +38,17 @@
|
|
|
38
38
|
"access": "public"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
+
"bs58check": "^3.0.1",
|
|
41
42
|
"buffer": "^6.0.3",
|
|
42
|
-
"elliptic": "^6.5.5",
|
|
43
43
|
"cross-fetch": "^3.1.5",
|
|
44
|
-
"
|
|
45
|
-
"
|
|
44
|
+
"elliptic": "^6.5.5",
|
|
45
|
+
"hpke-js": "^1.2.7",
|
|
46
|
+
"@turnkey/crypto": "0.1.1",
|
|
47
|
+
"@turnkey/encoding": "0.2.0",
|
|
46
48
|
"@turnkey/http": "2.10.0",
|
|
47
|
-
"@turnkey/
|
|
49
|
+
"@turnkey/api-key-stamper": "0.4.0",
|
|
50
|
+
"@turnkey/webauthn-stamper": "0.5.0",
|
|
51
|
+
"@turnkey/iframe-stamper": "2.0.0"
|
|
48
52
|
},
|
|
49
53
|
"devDependencies": {
|
|
50
54
|
"@types/elliptic": "^6.4.18",
|