@kynesyslabs/demosdk 2.7.0 → 2.7.1

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.
@@ -5,10 +5,11 @@
5
5
  * Enables dApps to verify user ownership of GitHub/Discord accounts
6
6
  * with DAHR attestation.
7
7
  */
8
- import type { KeyServerClientConfig, OAuthService, OAuthInitOptions, OAuthInitResult, OAuthPollResult, OAuthVerifyOptions, OAuthVerificationResult } from "./types";
8
+ import type { KeyServerClientConfig, OAuthService, OAuthInitOptions, OAuthInitResult, OAuthPollResult, OAuthVerifyOptions, OAuthVerificationResult, WalletBinding } from "./types";
9
9
  export declare class KeyServerClient {
10
10
  private readonly endpoint;
11
11
  private readonly nodePubKey;
12
+ private readonly defaultWalletAddress?;
12
13
  constructor(config: KeyServerClientConfig);
13
14
  /**
14
15
  * Get list of available OAuth providers
@@ -30,18 +31,20 @@ export declare class KeyServerClient {
30
31
  * Poll for OAuth verification result
31
32
  *
32
33
  * @param state - State identifier from initiateOAuth
34
+ * @param walletBinding - Optional wallet binding with signature proving ownership
33
35
  * @returns Current status of the OAuth flow
34
36
  * @throws OAuthError if polling fails
35
37
  */
36
- pollOAuth(state: string): Promise<OAuthPollResult>;
38
+ pollOAuth(state: string, walletBinding?: WalletBinding): Promise<OAuthPollResult>;
37
39
  /**
38
40
  * Convenience method: initiate OAuth and wait for completion
39
41
  *
40
42
  * This method handles the full OAuth flow:
41
43
  * 1. Initiates the OAuth flow
42
44
  * 2. Calls onAuthUrl callback for dApp to display the URL
43
- * 3. Polls until completion, timeout, or failure
44
- * 4. Returns the verified user info and attestation
45
+ * 3. Resolves wallet binding (if provided as function, calls with state)
46
+ * 4. Polls until completion, timeout, or failure
47
+ * 5. Returns the verified user info and attestation
45
48
  *
46
49
  * @param service - OAuth provider ("github" or "discord")
47
50
  * @param options - Configuration including callbacks
@@ -16,6 +16,7 @@ class KeyServerClient {
16
16
  // Normalize endpoint (remove trailing slash)
17
17
  this.endpoint = config.endpoint.replace(/\/$/, "");
18
18
  this.nodePubKey = config.nodePubKey;
19
+ this.defaultWalletAddress = config.defaultWalletAddress;
19
20
  }
20
21
  /**
21
22
  * Get list of available OAuth providers
@@ -61,15 +62,17 @@ class KeyServerClient {
61
62
  * Poll for OAuth verification result
62
63
  *
63
64
  * @param state - State identifier from initiateOAuth
65
+ * @param walletBinding - Optional wallet binding with signature proving ownership
64
66
  * @returns Current status of the OAuth flow
65
67
  * @throws OAuthError if polling fails
66
68
  */
67
- async pollOAuth(state) {
69
+ async pollOAuth(state, walletBinding) {
68
70
  const response = await this.fetch("/oauth/poll", {
69
71
  method: "POST",
70
72
  body: JSON.stringify({
71
73
  state,
72
74
  nodePubKey: this.nodePubKey,
75
+ walletBinding,
73
76
  }),
74
77
  });
75
78
  return response;
@@ -80,8 +83,9 @@ class KeyServerClient {
80
83
  * This method handles the full OAuth flow:
81
84
  * 1. Initiates the OAuth flow
82
85
  * 2. Calls onAuthUrl callback for dApp to display the URL
83
- * 3. Polls until completion, timeout, or failure
84
- * 4. Returns the verified user info and attestation
86
+ * 3. Resolves wallet binding (if provided as function, calls with state)
87
+ * 4. Polls until completion, timeout, or failure
88
+ * 5. Returns the verified user info and attestation
85
89
  *
86
90
  * @param service - OAuth provider ("github" or "discord")
87
91
  * @param options - Configuration including callbacks
@@ -100,7 +104,18 @@ class KeyServerClient {
100
104
  if (options?.onAuthUrl) {
101
105
  options.onAuthUrl(initResult.authUrl, initResult.state);
102
106
  }
103
- // Step 3: Poll for result
107
+ // Step 3: Resolve wallet binding
108
+ let walletBinding;
109
+ if (options?.walletBinding) {
110
+ if (typeof options.walletBinding === "function") {
111
+ // Call the async function with state to get wallet binding
112
+ walletBinding = await options.walletBinding(initResult.state);
113
+ }
114
+ else {
115
+ walletBinding = options.walletBinding;
116
+ }
117
+ }
118
+ // Step 4: Poll for result
104
119
  const startTime = Date.now();
105
120
  let attempt = 0;
106
121
  while (Date.now() - startTime < timeout) {
@@ -109,7 +124,7 @@ class KeyServerClient {
109
124
  if (attempt > 1) {
110
125
  await this.sleep(pollInterval);
111
126
  }
112
- const pollResult = await this.pollOAuth(initResult.state);
127
+ const pollResult = await this.pollOAuth(initResult.state, walletBinding);
113
128
  // Notify dApp of poll status
114
129
  if (options?.onPoll) {
115
130
  options.onPoll(attempt, pollResult.status);
@@ -1 +1 @@
1
- {"version":3,"file":"KeyServerClient.js","sourceRoot":"","sources":["../../../src/keyserver/KeyServerClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KeyServerClient.js","sourceRoot":"","sources":["../../../src/keyserver/KeyServerClient.ts"],"names":[],"mappings":"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"}
@@ -28,4 +28,4 @@ export { OAuthError } from "./errors";
28
28
  export { verifyAttestation, verifyOAuthAttestation } from "./verification";
29
29
  export type { OAuthErrorCode } from "./errors";
30
30
  export type { VerifyAttestationOptions, AttestationVerificationResult, } from "./verification";
31
- export type { KeyServerClientConfig, OAuthService, OAuthInitOptions, OAuthInitResult, OAuthPollResult, OAuthVerifyOptions, OAuthVerificationResult, OAuthStatus, OAuthUserInfo, DAHRAttestation, OAuthProvidersResponse, } from "./types";
31
+ export type { KeyServerClientConfig, OAuthService, OAuthInitOptions, OAuthInitResult, OAuthPollResult, OAuthVerifyOptions, OAuthVerificationResult, OAuthStatus, OAuthUserInfo, DAHRAttestation, OAuthProvidersResponse, WalletBinding, } from "./types";
@@ -8,6 +8,23 @@
8
8
  * Supported OAuth providers
9
9
  */
10
10
  export type OAuthService = "github" | "discord";
11
+ /**
12
+ * Wallet binding for OAuth verification.
13
+ * Proves ownership of a wallet address during OAuth flow.
14
+ */
15
+ export interface WalletBinding {
16
+ /** The wallet address to bind to this OAuth verification */
17
+ address: string;
18
+ /**
19
+ * Signature proving ownership of the wallet address.
20
+ * The message signed should be: "demos-oauth-bind:{state}" where state is from initiateOAuth.
21
+ * For EVM: personal_sign or eth_sign
22
+ * For Solana: signMessage
23
+ */
24
+ signature: string;
25
+ /** Signature scheme used (for verification on receiving end) */
26
+ signatureType: "evm" | "solana" | "ed25519";
27
+ }
11
28
  /**
12
29
  * Options for initiating an OAuth flow
13
30
  */
@@ -16,6 +33,13 @@ export interface OAuthInitOptions {
16
33
  scopes?: string[];
17
34
  /** Flow timeout in milliseconds (default: 600000 = 10min) */
18
35
  timeout?: number;
36
+ /**
37
+ * Wallet address to associate with this OAuth verification.
38
+ * This address will be included in the DAHR attestation metadata.
39
+ * Overrides defaultWalletAddress from KeyServerClientConfig if both are set.
40
+ * @deprecated Use walletBinding for signed wallet proof instead
41
+ */
42
+ walletAddress?: string;
19
43
  }
20
44
  /**
21
45
  * Result from initiating an OAuth flow
@@ -77,6 +101,12 @@ export interface DAHRAttestation {
77
101
  nodePubKey: string;
78
102
  /** Key Server version */
79
103
  version: string;
104
+ /**
105
+ * Wallet binding included in the attestation.
106
+ * Contains the wallet address and signature proving ownership.
107
+ * The Key Server verifies this signature before including it.
108
+ */
109
+ walletBinding?: WalletBinding;
80
110
  };
81
111
  }
82
112
  /**
@@ -102,7 +132,8 @@ export interface OAuthPollResult {
102
132
  */
103
133
  export interface OAuthVerifyOptions extends OAuthInitOptions {
104
134
  /**
105
- * Called when auth URL is ready - dApp should display this to user
135
+ * Called when auth URL is ready - dApp should display this to user.
136
+ * The state is needed for wallet binding signature.
106
137
  */
107
138
  onAuthUrl?: (authUrl: string, state: string) => void;
108
139
  /**
@@ -113,6 +144,24 @@ export interface OAuthVerifyOptions extends OAuthInitOptions {
113
144
  * Called on each poll attempt (for UI feedback)
114
145
  */
115
146
  onPoll?: (attempt: number, status: OAuthStatus) => void;
147
+ /**
148
+ * Wallet binding with signature proving ownership.
149
+ * The signature message format is: "demos-oauth-bind:{state}"
150
+ * This is called after initiateOAuth to get the state for signing.
151
+ *
152
+ * @example
153
+ * ```typescript
154
+ * const result = await client.verifyOAuth("github", {
155
+ * onAuthUrl: async (authUrl, state) => {
156
+ * // Sign with user's wallet
157
+ * const message = `demos-oauth-bind:${state}`;
158
+ * const signature = await wallet.signMessage(message);
159
+ * return { address: wallet.address, signature, signatureType: "evm" };
160
+ * },
161
+ * });
162
+ * ```
163
+ */
164
+ walletBinding?: WalletBinding | ((state: string) => Promise<WalletBinding>);
116
165
  }
117
166
  /**
118
167
  * Result from the convenience verifyOAuth method
@@ -133,6 +182,11 @@ export interface KeyServerClientConfig {
133
182
  endpoint: string;
134
183
  /** Node's public key (hex-encoded Ed25519) */
135
184
  nodePubKey: string;
185
+ /**
186
+ * Default wallet address to associate with OAuth verifications.
187
+ * Can be overridden per-request via OAuthInitOptions.walletAddress.
188
+ */
189
+ defaultWalletAddress?: string;
136
190
  }
137
191
  /**
138
192
  * Response from GET /oauth/providers
@@ -5,7 +5,7 @@
5
5
  * Allows consuming apps to independently verify that the Key Server
6
6
  * actually performed the OAuth verification.
7
7
  */
8
- import type { DAHRAttestation, OAuthVerificationResult } from "./types";
8
+ import type { DAHRAttestation, OAuthVerificationResult, WalletBinding } from "./types";
9
9
  /**
10
10
  * Options for attestation verification
11
11
  */
@@ -35,6 +35,8 @@ export interface AttestationVerificationResult {
35
35
  keyServerPubKey: string;
36
36
  nodePubKey: string;
37
37
  version: string;
38
+ /** Wallet binding if present in attestation */
39
+ walletBinding?: WalletBinding;
38
40
  };
39
41
  }
40
42
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../src/keyserver/verification.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../src/keyserver/verification.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kynesyslabs/demosdk",
3
- "version": "2.7.0",
3
+ "version": "2.7.1",
4
4
  "description": "Demosdk is a JavaScript/TypeScript SDK that provides a unified interface for interacting with Demos network",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",