@originals/auth 1.6.1 → 1.7.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/dist/server/email-auth.d.ts +3 -3
- package/dist/server/email-auth.d.ts.map +1 -1
- package/dist/server/email-auth.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/turnkey-client.d.ts +87 -4
- package/dist/server/turnkey-client.d.ts.map +1 -1
- package/dist/server/turnkey-client.js +128 -5
- package/dist/server/turnkey-client.js.map +1 -1
- package/dist/server/turnkey-signer.d.ts +3 -3
- package/dist/server/turnkey-signer.d.ts.map +1 -1
- package/dist/server/turnkey-signer.js.map +1 -1
- package/package.json +8 -4
- package/src/server/email-auth.ts +3 -4
- package/src/server/index.ts +1 -1
- package/src/server/turnkey-client.ts +183 -7
- package/src/server/turnkey-signer.ts +4 -4
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Turnkey Email Authentication Service
|
|
3
3
|
* Implements email-based authentication using Turnkey's OTP flow
|
|
4
4
|
*/
|
|
5
|
-
import { Turnkey } from '@turnkey/sdk-server';
|
|
6
5
|
import type { EmailAuthSession, InitiateAuthResult, VerifyAuthResult } from '../types';
|
|
6
|
+
import { type TurnkeyHttpClient } from './turnkey-client';
|
|
7
7
|
/**
|
|
8
8
|
* Session storage interface for pluggable session management
|
|
9
9
|
*/
|
|
@@ -22,11 +22,11 @@ export declare function createInMemorySessionStorage(): SessionStorage;
|
|
|
22
22
|
* Initiate email authentication using Turnkey OTP
|
|
23
23
|
* Sends a 6-digit OTP code to the user's email
|
|
24
24
|
*/
|
|
25
|
-
export declare function initiateEmailAuth(email: string, turnkeyClient:
|
|
25
|
+
export declare function initiateEmailAuth(email: string, turnkeyClient: TurnkeyHttpClient, sessionStorage?: SessionStorage): Promise<InitiateAuthResult>;
|
|
26
26
|
/**
|
|
27
27
|
* Verify email authentication code using Turnkey OTP
|
|
28
28
|
*/
|
|
29
|
-
export declare function verifyEmailAuth(sessionId: string, code: string, turnkeyClient:
|
|
29
|
+
export declare function verifyEmailAuth(sessionId: string, code: string, turnkeyClient: TurnkeyHttpClient, sessionStorage?: SessionStorage): Promise<VerifyAuthResult>;
|
|
30
30
|
/**
|
|
31
31
|
* Check if a session is verified
|
|
32
32
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-auth.d.ts","sourceRoot":"","sources":["../../src/server/email-auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"email-auth.d.ts","sourceRoot":"","sources":["../../src/server/email-auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACvF,OAAO,EAA4B,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAKpF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAAC;IACrD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACxD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,IAAI,cAAc,CA2B7D;AAmBD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,iBAAiB,EAChC,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CA2D7B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,iBAAiB,EAChC,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CAqD3B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAYT;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,cAAc,GAC9B,IAAI,CAGN;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,cAAc,GAC9B,gBAAgB,GAAG,SAAS,CAa9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-auth.js","sourceRoot":"","sources":["../../src/server/email-auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"email-auth.js","sourceRoot":"","sources":["../../src/server/email-auth.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* } from '@originals/auth/server';
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
|
-
export { createTurnkeyClient, getOrCreateTurnkeySubOrg } from './turnkey-client';
|
|
17
|
+
export { createTurnkeyClient, getOrCreateTurnkeySubOrg, TurnkeyHttpClient } from './turnkey-client';
|
|
18
18
|
export { initiateEmailAuth, verifyEmailAuth, isSessionVerified, cleanupSession, getSession, type SessionStorage, createInMemorySessionStorage, } from './email-auth';
|
|
19
19
|
export { signToken, verifyToken, getAuthCookieConfig, getClearAuthCookieConfig, } from './jwt';
|
|
20
20
|
export { createAuthMiddleware } from './middleware';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpG,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,KAAK,cAAc,EACnB,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/server/index.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* } from '@originals/auth/server';
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
|
-
export { createTurnkeyClient, getOrCreateTurnkeySubOrg } from './turnkey-client';
|
|
17
|
+
export { createTurnkeyClient, getOrCreateTurnkeySubOrg, TurnkeyHttpClient } from './turnkey-client';
|
|
18
18
|
export { initiateEmailAuth, verifyEmailAuth, isSessionVerified, cleanupSession, getSession, createInMemorySessionStorage, } from './email-auth';
|
|
19
19
|
export { signToken, verifyToken, getAuthCookieConfig, getClearAuthCookieConfig, } from './jwt';
|
|
20
20
|
export { createAuthMiddleware } from './middleware';
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpG,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,UAAU,EAEV,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Server-side Turnkey client utilities
|
|
3
|
+
*
|
|
4
|
+
* Uses @turnkey/http for lightweight HTTP-only API access (~23MB)
|
|
5
|
+
* instead of @turnkey/sdk-server which pulls in heavy EVM dependencies (~125MB+)
|
|
3
6
|
*/
|
|
4
|
-
import {
|
|
7
|
+
import { TurnkeyClient } from '@turnkey/http';
|
|
5
8
|
export interface TurnkeyClientConfig {
|
|
6
9
|
/** Turnkey API base URL (default: https://api.turnkey.com) */
|
|
7
10
|
apiBaseUrl?: string;
|
|
@@ -13,12 +16,92 @@ export interface TurnkeyClientConfig {
|
|
|
13
16
|
organizationId: string;
|
|
14
17
|
}
|
|
15
18
|
/**
|
|
16
|
-
*
|
|
19
|
+
* Wrapper class that provides the same simplified interface as @turnkey/sdk-server
|
|
20
|
+
* but uses the lightweight @turnkey/http package (~23MB vs ~125MB+)
|
|
17
21
|
*/
|
|
18
|
-
export declare
|
|
22
|
+
export declare class TurnkeyHttpClient {
|
|
23
|
+
private client;
|
|
24
|
+
readonly organizationId: string;
|
|
25
|
+
constructor(client: TurnkeyClient, organizationId: string);
|
|
26
|
+
/**
|
|
27
|
+
* Get the underlying HTTP client for direct API access
|
|
28
|
+
*/
|
|
29
|
+
apiClient(): {
|
|
30
|
+
/** Get sub-organization IDs */
|
|
31
|
+
getSubOrgIds(params: {
|
|
32
|
+
organizationId: string;
|
|
33
|
+
filterType: string;
|
|
34
|
+
filterValue: string;
|
|
35
|
+
}): Promise<{
|
|
36
|
+
organizationIds: string[];
|
|
37
|
+
}>;
|
|
38
|
+
/** Get wallets for an organization */
|
|
39
|
+
getWallets(params: {
|
|
40
|
+
organizationId: string;
|
|
41
|
+
}): Promise<{
|
|
42
|
+
wallets: import("@turnkey/http").TurnkeyApiTypes["v1Wallet"][];
|
|
43
|
+
}>;
|
|
44
|
+
/** Create a sub-organization with wallet */
|
|
45
|
+
createSubOrganization(params: {
|
|
46
|
+
subOrganizationName: string;
|
|
47
|
+
rootUsers: Array<{
|
|
48
|
+
userName: string;
|
|
49
|
+
userEmail: string;
|
|
50
|
+
apiKeys: unknown[];
|
|
51
|
+
authenticators: unknown[];
|
|
52
|
+
oauthProviders: unknown[];
|
|
53
|
+
}>;
|
|
54
|
+
rootQuorumThreshold: number;
|
|
55
|
+
wallet: {
|
|
56
|
+
walletName: string;
|
|
57
|
+
accounts: Array<{
|
|
58
|
+
curve: string;
|
|
59
|
+
pathFormat: string;
|
|
60
|
+
path: string;
|
|
61
|
+
addressFormat: string;
|
|
62
|
+
}>;
|
|
63
|
+
};
|
|
64
|
+
}): Promise<{
|
|
65
|
+
activity: import("@turnkey/http").TurnkeyApiTypes["v1Activity"];
|
|
66
|
+
}>;
|
|
67
|
+
/** Initialize OTP */
|
|
68
|
+
initOtp(params: {
|
|
69
|
+
otpType: string;
|
|
70
|
+
contact: string;
|
|
71
|
+
userIdentifier: string;
|
|
72
|
+
appName: string;
|
|
73
|
+
otpLength: number;
|
|
74
|
+
alphanumeric: boolean;
|
|
75
|
+
}): Promise<{
|
|
76
|
+
otpId: string | undefined;
|
|
77
|
+
}>;
|
|
78
|
+
/** Verify OTP */
|
|
79
|
+
verifyOtp(params: {
|
|
80
|
+
otpId: string;
|
|
81
|
+
otpCode: string;
|
|
82
|
+
expirationSeconds: string;
|
|
83
|
+
}): Promise<{
|
|
84
|
+
verificationToken: string | undefined;
|
|
85
|
+
}>;
|
|
86
|
+
/** Sign raw payload */
|
|
87
|
+
signRawPayload(params: {
|
|
88
|
+
organizationId: string;
|
|
89
|
+
signWith: string;
|
|
90
|
+
payload: string;
|
|
91
|
+
encoding: string;
|
|
92
|
+
hashFunction: string;
|
|
93
|
+
}): Promise<{
|
|
94
|
+
activity: import("@turnkey/http").TurnkeyApiTypes["v1Activity"];
|
|
95
|
+
}>;
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Create a Turnkey server client using the lightweight HTTP package
|
|
100
|
+
*/
|
|
101
|
+
export declare function createTurnkeyClient(config?: Partial<TurnkeyClientConfig>): TurnkeyHttpClient;
|
|
19
102
|
/**
|
|
20
103
|
* Get or create a Turnkey sub-organization for a user
|
|
21
104
|
* Creates sub-org with email-only root user and required wallet accounts
|
|
22
105
|
*/
|
|
23
|
-
export declare function getOrCreateTurnkeySubOrg(email: string, turnkeyClient:
|
|
106
|
+
export declare function getOrCreateTurnkeySubOrg(email: string, turnkeyClient: TurnkeyHttpClient): Promise<string>;
|
|
24
107
|
//# sourceMappingURL=turnkey-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turnkey-client.d.ts","sourceRoot":"","sources":["../../src/server/turnkey-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"turnkey-client.d.ts","sourceRoot":"","sources":["../../src/server/turnkey-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG9C,MAAM,WAAW,mBAAmB;IAClC,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,8BAA8B;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAgB;IAC9B,SAAgB,cAAc,EAAE,MAAM,CAAC;gBAE3B,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM;IAKzD;;OAEG;IACH,SAAS;QAGL,+BAA+B;6BACJ;YACzB,cAAc,EAAE,MAAM,CAAC;YACvB,UAAU,EAAE,MAAM,CAAC;YACnB,WAAW,EAAE,MAAM,CAAC;SACrB;;;QASD,sCAAsC;2BACb;YAAE,cAAc,EAAE,MAAM,CAAA;SAAE;;;QAOnD,4CAA4C;sCACR;YAClC,mBAAmB,EAAE,MAAM,CAAC;YAC5B,SAAS,EAAE,KAAK,CAAC;gBACf,QAAQ,EAAE,MAAM,CAAC;gBACjB,SAAS,EAAE,MAAM,CAAC;gBAClB,OAAO,EAAE,OAAO,EAAE,CAAC;gBACnB,cAAc,EAAE,OAAO,EAAE,CAAC;gBAC1B,cAAc,EAAE,OAAO,EAAE,CAAC;aAC3B,CAAC,CAAC;YACH,mBAAmB,EAAE,MAAM,CAAC;YAC5B,MAAM,EAAE;gBACN,UAAU,EAAE,MAAM,CAAC;gBACnB,QAAQ,EAAE,KAAK,CAAC;oBACd,KAAK,EAAE,MAAM,CAAC;oBACd,UAAU,EAAE,MAAM,CAAC;oBACnB,IAAI,EAAE,MAAM,CAAC;oBACb,aAAa,EAAE,MAAM,CAAC;iBACvB,CAAC,CAAC;aACJ,CAAC;SACH;;;QA6BD,qBAAqB;wBACC;YACpB,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,cAAc,EAAE,MAAM,CAAC;YACvB,OAAO,EAAE,MAAM,CAAC;YAChB,SAAS,EAAE,MAAM,CAAC;YAClB,YAAY,EAAE,OAAO,CAAC;SACvB;;;QAoBD,iBAAiB;0BACO;YACtB,KAAK,EAAE,MAAM,CAAC;YACd,OAAO,EAAE,MAAM,CAAC;YAChB,iBAAiB,EAAE,MAAM,CAAC;SAC3B;;;QAiBD,uBAAuB;+BACM;YAC3B,cAAc,EAAE,MAAM,CAAC;YACvB,QAAQ,EAAE,MAAM,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,QAAQ,EAAE,MAAM,CAAC;YACjB,YAAY,EAAE,MAAM,CAAC;SACtB;;;;CAgBN;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,iBAAiB,CA4B5F;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,iBAAiB,GAC/B,OAAO,CAAC,MAAM,CAAC,CAkGjB"}
|
|
@@ -1,9 +1,130 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Server-side Turnkey client utilities
|
|
3
|
+
*
|
|
4
|
+
* Uses @turnkey/http for lightweight HTTP-only API access (~23MB)
|
|
5
|
+
* instead of @turnkey/sdk-server which pulls in heavy EVM dependencies (~125MB+)
|
|
3
6
|
*/
|
|
4
|
-
import {
|
|
7
|
+
import { TurnkeyClient } from '@turnkey/http';
|
|
8
|
+
import { ApiKeyStamper } from '@turnkey/api-key-stamper';
|
|
5
9
|
/**
|
|
6
|
-
*
|
|
10
|
+
* Wrapper class that provides the same simplified interface as @turnkey/sdk-server
|
|
11
|
+
* but uses the lightweight @turnkey/http package (~23MB vs ~125MB+)
|
|
12
|
+
*/
|
|
13
|
+
export class TurnkeyHttpClient {
|
|
14
|
+
client;
|
|
15
|
+
organizationId;
|
|
16
|
+
constructor(client, organizationId) {
|
|
17
|
+
this.client = client;
|
|
18
|
+
this.organizationId = organizationId;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get the underlying HTTP client for direct API access
|
|
22
|
+
*/
|
|
23
|
+
apiClient() {
|
|
24
|
+
const self = this;
|
|
25
|
+
return {
|
|
26
|
+
/** Get sub-organization IDs */
|
|
27
|
+
async getSubOrgIds(params) {
|
|
28
|
+
const result = await self.client.getSubOrgIds({
|
|
29
|
+
organizationId: params.organizationId,
|
|
30
|
+
filterType: params.filterType,
|
|
31
|
+
filterValue: params.filterValue,
|
|
32
|
+
});
|
|
33
|
+
return result;
|
|
34
|
+
},
|
|
35
|
+
/** Get wallets for an organization */
|
|
36
|
+
async getWallets(params) {
|
|
37
|
+
const result = await self.client.getWallets({
|
|
38
|
+
organizationId: params.organizationId,
|
|
39
|
+
});
|
|
40
|
+
return result;
|
|
41
|
+
},
|
|
42
|
+
/** Create a sub-organization with wallet */
|
|
43
|
+
async createSubOrganization(params) {
|
|
44
|
+
const result = await self.client.createSubOrganization({
|
|
45
|
+
type: 'ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V7',
|
|
46
|
+
timestampMs: Date.now().toString(),
|
|
47
|
+
organizationId: self.organizationId,
|
|
48
|
+
parameters: {
|
|
49
|
+
subOrganizationName: params.subOrganizationName,
|
|
50
|
+
rootUsers: params.rootUsers.map(user => ({
|
|
51
|
+
userName: user.userName,
|
|
52
|
+
userEmail: user.userEmail,
|
|
53
|
+
apiKeys: user.apiKeys,
|
|
54
|
+
authenticators: user.authenticators,
|
|
55
|
+
oauthProviders: user.oauthProviders,
|
|
56
|
+
})),
|
|
57
|
+
rootQuorumThreshold: params.rootQuorumThreshold,
|
|
58
|
+
wallet: {
|
|
59
|
+
walletName: params.wallet.walletName,
|
|
60
|
+
accounts: params.wallet.accounts.map(acc => ({
|
|
61
|
+
curve: acc.curve,
|
|
62
|
+
pathFormat: acc.pathFormat,
|
|
63
|
+
path: acc.path,
|
|
64
|
+
addressFormat: acc.addressFormat,
|
|
65
|
+
})),
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
return result;
|
|
70
|
+
},
|
|
71
|
+
/** Initialize OTP */
|
|
72
|
+
async initOtp(params) {
|
|
73
|
+
const result = await self.client.initOtp({
|
|
74
|
+
type: 'ACTIVITY_TYPE_INIT_OTP_V2',
|
|
75
|
+
timestampMs: Date.now().toString(),
|
|
76
|
+
organizationId: self.organizationId,
|
|
77
|
+
parameters: {
|
|
78
|
+
otpType: params.otpType,
|
|
79
|
+
contact: params.contact,
|
|
80
|
+
userIdentifier: params.userIdentifier,
|
|
81
|
+
appName: params.appName,
|
|
82
|
+
otpLength: params.otpLength,
|
|
83
|
+
alphanumeric: params.alphanumeric,
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
// Extract otpId from the activity result
|
|
87
|
+
const activity = result.activity;
|
|
88
|
+
const initResult = activity?.result?.initOtpResult;
|
|
89
|
+
return { otpId: initResult?.otpId };
|
|
90
|
+
},
|
|
91
|
+
/** Verify OTP */
|
|
92
|
+
async verifyOtp(params) {
|
|
93
|
+
const result = await self.client.verifyOtp({
|
|
94
|
+
type: 'ACTIVITY_TYPE_VERIFY_OTP',
|
|
95
|
+
timestampMs: Date.now().toString(),
|
|
96
|
+
organizationId: self.organizationId,
|
|
97
|
+
parameters: {
|
|
98
|
+
otpId: params.otpId,
|
|
99
|
+
otpCode: params.otpCode,
|
|
100
|
+
expirationSeconds: params.expirationSeconds,
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
// Extract verification token from activity result
|
|
104
|
+
const activity = result.activity;
|
|
105
|
+
const verifyResult = activity?.result?.verifyOtpResult;
|
|
106
|
+
return { verificationToken: verifyResult?.verificationToken };
|
|
107
|
+
},
|
|
108
|
+
/** Sign raw payload */
|
|
109
|
+
async signRawPayload(params) {
|
|
110
|
+
const result = await self.client.signRawPayload({
|
|
111
|
+
type: 'ACTIVITY_TYPE_SIGN_RAW_PAYLOAD_V2',
|
|
112
|
+
timestampMs: Date.now().toString(),
|
|
113
|
+
organizationId: params.organizationId,
|
|
114
|
+
parameters: {
|
|
115
|
+
signWith: params.signWith,
|
|
116
|
+
payload: params.payload,
|
|
117
|
+
encoding: params.encoding,
|
|
118
|
+
hashFunction: params.hashFunction,
|
|
119
|
+
},
|
|
120
|
+
});
|
|
121
|
+
return result;
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Create a Turnkey server client using the lightweight HTTP package
|
|
7
128
|
*/
|
|
8
129
|
export function createTurnkeyClient(config) {
|
|
9
130
|
const apiPublicKey = config?.apiPublicKey ?? process.env.TURNKEY_API_PUBLIC_KEY;
|
|
@@ -18,12 +139,14 @@ export function createTurnkeyClient(config) {
|
|
|
18
139
|
if (!organizationId) {
|
|
19
140
|
throw new Error('TURNKEY_ORGANIZATION_ID is required');
|
|
20
141
|
}
|
|
21
|
-
|
|
22
|
-
|
|
142
|
+
// Create API key stamper for request signing
|
|
143
|
+
const stamper = new ApiKeyStamper({
|
|
23
144
|
apiPublicKey,
|
|
24
145
|
apiPrivateKey,
|
|
25
|
-
defaultOrganizationId: organizationId,
|
|
26
146
|
});
|
|
147
|
+
// Create HTTP client
|
|
148
|
+
const client = new TurnkeyClient({ baseUrl: config?.apiBaseUrl ?? 'https://api.turnkey.com' }, stamper);
|
|
149
|
+
return new TurnkeyHttpClient(client, organizationId);
|
|
27
150
|
}
|
|
28
151
|
/**
|
|
29
152
|
* Get or create a Turnkey sub-organization for a user
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turnkey-client.js","sourceRoot":"","sources":["../../src/server/turnkey-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"turnkey-client.js","sourceRoot":"","sources":["../../src/server/turnkey-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Provides an ExternalSigner implementation that works with Turnkey-managed
|
|
5
5
|
* keys for use with the Originals SDK's DID creation and signing operations.
|
|
6
6
|
*/
|
|
7
|
-
import { Turnkey } from '@turnkey/sdk-server';
|
|
8
7
|
import { ExternalSigner, ExternalVerifier } from '@originals/sdk';
|
|
8
|
+
import type { TurnkeyHttpClient } from './turnkey-client';
|
|
9
9
|
/**
|
|
10
10
|
* Turnkey-based signer for use with Originals SDK
|
|
11
11
|
* Implements the ExternalSigner and ExternalVerifier interfaces
|
|
@@ -16,7 +16,7 @@ export declare class TurnkeyWebVHSigner implements ExternalSigner, ExternalVerif
|
|
|
16
16
|
private publicKeyMultibase;
|
|
17
17
|
private turnkeyClient;
|
|
18
18
|
private verificationMethodId;
|
|
19
|
-
constructor(subOrgId: string, keyId: string, publicKeyMultibase: string, turnkeyClient:
|
|
19
|
+
constructor(subOrgId: string, keyId: string, publicKeyMultibase: string, turnkeyClient: TurnkeyHttpClient, verificationMethodId: string);
|
|
20
20
|
/**
|
|
21
21
|
* Sign data using Turnkey's API
|
|
22
22
|
*/
|
|
@@ -36,5 +36,5 @@ export declare class TurnkeyWebVHSigner implements ExternalSigner, ExternalVerif
|
|
|
36
36
|
/**
|
|
37
37
|
* Create a Turnkey signer for use with the Originals SDK
|
|
38
38
|
*/
|
|
39
|
-
export declare function createTurnkeySigner(subOrgId: string, keyId: string, turnkeyClient:
|
|
39
|
+
export declare function createTurnkeySigner(subOrgId: string, keyId: string, turnkeyClient: TurnkeyHttpClient, verificationMethodId: string, publicKeyMultibase: string): TurnkeyWebVHSigner;
|
|
40
40
|
//# sourceMappingURL=turnkey-signer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turnkey-signer.d.ts","sourceRoot":"","sources":["../../src/server/turnkey-signer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"turnkey-signer.d.ts","sourceRoot":"","sources":["../../src/server/turnkey-signer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAA0B,MAAM,gBAAgB,CAAC;AAI1F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAqB1D;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,cAAc,EAAE,gBAAgB;IACzE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,oBAAoB,CAAS;gBAGnC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,kBAAkB,EAAE,MAAM,EAC1B,aAAa,EAAE,iBAAiB,EAChC,oBAAoB,EAAE,MAAM;IAS9B;;OAEG;IACG,IAAI,CAAC,KAAK,EAAE;QAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAgDnC;;OAEG;IACG,MAAM,CACV,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC;IAwBnB,uBAAuB,IAAI,MAAM;IAIjC,qBAAqB,IAAI,MAAM;CAGhC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,iBAAiB,EAChC,oBAAoB,EAAE,MAAM,EAC5B,kBAAkB,EAAE,MAAM,GACzB,kBAAkB,CAQpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turnkey-signer.js","sourceRoot":"","sources":["../../src/server/turnkey-signer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"turnkey-signer.js","sourceRoot":"","sources":["../../src/server/turnkey-signer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@originals/auth",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Turnkey-based authentication for the Originals Protocol",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -47,8 +47,8 @@
|
|
|
47
47
|
"access": "public"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@turnkey/
|
|
51
|
-
"@turnkey/
|
|
50
|
+
"@turnkey/http": "^3.16.0",
|
|
51
|
+
"@turnkey/api-key-stamper": "^0.5.0",
|
|
52
52
|
"@originals/sdk": "^1.4.4",
|
|
53
53
|
"jsonwebtoken": "^9.0.2",
|
|
54
54
|
"@noble/hashes": "^2.0.1",
|
|
@@ -68,11 +68,15 @@
|
|
|
68
68
|
"typescript-eslint": "^8.0.0"
|
|
69
69
|
},
|
|
70
70
|
"peerDependencies": {
|
|
71
|
-
"express": ">=4.0.0"
|
|
71
|
+
"express": ">=4.0.0",
|
|
72
|
+
"@turnkey/core": ">=1.0.0"
|
|
72
73
|
},
|
|
73
74
|
"peerDependenciesMeta": {
|
|
74
75
|
"express": {
|
|
75
76
|
"optional": true
|
|
77
|
+
},
|
|
78
|
+
"@turnkey/core": {
|
|
79
|
+
"optional": true
|
|
76
80
|
}
|
|
77
81
|
},
|
|
78
82
|
"engines": {
|
package/src/server/email-auth.ts
CHANGED
|
@@ -3,11 +3,10 @@
|
|
|
3
3
|
* Implements email-based authentication using Turnkey's OTP flow
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { Turnkey } from '@turnkey/sdk-server';
|
|
7
6
|
import { sha256 } from '@noble/hashes/sha2.js';
|
|
8
7
|
import { bytesToHex } from '@noble/hashes/utils.js';
|
|
9
8
|
import type { EmailAuthSession, InitiateAuthResult, VerifyAuthResult } from '../types';
|
|
10
|
-
import { getOrCreateTurnkeySubOrg } from './turnkey-client';
|
|
9
|
+
import { getOrCreateTurnkeySubOrg, type TurnkeyHttpClient } from './turnkey-client';
|
|
11
10
|
|
|
12
11
|
// Session timeout (15 minutes to match Turnkey OTP)
|
|
13
12
|
const SESSION_TIMEOUT = 15 * 60 * 1000;
|
|
@@ -78,7 +77,7 @@ function generateSessionId(): string {
|
|
|
78
77
|
*/
|
|
79
78
|
export async function initiateEmailAuth(
|
|
80
79
|
email: string,
|
|
81
|
-
turnkeyClient:
|
|
80
|
+
turnkeyClient: TurnkeyHttpClient,
|
|
82
81
|
sessionStorage?: SessionStorage
|
|
83
82
|
): Promise<InitiateAuthResult> {
|
|
84
83
|
const storage = sessionStorage ?? getDefaultSessionStorage();
|
|
@@ -147,7 +146,7 @@ export async function initiateEmailAuth(
|
|
|
147
146
|
export async function verifyEmailAuth(
|
|
148
147
|
sessionId: string,
|
|
149
148
|
code: string,
|
|
150
|
-
turnkeyClient:
|
|
149
|
+
turnkeyClient: TurnkeyHttpClient,
|
|
151
150
|
sessionStorage?: SessionStorage
|
|
152
151
|
): Promise<VerifyAuthResult> {
|
|
153
152
|
const storage = sessionStorage ?? getDefaultSessionStorage();
|
package/src/server/index.ts
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
export { createTurnkeyClient, getOrCreateTurnkeySubOrg } from './turnkey-client';
|
|
18
|
+
export { createTurnkeyClient, getOrCreateTurnkeySubOrg, TurnkeyHttpClient } from './turnkey-client';
|
|
19
19
|
export {
|
|
20
20
|
initiateEmailAuth,
|
|
21
21
|
verifyEmailAuth,
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Server-side Turnkey client utilities
|
|
3
|
+
*
|
|
4
|
+
* Uses @turnkey/http for lightweight HTTP-only API access (~23MB)
|
|
5
|
+
* instead of @turnkey/sdk-server which pulls in heavy EVM dependencies (~125MB+)
|
|
3
6
|
*/
|
|
4
7
|
|
|
5
|
-
import {
|
|
8
|
+
import { TurnkeyClient } from '@turnkey/http';
|
|
9
|
+
import { ApiKeyStamper } from '@turnkey/api-key-stamper';
|
|
6
10
|
|
|
7
11
|
export interface TurnkeyClientConfig {
|
|
8
12
|
/** Turnkey API base URL (default: https://api.turnkey.com) */
|
|
@@ -16,9 +20,174 @@ export interface TurnkeyClientConfig {
|
|
|
16
20
|
}
|
|
17
21
|
|
|
18
22
|
/**
|
|
19
|
-
*
|
|
23
|
+
* Wrapper class that provides the same simplified interface as @turnkey/sdk-server
|
|
24
|
+
* but uses the lightweight @turnkey/http package (~23MB vs ~125MB+)
|
|
20
25
|
*/
|
|
21
|
-
export
|
|
26
|
+
export class TurnkeyHttpClient {
|
|
27
|
+
private client: TurnkeyClient;
|
|
28
|
+
public readonly organizationId: string;
|
|
29
|
+
|
|
30
|
+
constructor(client: TurnkeyClient, organizationId: string) {
|
|
31
|
+
this.client = client;
|
|
32
|
+
this.organizationId = organizationId;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Get the underlying HTTP client for direct API access
|
|
37
|
+
*/
|
|
38
|
+
apiClient() {
|
|
39
|
+
const self = this;
|
|
40
|
+
return {
|
|
41
|
+
/** Get sub-organization IDs */
|
|
42
|
+
async getSubOrgIds(params: {
|
|
43
|
+
organizationId: string;
|
|
44
|
+
filterType: string;
|
|
45
|
+
filterValue: string;
|
|
46
|
+
}) {
|
|
47
|
+
const result = await self.client.getSubOrgIds({
|
|
48
|
+
organizationId: params.organizationId,
|
|
49
|
+
filterType: params.filterType,
|
|
50
|
+
filterValue: params.filterValue,
|
|
51
|
+
});
|
|
52
|
+
return result;
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
/** Get wallets for an organization */
|
|
56
|
+
async getWallets(params: { organizationId: string }) {
|
|
57
|
+
const result = await self.client.getWallets({
|
|
58
|
+
organizationId: params.organizationId,
|
|
59
|
+
});
|
|
60
|
+
return result;
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
/** Create a sub-organization with wallet */
|
|
64
|
+
async createSubOrganization(params: {
|
|
65
|
+
subOrganizationName: string;
|
|
66
|
+
rootUsers: Array<{
|
|
67
|
+
userName: string;
|
|
68
|
+
userEmail: string;
|
|
69
|
+
apiKeys: unknown[];
|
|
70
|
+
authenticators: unknown[];
|
|
71
|
+
oauthProviders: unknown[];
|
|
72
|
+
}>;
|
|
73
|
+
rootQuorumThreshold: number;
|
|
74
|
+
wallet: {
|
|
75
|
+
walletName: string;
|
|
76
|
+
accounts: Array<{
|
|
77
|
+
curve: string;
|
|
78
|
+
pathFormat: string;
|
|
79
|
+
path: string;
|
|
80
|
+
addressFormat: string;
|
|
81
|
+
}>;
|
|
82
|
+
};
|
|
83
|
+
}) {
|
|
84
|
+
const result = await self.client.createSubOrganization({
|
|
85
|
+
type: 'ACTIVITY_TYPE_CREATE_SUB_ORGANIZATION_V7',
|
|
86
|
+
timestampMs: Date.now().toString(),
|
|
87
|
+
organizationId: self.organizationId,
|
|
88
|
+
parameters: {
|
|
89
|
+
subOrganizationName: params.subOrganizationName,
|
|
90
|
+
rootUsers: params.rootUsers.map(user => ({
|
|
91
|
+
userName: user.userName,
|
|
92
|
+
userEmail: user.userEmail,
|
|
93
|
+
apiKeys: user.apiKeys as [],
|
|
94
|
+
authenticators: user.authenticators as [],
|
|
95
|
+
oauthProviders: user.oauthProviders as [],
|
|
96
|
+
})),
|
|
97
|
+
rootQuorumThreshold: params.rootQuorumThreshold,
|
|
98
|
+
wallet: {
|
|
99
|
+
walletName: params.wallet.walletName,
|
|
100
|
+
accounts: params.wallet.accounts.map(acc => ({
|
|
101
|
+
curve: acc.curve as 'CURVE_SECP256K1' | 'CURVE_ED25519',
|
|
102
|
+
pathFormat: acc.pathFormat as 'PATH_FORMAT_BIP32',
|
|
103
|
+
path: acc.path,
|
|
104
|
+
addressFormat: acc.addressFormat as 'ADDRESS_FORMAT_ETHEREUM' | 'ADDRESS_FORMAT_SOLANA',
|
|
105
|
+
})),
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
return result;
|
|
110
|
+
},
|
|
111
|
+
|
|
112
|
+
/** Initialize OTP */
|
|
113
|
+
async initOtp(params: {
|
|
114
|
+
otpType: string;
|
|
115
|
+
contact: string;
|
|
116
|
+
userIdentifier: string;
|
|
117
|
+
appName: string;
|
|
118
|
+
otpLength: number;
|
|
119
|
+
alphanumeric: boolean;
|
|
120
|
+
}) {
|
|
121
|
+
const result = await self.client.initOtp({
|
|
122
|
+
type: 'ACTIVITY_TYPE_INIT_OTP_V2',
|
|
123
|
+
timestampMs: Date.now().toString(),
|
|
124
|
+
organizationId: self.organizationId,
|
|
125
|
+
parameters: {
|
|
126
|
+
otpType: params.otpType as 'OTP_TYPE_EMAIL' | 'OTP_TYPE_SMS',
|
|
127
|
+
contact: params.contact,
|
|
128
|
+
userIdentifier: params.userIdentifier,
|
|
129
|
+
appName: params.appName,
|
|
130
|
+
otpLength: params.otpLength,
|
|
131
|
+
alphanumeric: params.alphanumeric,
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
// Extract otpId from the activity result
|
|
135
|
+
const activity = result.activity;
|
|
136
|
+
const initResult = (activity?.result as { initOtpResult?: { otpId?: string } })?.initOtpResult;
|
|
137
|
+
return { otpId: initResult?.otpId };
|
|
138
|
+
},
|
|
139
|
+
|
|
140
|
+
/** Verify OTP */
|
|
141
|
+
async verifyOtp(params: {
|
|
142
|
+
otpId: string;
|
|
143
|
+
otpCode: string;
|
|
144
|
+
expirationSeconds: string;
|
|
145
|
+
}) {
|
|
146
|
+
const result = await self.client.verifyOtp({
|
|
147
|
+
type: 'ACTIVITY_TYPE_VERIFY_OTP',
|
|
148
|
+
timestampMs: Date.now().toString(),
|
|
149
|
+
organizationId: self.organizationId,
|
|
150
|
+
parameters: {
|
|
151
|
+
otpId: params.otpId,
|
|
152
|
+
otpCode: params.otpCode,
|
|
153
|
+
expirationSeconds: params.expirationSeconds,
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
// Extract verification token from activity result
|
|
157
|
+
const activity = result.activity;
|
|
158
|
+
const verifyResult = (activity?.result as { verifyOtpResult?: { verificationToken?: string } })?.verifyOtpResult;
|
|
159
|
+
return { verificationToken: verifyResult?.verificationToken };
|
|
160
|
+
},
|
|
161
|
+
|
|
162
|
+
/** Sign raw payload */
|
|
163
|
+
async signRawPayload(params: {
|
|
164
|
+
organizationId: string;
|
|
165
|
+
signWith: string;
|
|
166
|
+
payload: string;
|
|
167
|
+
encoding: string;
|
|
168
|
+
hashFunction: string;
|
|
169
|
+
}) {
|
|
170
|
+
const result = await self.client.signRawPayload({
|
|
171
|
+
type: 'ACTIVITY_TYPE_SIGN_RAW_PAYLOAD_V2',
|
|
172
|
+
timestampMs: Date.now().toString(),
|
|
173
|
+
organizationId: params.organizationId,
|
|
174
|
+
parameters: {
|
|
175
|
+
signWith: params.signWith,
|
|
176
|
+
payload: params.payload,
|
|
177
|
+
encoding: params.encoding as 'PAYLOAD_ENCODING_HEXADECIMAL',
|
|
178
|
+
hashFunction: params.hashFunction as 'HASH_FUNCTION_NO_OP',
|
|
179
|
+
},
|
|
180
|
+
});
|
|
181
|
+
return result;
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Create a Turnkey server client using the lightweight HTTP package
|
|
189
|
+
*/
|
|
190
|
+
export function createTurnkeyClient(config?: Partial<TurnkeyClientConfig>): TurnkeyHttpClient {
|
|
22
191
|
const apiPublicKey = config?.apiPublicKey ?? process.env.TURNKEY_API_PUBLIC_KEY;
|
|
23
192
|
const apiPrivateKey = config?.apiPrivateKey ?? process.env.TURNKEY_API_PRIVATE_KEY;
|
|
24
193
|
const organizationId = config?.organizationId ?? process.env.TURNKEY_ORGANIZATION_ID;
|
|
@@ -33,12 +202,19 @@ export function createTurnkeyClient(config?: Partial<TurnkeyClientConfig>): Turn
|
|
|
33
202
|
throw new Error('TURNKEY_ORGANIZATION_ID is required');
|
|
34
203
|
}
|
|
35
204
|
|
|
36
|
-
|
|
37
|
-
|
|
205
|
+
// Create API key stamper for request signing
|
|
206
|
+
const stamper = new ApiKeyStamper({
|
|
38
207
|
apiPublicKey,
|
|
39
208
|
apiPrivateKey,
|
|
40
|
-
defaultOrganizationId: organizationId,
|
|
41
209
|
});
|
|
210
|
+
|
|
211
|
+
// Create HTTP client
|
|
212
|
+
const client = new TurnkeyClient(
|
|
213
|
+
{ baseUrl: config?.apiBaseUrl ?? 'https://api.turnkey.com' },
|
|
214
|
+
stamper
|
|
215
|
+
);
|
|
216
|
+
|
|
217
|
+
return new TurnkeyHttpClient(client, organizationId);
|
|
42
218
|
}
|
|
43
219
|
|
|
44
220
|
/**
|
|
@@ -47,7 +223,7 @@ export function createTurnkeyClient(config?: Partial<TurnkeyClientConfig>): Turn
|
|
|
47
223
|
*/
|
|
48
224
|
export async function getOrCreateTurnkeySubOrg(
|
|
49
225
|
email: string,
|
|
50
|
-
turnkeyClient:
|
|
226
|
+
turnkeyClient: TurnkeyHttpClient
|
|
51
227
|
): Promise<string> {
|
|
52
228
|
const organizationId = process.env.TURNKEY_ORGANIZATION_ID;
|
|
53
229
|
if (!organizationId) {
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
* keys for use with the Originals SDK's DID creation and signing operations.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { Turnkey } from '@turnkey/sdk-server';
|
|
9
8
|
import { ExternalSigner, ExternalVerifier, multikey, OriginalsSDK } from '@originals/sdk';
|
|
10
9
|
import { sha512 } from '@noble/hashes/sha2.js';
|
|
11
10
|
import { concatBytes, bytesToHex } from '@noble/hashes/utils.js';
|
|
12
11
|
import * as ed25519 from '@noble/ed25519';
|
|
12
|
+
import type { TurnkeyHttpClient } from './turnkey-client';
|
|
13
13
|
|
|
14
14
|
// Configure @noble/ed25519 with required SHA-512 function
|
|
15
15
|
const sha512Fn = (...msgs: Uint8Array[]): Uint8Array => sha512(concatBytes(...msgs));
|
|
@@ -38,14 +38,14 @@ export class TurnkeyWebVHSigner implements ExternalSigner, ExternalVerifier {
|
|
|
38
38
|
private subOrgId: string;
|
|
39
39
|
private keyId: string;
|
|
40
40
|
private publicKeyMultibase: string;
|
|
41
|
-
private turnkeyClient:
|
|
41
|
+
private turnkeyClient: TurnkeyHttpClient;
|
|
42
42
|
private verificationMethodId: string;
|
|
43
43
|
|
|
44
44
|
constructor(
|
|
45
45
|
subOrgId: string,
|
|
46
46
|
keyId: string,
|
|
47
47
|
publicKeyMultibase: string,
|
|
48
|
-
turnkeyClient:
|
|
48
|
+
turnkeyClient: TurnkeyHttpClient,
|
|
49
49
|
verificationMethodId: string
|
|
50
50
|
) {
|
|
51
51
|
this.subOrgId = subOrgId;
|
|
@@ -155,7 +155,7 @@ export class TurnkeyWebVHSigner implements ExternalSigner, ExternalVerifier {
|
|
|
155
155
|
export function createTurnkeySigner(
|
|
156
156
|
subOrgId: string,
|
|
157
157
|
keyId: string,
|
|
158
|
-
turnkeyClient:
|
|
158
|
+
turnkeyClient: TurnkeyHttpClient,
|
|
159
159
|
verificationMethodId: string,
|
|
160
160
|
publicKeyMultibase: string
|
|
161
161
|
): TurnkeyWebVHSigner {
|