ic-siwa 0.1.2 → 0.2.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.
@@ -7,13 +7,17 @@ import type { Principal } from '@dfinity/principal';
7
7
  import type { ActorMethod } from '@dfinity/agent';
8
8
  export interface DebugInfo {
9
9
  'uri': string;
10
+ 'signature_map_count': bigint;
11
+ 'auth_sessions_count': bigint;
10
12
  'domain': string;
11
13
  'delegation_targets_count': bigint;
12
14
  'chain_id': bigint;
13
15
  'allowed_domains': Array<string>;
14
16
  'allowed_domains_count': bigint;
17
+ 'login_sessions_count': bigint;
15
18
  'rate_limit_total': number;
16
19
  'rate_limit_per_address': number;
20
+ 'prepared_delegations_count': bigint;
17
21
  'session_expiration_ns': bigint;
18
22
  'rate_limit_window_seconds': bigint;
19
23
  'delegation_targets': Array<Principal>;
@@ -35,6 +39,7 @@ export interface InitArgs {
35
39
  'delegation_targets': [] | [Array<Principal>];
36
40
  'debug': [] | [boolean];
37
41
  'session_expiration_time': bigint;
42
+ 'login_expiration_time': [] | [bigint];
38
43
  }
39
44
  export interface LoginResponse {
40
45
  'user_principal': Principal;
@@ -72,21 +77,26 @@ export type Result_2 = {
72
77
  'Err': string;
73
78
  };
74
79
  export type Result_3 = {
75
- 'Ok': SignedDelegation;
80
+ 'Ok': bigint;
76
81
  } | {
77
82
  'Err': string;
78
83
  };
79
84
  export type Result_4 = {
80
- 'Ok': LoginResponse;
85
+ 'Ok': SignedDelegation;
81
86
  } | {
82
87
  'Err': string;
83
88
  };
84
89
  export type Result_5 = {
85
- 'Ok': null;
90
+ 'Ok': LoginResponse;
86
91
  } | {
87
92
  'Err': string;
88
93
  };
89
94
  export type Result_6 = {
95
+ 'Ok': null;
96
+ } | {
97
+ 'Err': string;
98
+ };
99
+ export type Result_7 = {
90
100
  'Ok': PrepareLoginResponse;
91
101
  } | {
92
102
  'Err': string;
@@ -97,10 +107,12 @@ export interface SignedDelegation {
97
107
  }
98
108
  export interface _SERVICE {
99
109
  /**
100
- * Get debug diagnostics (only available when debug=true in init args)
110
+ * Get debug diagnostics (restricted to canister controllers)
101
111
  *
102
112
  * Returns configuration and state information for debugging.
103
- * This endpoint is disabled in production (when debug=false).
113
+ * Only callable by canister controllers for security.
114
+ * This is an update call so that caller identity is consensus-verified
115
+ * (query calls cannot reliably enforce access control on the IC).
104
116
  */
105
117
  'debug_info': ActorMethod<[], Result>;
106
118
  /**
@@ -115,6 +127,19 @@ export interface _SERVICE {
115
127
  * Get ICP principal for Avalanche address
116
128
  */
117
129
  'get_principal': ActorMethod<[string], Result_2>;
130
+ /**
131
+ * Purge identity mappings from stable memory in bounded batches (controller-only)
132
+ *
133
+ * Removes up to 1000 address-to-principal and principal-to-address mappings
134
+ * per call to stay within IC instruction limits. Call repeatedly until the
135
+ * return value is 0 to purge all mappings. Mappings will be re-populated on
136
+ * next login for each address.
137
+ *
138
+ * # Returns
139
+ * * `Ok(count)` - Number of mappings removed in this call (0 = done)
140
+ * * `Err(String)` - Error if not a controller
141
+ */
142
+ 'purge_identity_mappings': ActorMethod<[], Result_3>;
118
143
  /**
119
144
  * Get delegation for authenticated principal
120
145
  *
@@ -135,7 +160,7 @@ export interface _SERVICE {
135
160
  string,
136
161
  Uint8Array | number[],
137
162
  bigint
138
- ], Result_3>;
163
+ ], Result_4>;
139
164
  /**
140
165
  * Complete SIWA login with signed message
141
166
  *
@@ -148,7 +173,43 @@ export interface _SERVICE {
148
173
  * * `Ok(LoginResponse)` - The derived principal and session expiration
149
174
  * * `Err(String)` - Error if signature is invalid or session expired
150
175
  */
151
- 'siwa_login': ActorMethod<[string, string, Uint8Array | number[]], Result_4>;
176
+ 'siwa_login': ActorMethod<[string, string, Uint8Array | number[]], Result_5>;
177
+ /**
178
+ * Combined login and prepare_delegation in a single update call
179
+ *
180
+ * This reduces the login flow from 2 update calls + 1 query to
181
+ * 1 update call + 1 query, saving ~2 seconds of consensus latency.
182
+ *
183
+ * # Arguments
184
+ * * `signature` - Hex-encoded signature from the user's wallet
185
+ * * `address` - The Avalanche address that signed the message
186
+ * * `session_key` - The session public key to bind to this authentication
187
+ *
188
+ * # Returns
189
+ * * `Ok(LoginResponse)` - The derived principal and session expiration
190
+ * * `Err(String)` - Error if signature is invalid or session expired
191
+ */
192
+ 'siwa_login_and_prepare': ActorMethod<[
193
+ string,
194
+ string,
195
+ Uint8Array | number[]
196
+ ], Result_5>;
197
+ /**
198
+ * Logout - revoke a specific session
199
+ *
200
+ * The caller must be the session owner (matching derived principal) or a
201
+ * canister controller. This prevents unauthenticated third parties from
202
+ * revoking other users' sessions.
203
+ *
204
+ * # Arguments
205
+ * * `address` - The Avalanche address
206
+ * * `session_key` - The session public key from login
207
+ *
208
+ * # Returns
209
+ * * `Ok(())` - Session revoked
210
+ * * `Err(String)` - Error if session not found or caller unauthorized
211
+ */
212
+ 'siwa_logout': ActorMethod<[string, Uint8Array | number[]], Result_6>;
152
213
  /**
153
214
  * Prepare a delegation for an authenticated session
154
215
  *
@@ -161,14 +222,14 @@ export interface _SERVICE {
161
222
  * * `expiration` - Requested expiration timestamp (may be capped)
162
223
  *
163
224
  * # Returns
164
- * * `Ok(())` - Delegation prepared successfully
225
+ * * `Ok(u64)` - The final capped expiration timestamp in nanoseconds
165
226
  * * `Err(String)` - Error if not authenticated or expired
166
227
  */
167
228
  'siwa_prepare_delegation': ActorMethod<[
168
229
  string,
169
230
  Uint8Array | number[],
170
231
  bigint
171
- ], Result_5>;
232
+ ], Result_3>;
172
233
  /**
173
234
  * Prepare a SIWA login message for signing (simple version)
174
235
  *
@@ -182,7 +243,7 @@ export interface _SERVICE {
182
243
  * * `Ok(PrepareLoginResponse)` - The message to sign, nonce, and expiration
183
244
  * * `Err(String)` - Error description if address is invalid
184
245
  */
185
- 'siwa_prepare_login': ActorMethod<[string], Result_6>;
246
+ 'siwa_prepare_login': ActorMethod<[string], Result_7>;
186
247
  /**
187
248
  * Prepare a SIWA login message with custom domain/uri (multi-tenant version)
188
249
  *
@@ -203,7 +264,21 @@ export interface _SERVICE {
203
264
  */
204
265
  'siwa_prepare_login_with_options': ActorMethod<[
205
266
  PrepareLoginRequest
206
- ], Result_6>;
267
+ ], Result_7>;
268
+ /**
269
+ * Revoke all sessions for an address (controller-only)
270
+ *
271
+ * Emergency endpoint to revoke all active sessions for a given address.
272
+ * Only callable by canister controllers.
273
+ *
274
+ * # Arguments
275
+ * * `address` - The Avalanche address to revoke sessions for
276
+ *
277
+ * # Returns
278
+ * * `Ok(count)` - Number of sessions revoked
279
+ * * `Err(String)` - Error if not a controller
280
+ */
281
+ 'siwa_revoke_all': ActorMethod<[string], Result_3>;
207
282
  }
208
283
  export declare const idlFactory: ({ IDL }: {
209
284
  IDL: any;
@@ -1 +1 @@
1
- {"version":3,"file":"ic_siwa_provider.d.ts","sourceRoot":"","sources":["../../src/candid/ic_siwa_provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ic_siwa_provider.d.ts","sourceRoot":"","sources":["../../src/candid/ic_siwa_provider.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,22 @@
1
- // @ts-nocheck
2
1
  /**
3
2
  * Auto-generated Candid bindings for ic_siwa_provider canister
4
3
  * Generated from: canisters/ic_siwa_provider/ic_siwa_provider.did
5
4
  * DO NOT EDIT MANUALLY - regenerate with: ic-siwa candid
6
5
  */
7
6
  export const idlFactory = ({ IDL }) => {
8
- const RateLimitArgs = IDL.Record({
9
- 'max_logins_total': IDL.Nat32,
10
- 'window_seconds': IDL.Nat64,
11
- 'max_logins_per_address': IDL.Nat32,
12
- });
13
- const InitArgs = IDL.Record({
14
- 'uri': IDL.Text,
15
- 'domain': IDL.Text,
16
- 'salt': IDL.Text,
17
- 'chain_id': IDL.Nat64,
18
- 'allowed_domains': IDL.Opt(IDL.Vec(IDL.Text)),
19
- 'allowed_canisters': IDL.Opt(IDL.Vec(IDL.Principal)),
20
- 'rate_limits': IDL.Opt(RateLimitArgs),
21
- 'delegation_targets': IDL.Opt(IDL.Vec(IDL.Principal)),
22
- 'debug': IDL.Opt(IDL.Bool),
23
- 'session_expiration_time': IDL.Nat64,
24
- });
25
7
  const DebugInfo = IDL.Record({
26
8
  'uri': IDL.Text,
9
+ 'signature_map_count': IDL.Nat64,
10
+ 'auth_sessions_count': IDL.Nat64,
27
11
  'domain': IDL.Text,
28
12
  'delegation_targets_count': IDL.Nat64,
29
13
  'chain_id': IDL.Nat64,
30
14
  'allowed_domains': IDL.Vec(IDL.Text),
31
15
  'allowed_domains_count': IDL.Nat64,
16
+ 'login_sessions_count': IDL.Nat64,
32
17
  'rate_limit_total': IDL.Nat32,
33
18
  'rate_limit_per_address': IDL.Nat32,
19
+ 'prepared_delegations_count': IDL.Nat64,
34
20
  'session_expiration_ns': IDL.Nat64,
35
21
  'rate_limit_window_seconds': IDL.Nat64,
36
22
  'delegation_targets': IDL.Vec(IDL.Principal),
@@ -39,6 +25,7 @@ export const idlFactory = ({ IDL }) => {
39
25
  const Result = IDL.Variant({ 'Ok': DebugInfo, 'Err': IDL.Text });
40
26
  const Result_1 = IDL.Variant({ 'Ok': IDL.Text, 'Err': IDL.Text });
41
27
  const Result_2 = IDL.Variant({ 'Ok': IDL.Principal, 'Err': IDL.Text });
28
+ const Result_3 = IDL.Variant({ 'Ok': IDL.Nat64, 'Err': IDL.Text });
42
29
  const Delegation = IDL.Record({
43
30
  'pubkey': IDL.Vec(IDL.Nat8),
44
31
  'targets': IDL.Opt(IDL.Vec(IDL.Principal)),
@@ -48,20 +35,20 @@ export const idlFactory = ({ IDL }) => {
48
35
  'signature': IDL.Vec(IDL.Nat8),
49
36
  'delegation': Delegation,
50
37
  });
51
- const Result_3 = IDL.Variant({ 'Ok': SignedDelegation, 'Err': IDL.Text });
38
+ const Result_4 = IDL.Variant({ 'Ok': SignedDelegation, 'Err': IDL.Text });
52
39
  const LoginResponse = IDL.Record({
53
40
  'user_principal': IDL.Principal,
54
41
  'user_canister_pubkey': IDL.Vec(IDL.Nat8),
55
42
  'expiration': IDL.Nat64,
56
43
  });
57
- const Result_4 = IDL.Variant({ 'Ok': LoginResponse, 'Err': IDL.Text });
58
- const Result_5 = IDL.Variant({ 'Ok': IDL.Null, 'Err': IDL.Text });
44
+ const Result_5 = IDL.Variant({ 'Ok': LoginResponse, 'Err': IDL.Text });
45
+ const Result_6 = IDL.Variant({ 'Ok': IDL.Null, 'Err': IDL.Text });
59
46
  const PrepareLoginResponse = IDL.Record({
60
47
  'expiration': IDL.Nat64,
61
48
  'message': IDL.Text,
62
49
  'nonce': IDL.Text,
63
50
  });
64
- const Result_6 = IDL.Variant({
51
+ const Result_7 = IDL.Variant({
65
52
  'Ok': PrepareLoginResponse,
66
53
  'Err': IDL.Text,
67
54
  });
@@ -71,15 +58,19 @@ export const idlFactory = ({ IDL }) => {
71
58
  'address': IDL.Text,
72
59
  });
73
60
  return IDL.Service({
74
- 'debug_info': IDL.Func([], [Result], ['query']),
61
+ 'debug_info': IDL.Func([], [Result], []),
75
62
  'get_address': IDL.Func([IDL.Principal], [Result_1], ['query']),
76
63
  'get_caller_address': IDL.Func([], [Result_1], ['query']),
77
64
  'get_principal': IDL.Func([IDL.Text], [Result_2], ['query']),
78
- 'siwa_get_delegation': IDL.Func([IDL.Text, IDL.Vec(IDL.Nat8), IDL.Nat64], [Result_3], ['query']),
79
- 'siwa_login': IDL.Func([IDL.Text, IDL.Text, IDL.Vec(IDL.Nat8)], [Result_4], []),
80
- 'siwa_prepare_delegation': IDL.Func([IDL.Text, IDL.Vec(IDL.Nat8), IDL.Nat64], [Result_5], []),
81
- 'siwa_prepare_login': IDL.Func([IDL.Text], [Result_6], []),
82
- 'siwa_prepare_login_with_options': IDL.Func([PrepareLoginRequest], [Result_6], []),
65
+ 'purge_identity_mappings': IDL.Func([], [Result_3], []),
66
+ 'siwa_get_delegation': IDL.Func([IDL.Text, IDL.Vec(IDL.Nat8), IDL.Nat64], [Result_4], ['query']),
67
+ 'siwa_login': IDL.Func([IDL.Text, IDL.Text, IDL.Vec(IDL.Nat8)], [Result_5], []),
68
+ 'siwa_login_and_prepare': IDL.Func([IDL.Text, IDL.Text, IDL.Vec(IDL.Nat8)], [Result_5], []),
69
+ 'siwa_logout': IDL.Func([IDL.Text, IDL.Vec(IDL.Nat8)], [Result_6], []),
70
+ 'siwa_prepare_delegation': IDL.Func([IDL.Text, IDL.Vec(IDL.Nat8), IDL.Nat64], [Result_3], []),
71
+ 'siwa_prepare_login': IDL.Func([IDL.Text], [Result_7], []),
72
+ 'siwa_prepare_login_with_options': IDL.Func([PrepareLoginRequest], [Result_7], []),
73
+ 'siwa_revoke_all': IDL.Func([IDL.Text], [Result_3], []),
83
74
  });
84
75
  };
85
76
  export const init = ({ IDL }) => {
@@ -99,6 +90,7 @@ export const init = ({ IDL }) => {
99
90
  'delegation_targets': IDL.Opt(IDL.Vec(IDL.Principal)),
100
91
  'debug': IDL.Opt(IDL.Bool),
101
92
  'session_expiration_time': IDL.Nat64,
93
+ 'login_expiration_time': IDL.Opt(IDL.Nat64),
102
94
  });
103
95
  return [InitArgs];
104
96
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ic_siwa_provider.js","sourceRoot":"","sources":["../../src/candid/ic_siwa_provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ic_siwa_provider.js","sourceRoot":"","sources":["../../src/candid/ic_siwa_provider.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -36,6 +36,10 @@ export declare class SiwaClient {
36
36
  private refreshTimer;
37
37
  private sessionKey;
38
38
  constructor(options: SiwaClientOptions);
39
+ /**
40
+ * Get a canister-namespaced storage key to prevent cross-canister conflicts
41
+ */
42
+ private storageKey;
39
43
  /**
40
44
  * Check if user is currently authenticated
41
45
  */
@@ -52,6 +56,20 @@ export declare class SiwaClient {
52
56
  * Get the current Avalanche address if authenticated
53
57
  */
54
58
  getAddress(): Promise<string | null>;
59
+ /**
60
+ * Check if the host is a local development environment.
61
+ * Uses strict hostname matching to avoid false positives
62
+ * (e.g. "localhost.evil.com" would NOT match).
63
+ */
64
+ private isLocalEnvironment;
65
+ /**
66
+ * Validate an Avalanche address format (0x-prefixed, 42 hex chars)
67
+ */
68
+ private static validateAddress;
69
+ /**
70
+ * Validate a hex-encoded signature format (0x-prefixed, 130 hex chars = 65 bytes)
71
+ */
72
+ private static validateSignature;
55
73
  /**
56
74
  * Create an anonymous agent for canister calls
57
75
  */
@@ -98,6 +116,13 @@ export declare class SiwaClient {
98
116
  * @param sessionKey - Optional session key (generated if not provided)
99
117
  */
100
118
  login(signature: string, address: string, sessionKey?: Ed25519KeyIdentity): Promise<LoginResult>;
119
+ /**
120
+ * Get delegation with retry logic to handle IC certified data propagation delay.
121
+ *
122
+ * After an update call modifies certified data, a subsequent query may hit a
123
+ * replica that hasn't yet processed the new block. This retries with backoff.
124
+ */
125
+ private getDelegationWithRetry;
101
126
  /**
102
127
  * Build delegation chain from canister response
103
128
  *
@@ -151,6 +176,10 @@ export declare class SiwaClient {
151
176
  }): Promise<LoginResult>;
152
177
  /**
153
178
  * Logout and clear stored identity
179
+ *
180
+ * Revokes the session on the canister (best-effort) before clearing
181
+ * local state. If the canister is unreachable, local logout still
182
+ * succeeds and the server-side session will expire naturally.
154
183
  */
155
184
  logout(): Promise<void>;
156
185
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAQ,SAAS,EAAgC,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAGL,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAU7C,OAAO,EAGL,KAAK,YAAY,EAElB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAyB,KAAK,eAAe,EAAC,MAAM,WAAW,CAAC;AACvE,OAAO,KAAK,EAAC,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAC,MAAM,SAAS,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,UAAU,CAAmC;gBAEzC,OAAO,EAAE,iBAAiB;IAQtC;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAKzC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAyCjD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAK/C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK1C;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAS9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAShC;;OAEG;YACW,oBAAoB;IAYlC;;OAEG;YACW,mBAAmB;IAQjC;;;;;;;OAOG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAI3D;;;;;;;;;;;;;;;;;;;OAmBG;IACG,uBAAuB,CAC3B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC;IAoCzB;;;;;;OAMG;IACG,KAAK,CACT,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,kBAAkB,GAC9B,OAAO,CAAC,WAAW,CAAC;IA2HvB;;;;;OAKG;YACW,sBAAsB;IA8BpC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,oBAAoB;IA6C5B;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAyHtD;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;;;;;;;;;;;;;;;;;;OAmBG;IACG,eAAe,CACnB,YAAY,EAAE;QACZ,OAAO,EAAE;YAAC,OAAO,EAAE,MAAM,CAAA;SAAC,CAAC;QAC3B,WAAW,EAAE,CAAC,IAAI,EAAE;YAAC,OAAO,EAAE,MAAM,CAAA;SAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;KAC3D,EACD,OAAO,CAAC,EAAE;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAC,GACxC,OAAO,CAAC,WAAW,CAAC;IAmBvB;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC7B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC;IAoBpC;;OAEG;IACG,WAAW,CAAC,CAAC,EACjB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,CAAC,CAAC;IAWb;;OAEG;IACH,aAAa,IAAI,SAAS;IAI1B;;OAEG;IACH,OAAO,IAAI,MAAM;CAGlB"}
package/dist/client.js CHANGED
@@ -7,7 +7,7 @@ import { Principal } from "@dfinity/principal";
7
7
  import { idlFactory, } from "./candid";
8
8
  import { SiwaError, SiwaErrorCode } from "./errors";
9
9
  import { createSiwaIdentity, generateSessionKey, } from "./identity";
10
- import { LocalStorageProvider } from "./storage";
10
+ import { SessionStorageProvider } from "./storage";
11
11
  /**
12
12
  * SIWA Client for authenticating with Avalanche wallets
13
13
  */
@@ -24,10 +24,16 @@ export class SiwaClient {
24
24
  constructor(options) {
25
25
  this.canisterId = Principal.fromText(options.canisterId);
26
26
  this.host = options.host ?? "https://ic0.app";
27
- this.storage = options.storage ?? new LocalStorageProvider();
27
+ this.storage = options.storage ?? new SessionStorageProvider();
28
28
  this.autoRefresh = options.autoRefresh ?? true;
29
29
  this.refreshThreshold = options.refreshThreshold ?? 5 * 60 * 1000; // 5 minutes
30
30
  }
31
+ /**
32
+ * Get a canister-namespaced storage key to prevent cross-canister conflicts
33
+ */
34
+ storageKey(key) {
35
+ return `${this.canisterId.toText()}_${key}`;
36
+ }
31
37
  /**
32
38
  * Check if user is currently authenticated
33
39
  */
@@ -43,14 +49,17 @@ export class SiwaClient {
43
49
  return this.identity;
44
50
  }
45
51
  // Try to restore from storage
46
- const stored = await this.storage.get("siwa_identity");
52
+ const stored = await this.storage.get(this.storageKey("identity"));
47
53
  if (stored) {
48
54
  try {
49
55
  const data = JSON.parse(stored);
50
56
  this.identity = await createSiwaIdentity(data);
51
- if (!this.identity.isExpired()) {
57
+ // Use a 30-second buffer so we don't return a nearly-expired
58
+ // identity that would fail on the first canister call.
59
+ const RESTORE_BUFFER_MS = 30_000;
60
+ if (Date.now() + RESTORE_BUFFER_MS < this.identity.getExpiration()) {
52
61
  // Restore session key if stored
53
- const storedKey = await this.storage.get("siwa_session_key");
62
+ const storedKey = await this.storage.get(this.storageKey("session_key"));
54
63
  if (storedKey) {
55
64
  this.sessionKey = Ed25519KeyIdentity.fromJSON(storedKey);
56
65
  }
@@ -64,8 +73,8 @@ export class SiwaClient {
64
73
  catch {
65
74
  // Invalid stored identity, clean up
66
75
  }
67
- await this.storage.remove("siwa_identity");
68
- await this.storage.remove("siwa_session_key");
76
+ await this.storage.remove(this.storageKey("identity"));
77
+ await this.storage.remove(this.storageKey("session_key"));
69
78
  }
70
79
  return null;
71
80
  }
@@ -83,6 +92,40 @@ export class SiwaClient {
83
92
  const identity = await this.getIdentity();
84
93
  return identity?.getAddress() ?? null;
85
94
  }
95
+ /**
96
+ * Check if the host is a local development environment.
97
+ * Uses strict hostname matching to avoid false positives
98
+ * (e.g. "localhost.evil.com" would NOT match).
99
+ */
100
+ isLocalEnvironment() {
101
+ try {
102
+ const url = new URL(this.host);
103
+ const hostname = url.hostname;
104
+ return (hostname === "localhost" ||
105
+ hostname === "127.0.0.1" ||
106
+ hostname === "::1" ||
107
+ hostname.endsWith(".localhost"));
108
+ }
109
+ catch {
110
+ return false;
111
+ }
112
+ }
113
+ /**
114
+ * Validate an Avalanche address format (0x-prefixed, 42 hex chars)
115
+ */
116
+ static validateAddress(address) {
117
+ if (!/^0x[0-9a-fA-F]{40}$/.test(address)) {
118
+ throw new SiwaError(SiwaErrorCode.InvalidAddress, "Address must be 0x-prefixed followed by 40 hex characters");
119
+ }
120
+ }
121
+ /**
122
+ * Validate a hex-encoded signature format (0x-prefixed, 130 hex chars = 65 bytes)
123
+ */
124
+ static validateSignature(signature) {
125
+ if (!/^0x[0-9a-fA-F]{130}$/.test(signature)) {
126
+ throw new SiwaError(SiwaErrorCode.InvalidSignature, "Signature must be 0x-prefixed followed by 130 hex characters (65 bytes)");
127
+ }
128
+ }
86
129
  /**
87
130
  * Create an anonymous agent for canister calls
88
131
  */
@@ -90,10 +133,7 @@ export class SiwaClient {
90
133
  const agent = await HttpAgent.create({
91
134
  host: this.host,
92
135
  });
93
- // Fetch root key in non-production environments
94
- if (this.host.includes("localhost") ||
95
- this.host.includes("127.0.0.1") ||
96
- this.host.includes(".local")) {
136
+ if (this.isLocalEnvironment()) {
97
137
  await agent.fetchRootKey();
98
138
  }
99
139
  return agent;
@@ -140,6 +180,7 @@ export class SiwaClient {
140
180
  * ```
141
181
  */
142
182
  async prepareLoginWithOptions(options) {
183
+ SiwaClient.validateAddress(options.address);
143
184
  try {
144
185
  const actor = await this.createProviderActor();
145
186
  // Use the new multi-tenant endpoint if domain/uri provided
@@ -174,15 +215,18 @@ export class SiwaClient {
174
215
  * @param sessionKey - Optional session key (generated if not provided)
175
216
  */
176
217
  async login(signature, address, sessionKey) {
218
+ SiwaClient.validateAddress(address);
219
+ SiwaClient.validateSignature(signature);
177
220
  try {
178
221
  // Generate session key if not provided
179
222
  this.sessionKey = sessionKey ?? generateSessionKey();
180
223
  const sessionKeyDer = this.sessionKey.getPublicKey().toDer();
181
224
  // Convert to number[] for Candid encoding (blob = vec nat8)
182
225
  const sessionKeyBytes = Array.from(new Uint8Array(sessionKeyDer));
183
- // Call siwa_login
226
+ // Combined login + prepare_delegation in a single update call
227
+ // This saves ~2 seconds by eliminating one consensus round-trip
184
228
  const actor = await this.createProviderActor();
185
- const loginResponse = await actor.siwa_login(signature, address, sessionKeyBytes);
229
+ const loginResponse = await actor.siwa_login_and_prepare(signature, address, sessionKeyBytes);
186
230
  if ("Err" in loginResponse) {
187
231
  throw new SiwaError(SiwaErrorCode.CanisterError, loginResponse.Err, loginResponse);
188
232
  }
@@ -193,19 +237,12 @@ export class SiwaClient {
193
237
  const canisterPubkeyBytes = userCanisterPubkey instanceof Uint8Array
194
238
  ? userCanisterPubkey
195
239
  : new Uint8Array(userCanisterPubkey);
196
- // Use the expiration from login response, or default to 30 minutes
197
- const expirationNs = loginExpiration ??
198
- BigInt(Date.now() + 30 * 60 * 1000) * BigInt(1_000_000);
199
- // Prepare delegation first (stores in signature map for certified response)
200
- const prepareResult = await actor.siwa_prepare_delegation(address, sessionKeyBytes, expirationNs);
201
- if ("Err" in prepareResult) {
202
- throw new SiwaError(SiwaErrorCode.CanisterError, prepareResult.Err, prepareResult);
203
- }
204
- // Now get the certified delegation
205
- const delegationResponse = await actor.siwa_get_delegation(address, sessionKeyBytes, expirationNs);
206
- if ("Err" in delegationResponse) {
207
- throw new SiwaError(SiwaErrorCode.CanisterError, delegationResponse.Err, delegationResponse);
208
- }
240
+ // Use the expiration from login response (always present in LoginResponse)
241
+ const expirationNs = loginExpiration;
242
+ // Get the certified delegation with retry logic to handle the IC
243
+ // certified data propagation race (query may hit a replica that hasn't
244
+ // yet processed the update call's state tree commit).
245
+ const delegationResponse = await this.getDelegationWithRetry(actor, address, sessionKeyBytes, expirationNs);
209
246
  // Create delegation chain from canister response
210
247
  const { delegation: candidDelegation, signature: delegationSignature } = delegationResponse.Ok;
211
248
  // Convert signature to proper Uint8Array if needed
@@ -232,8 +269,8 @@ export class SiwaClient {
232
269
  // Create identity
233
270
  this.identity = await createSiwaIdentity(serializedIdentity);
234
271
  // Store identity and session key
235
- await this.storage.set("siwa_identity", JSON.stringify(serializedIdentity));
236
- await this.storage.set("siwa_session_key", JSON.stringify(this.sessionKey.toJSON()));
272
+ await this.storage.set(this.storageKey("identity"), JSON.stringify(serializedIdentity));
273
+ await this.storage.set(this.storageKey("session_key"), JSON.stringify(this.sessionKey.toJSON()));
237
274
  // Reset agent to use new identity
238
275
  this.agent = null;
239
276
  // Set up auto-refresh if enabled
@@ -253,6 +290,25 @@ export class SiwaClient {
253
290
  throw SiwaError.fromCanisterError(error);
254
291
  }
255
292
  }
293
+ /**
294
+ * Get delegation with retry logic to handle IC certified data propagation delay.
295
+ *
296
+ * After an update call modifies certified data, a subsequent query may hit a
297
+ * replica that hasn't yet processed the new block. This retries with backoff.
298
+ */
299
+ async getDelegationWithRetry(actor, address, sessionKeyBytes, expirationNs, maxRetries = 3, baseDelayMs = 500) {
300
+ let lastError;
301
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
302
+ const response = await actor.siwa_get_delegation(address, sessionKeyBytes, expirationNs);
303
+ if ("Ok" in response) {
304
+ return response;
305
+ }
306
+ lastError = response.Err;
307
+ // Wait with linear backoff before retrying
308
+ await new Promise((resolve) => setTimeout(resolve, baseDelayMs * (attempt + 1)));
309
+ }
310
+ throw new SiwaError(SiwaErrorCode.CanisterError, lastError ?? "Failed to get delegation after retries");
311
+ }
256
312
  /**
257
313
  * Build delegation chain from canister response
258
314
  *
@@ -313,19 +369,28 @@ export class SiwaClient {
313
369
  []);
314
370
  try {
315
371
  const actor = await this.createProviderActor();
316
- // Get new delegation
317
- const expirationNs = BigInt(Date.now() + 30 * 60 * 1000) * BigInt(1_000_000);
372
+ // Request the maximum possible expiration and let the canister cap it
373
+ // to its configured session_expiration_time. Using the old (nearly expired)
374
+ // delegation's timestamp would produce an immediately-expiring delegation.
375
+ const requestedExpirationNs = BigInt(Number.MAX_SAFE_INTEGER) * BigInt(1_000_000);
318
376
  // Prepare delegation first (stores in signature map for certified response)
319
- const prepareResult = await actor.siwa_prepare_delegation(address, sessionKeyBytes, expirationNs);
377
+ const prepareResult = await actor.siwa_prepare_delegation(address, sessionKeyBytes, requestedExpirationNs);
320
378
  if ("Err" in prepareResult) {
321
379
  // Session may have expired, need to re-login
322
380
  await this.logout();
323
381
  return null;
324
382
  }
325
- // Now get the certified delegation
326
- const delegationResponse = await actor.siwa_get_delegation(address, sessionKeyBytes, expirationNs);
327
- if ("Err" in delegationResponse) {
328
- // Session may have expired, need to re-login
383
+ // Use the canister's capped expiration (not the uncapped requested value)
384
+ // to ensure the expiration passed to siwa_get_delegation matches what was
385
+ // actually stored during prepare_delegation.
386
+ const cappedExpirationNs = prepareResult.Ok;
387
+ // Get the certified delegation with retry logic
388
+ let delegationResponse;
389
+ try {
390
+ delegationResponse = await this.getDelegationWithRetry(actor, address, sessionKeyBytes, cappedExpirationNs);
391
+ }
392
+ catch {
393
+ // Session may have expired or delegation unavailable, need to re-login
329
394
  await this.logout();
330
395
  return null;
331
396
  }
@@ -334,7 +399,8 @@ export class SiwaClient {
334
399
  ? delegationSignature
335
400
  : new Uint8Array(delegationSignature);
336
401
  const delegationChain = this.buildDelegationChain(candidDelegation, signatureBytes, canisterPubkeyBytes);
337
- const expirationMs = Number(expirationNs / BigInt(1_000_000));
402
+ // Use the canister's actual expiration from the delegation response
403
+ const expirationMs = Number(candidDelegation.expiration / BigInt(1_000_000));
338
404
  const serializedIdentity = {
339
405
  baseKey: JSON.stringify(this.sessionKey.toJSON()),
340
406
  delegationChain: JSON.stringify(delegationChain.toJSON()),
@@ -343,7 +409,7 @@ export class SiwaClient {
343
409
  canisterPubkey: serialized.canisterPubkey,
344
410
  };
345
411
  this.identity = await createSiwaIdentity(serializedIdentity);
346
- await this.storage.set("siwa_identity", JSON.stringify(serializedIdentity));
412
+ await this.storage.set(this.storageKey("identity"), JSON.stringify(serializedIdentity));
347
413
  // Reset agent
348
414
  this.agent = null;
349
415
  // Reschedule refresh
@@ -421,6 +487,10 @@ export class SiwaClient {
421
487
  }
422
488
  /**
423
489
  * Logout and clear stored identity
490
+ *
491
+ * Revokes the session on the canister (best-effort) before clearing
492
+ * local state. If the canister is unreachable, local logout still
493
+ * succeeds and the server-side session will expire naturally.
424
494
  */
425
495
  async logout() {
426
496
  // Clear refresh timer
@@ -428,11 +498,27 @@ export class SiwaClient {
428
498
  clearTimeout(this.refreshTimer);
429
499
  this.refreshTimer = null;
430
500
  }
501
+ // Revoke session on the canister (best-effort, don't block on failure).
502
+ // Uses the authenticated agent so the caller principal matches the session
503
+ // owner, which is required by the canister's authorization check.
504
+ if (this.identity && this.sessionKey) {
505
+ try {
506
+ const address = this.identity.getAddress();
507
+ const sessionKeyBytes = Array.from(new Uint8Array(this.sessionKey.getPublicKey().toDer()));
508
+ const agent = await this.getAgent();
509
+ const actor = await this.createProviderActor(agent);
510
+ await actor.siwa_logout(address, sessionKeyBytes);
511
+ }
512
+ catch {
513
+ // Best-effort: canister may be unreachable or delegation already expired,
514
+ // session will expire naturally on the canister side
515
+ }
516
+ }
431
517
  this.identity = null;
432
518
  this.agent = null;
433
519
  this.sessionKey = null;
434
- await this.storage.remove("siwa_identity");
435
- await this.storage.remove("siwa_session_key");
520
+ await this.storage.remove(this.storageKey("identity"));
521
+ await this.storage.remove(this.storageKey("session_key"));
436
522
  }
437
523
  /**
438
524
  * Get an HttpAgent for making authenticated calls
@@ -447,10 +533,7 @@ export class SiwaClient {
447
533
  host: this.host,
448
534
  identity: identity.getDelegationIdentity(),
449
535
  });
450
- // Fetch root key in non-production environments
451
- if (this.host.includes("localhost") ||
452
- this.host.includes("127.0.0.1") ||
453
- this.host.includes(".local")) {
536
+ if (this.isLocalEnvironment()) {
454
537
  await this.agent.fetchRootKey();
455
538
  }
456
539
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -25,8 +25,8 @@
25
25
  export { SiwaClient, type SiwaClientOptions } from "./client";
26
26
  export { SiwaError, SiwaErrorCode } from "./errors";
27
27
  export { type SiwaIdentity, type SerializedIdentity, createSiwaIdentity, generateSessionKey, } from "./identity";
28
- export { type StorageProvider, LocalStorageProvider, MemoryStorageProvider, } from "./storage";
28
+ export { type StorageProvider, LocalStorageProvider, SessionStorageProvider, MemoryStorageProvider, } from "./storage";
29
29
  export type { PreparedLogin, LoginResult, SignedDelegation, SiwaMessage, WalletClient, PrepareLoginOptions, } from "./types";
30
30
  export { idlFactory as siwaProviderIdlFactory, type _SERVICE as SiwaProviderService, type InitArgs as SiwaProviderInitArgs, } from "./candid";
31
- export declare const VERSION = "0.1.0";
31
+ export declare const VERSION = "0.2.0";
32
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAC,UAAU,EAAE,KAAK,iBAAiB,EAAC,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,UAAU,CAAC;AAClD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,eAAe,EACpB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,UAAU,IAAI,sBAAsB,EACpC,KAAK,QAAQ,IAAI,mBAAmB,EACpC,KAAK,QAAQ,IAAI,oBAAoB,GACtC,MAAM,UAAU,CAAC;AAGlB,eAAO,MAAM,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAC,UAAU,EAAE,KAAK,iBAAiB,EAAC,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,UAAU,CAAC;AAClD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,eAAe,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,UAAU,IAAI,sBAAsB,EACpC,KAAK,QAAQ,IAAI,mBAAmB,EACpC,KAAK,QAAQ,IAAI,oBAAoB,GACtC,MAAM,UAAU,CAAC;AAGlB,eAAO,MAAM,OAAO,UAAU,CAAC"}
package/dist/index.js CHANGED
@@ -25,9 +25,9 @@
25
25
  export { SiwaClient } from "./client";
26
26
  export { SiwaError, SiwaErrorCode } from "./errors";
27
27
  export { createSiwaIdentity, generateSessionKey, } from "./identity";
28
- export { LocalStorageProvider, MemoryStorageProvider, } from "./storage";
28
+ export { LocalStorageProvider, SessionStorageProvider, MemoryStorageProvider, } from "./storage";
29
29
  // Candid types (for advanced usage)
30
30
  export { idlFactory as siwaProviderIdlFactory, } from "./candid";
31
31
  // Version
32
- export const VERSION = "0.1.0";
32
+ export const VERSION = "0.2.0";
33
33
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAC,UAAU,EAAyB,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,UAAU,CAAC;AAClD,OAAO,EAGL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAUnB,oCAAoC;AACpC,OAAO,EACL,UAAU,IAAI,sBAAsB,GAGrC,MAAM,UAAU,CAAC;AAElB,UAAU;AACV,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAC,UAAU,EAAyB,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAC,SAAS,EAAE,aAAa,EAAC,MAAM,UAAU,CAAC;AAClD,OAAO,EAGL,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAUnB,oCAAoC;AACpC,OAAO,EACL,UAAU,IAAI,sBAAsB,GAGrC,MAAM,UAAU,CAAC;AAElB,UAAU;AACV,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
package/dist/storage.d.ts CHANGED
@@ -17,7 +17,25 @@ export interface StorageProvider {
17
17
  */
18
18
  export declare class LocalStorageProvider implements StorageProvider {
19
19
  private prefix;
20
+ private warned;
20
21
  constructor(prefix?: string);
22
+ private warnIfUnavailable;
23
+ get(key: string): Promise<string | null>;
24
+ set(key: string, value: string): Promise<void>;
25
+ remove(key: string): Promise<void>;
26
+ }
27
+ /**
28
+ * SessionStorage-based storage provider (browser)
29
+ *
30
+ * Uses sessionStorage which is cleared when the browser tab is closed.
31
+ * This is more secure than localStorage for storing session keys since
32
+ * sensitive key material does not persist beyond the browser session.
33
+ */
34
+ export declare class SessionStorageProvider implements StorageProvider {
35
+ private prefix;
36
+ private warned;
37
+ constructor(prefix?: string);
38
+ private warnIfUnavailable;
21
39
  get(key: string): Promise<string | null>;
22
40
  set(key: string, value: string): Promise<void>;
23
41
  remove(key: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,yBAAyB;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,4BAA4B;IAC5B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,SAAa;IAIzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMzC;AAED;;GAEG;AACH,qBAAa,qBAAsB,YAAW,eAAe;IAC3D,OAAO,CAAC,OAAO,CAA6B;IAEtC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,8BAA8B;IAC9B,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,yBAAyB;IACzB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,4BAA4B;IAC5B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,SAAa;IAI/B,OAAO,CAAC,iBAAiB;IAcnB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIzC;AAED;;;;;;GAMG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,SAAa;IAI/B,OAAO,CAAC,iBAAiB;IAcnB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIzC;AAED;;GAEG;AACH,qBAAa,qBAAsB,YAAW,eAAe;IAC3D,OAAO,CAAC,OAAO,CAA6B;IAEtC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,8BAA8B;IAC9B,KAAK,IAAI,IAAI;CAGd"}
package/dist/storage.js CHANGED
@@ -6,28 +6,77 @@
6
6
  */
7
7
  export class LocalStorageProvider {
8
8
  prefix;
9
+ warned = false;
9
10
  constructor(prefix = "ic_siwa_") {
10
11
  this.prefix = prefix;
11
12
  }
12
- async get(key) {
13
+ warnIfUnavailable() {
13
14
  if (typeof localStorage === "undefined") {
14
- return null;
15
+ if (!this.warned) {
16
+ console.warn("[ic-siwa] localStorage is not available. Session will not persist. " +
17
+ "Use MemoryStorageProvider or a custom StorageProvider for non-browser environments.");
18
+ this.warned = true;
19
+ }
20
+ return true;
15
21
  }
22
+ return false;
23
+ }
24
+ async get(key) {
25
+ if (this.warnIfUnavailable())
26
+ return null;
16
27
  return localStorage.getItem(this.prefix + key);
17
28
  }
18
29
  async set(key, value) {
19
- if (typeof localStorage === "undefined") {
30
+ if (this.warnIfUnavailable())
20
31
  return;
21
- }
22
32
  localStorage.setItem(this.prefix + key, value);
23
33
  }
24
34
  async remove(key) {
25
- if (typeof localStorage === "undefined") {
35
+ if (this.warnIfUnavailable())
26
36
  return;
27
- }
28
37
  localStorage.removeItem(this.prefix + key);
29
38
  }
30
39
  }
40
+ /**
41
+ * SessionStorage-based storage provider (browser)
42
+ *
43
+ * Uses sessionStorage which is cleared when the browser tab is closed.
44
+ * This is more secure than localStorage for storing session keys since
45
+ * sensitive key material does not persist beyond the browser session.
46
+ */
47
+ export class SessionStorageProvider {
48
+ prefix;
49
+ warned = false;
50
+ constructor(prefix = "ic_siwa_") {
51
+ this.prefix = prefix;
52
+ }
53
+ warnIfUnavailable() {
54
+ if (typeof sessionStorage === "undefined") {
55
+ if (!this.warned) {
56
+ console.warn("[ic-siwa] sessionStorage is not available. Session will not persist. " +
57
+ "Use MemoryStorageProvider or a custom StorageProvider for non-browser environments.");
58
+ this.warned = true;
59
+ }
60
+ return true;
61
+ }
62
+ return false;
63
+ }
64
+ async get(key) {
65
+ if (this.warnIfUnavailable())
66
+ return null;
67
+ return sessionStorage.getItem(this.prefix + key);
68
+ }
69
+ async set(key, value) {
70
+ if (this.warnIfUnavailable())
71
+ return;
72
+ sessionStorage.setItem(this.prefix + key, value);
73
+ }
74
+ async remove(key) {
75
+ if (this.warnIfUnavailable())
76
+ return;
77
+ sessionStorage.removeItem(this.prefix + key);
78
+ }
79
+ }
31
80
  /**
32
81
  * In-memory storage provider (for testing or SSR)
33
82
  */
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH;;GAEG;AACH,MAAM,OAAO,oBAAoB;IACvB,MAAM,CAAS;IAEvB,YAAY,MAAM,GAAG,UAAU;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAa;QAClC,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QACD,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QACD,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAC7C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,qBAAqB;IACxB,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE5C,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAa;QAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,8BAA8B;IAC9B,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ic-siwa",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "Sign in with Avalanche for the Internet Computer",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -53,8 +53,8 @@
53
53
  "@dfinity/principal": "3.4.3"
54
54
  },
55
55
  "devDependencies": {
56
- "@types/bun": "1.3.8",
57
- "eslint": "9.39.2",
56
+ "@types/bun": "1.3.9",
57
+ "eslint": "10.0.0",
58
58
  "prettier": "3.8.1",
59
59
  "typescript": "5.9.3"
60
60
  },
@@ -303,6 +303,10 @@ const btnClasses = ["btn", variantClass, sizeClass, styleClass, className]
303
303
 
304
304
  const address = accounts[0] as string;
305
305
 
306
+ if (!address || !address.startsWith("0x") || address.length !== 42) {
307
+ throw new Error("Wallet returned an invalid address. Please try again.");
308
+ }
309
+
306
310
  // Prepare login message
307
311
  const prepared = await client.prepareLogin(address);
308
312