passkey-kit 0.7.12 → 0.7.13

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "passkey-kit",
3
- "version": "0.7.12",
3
+ "version": "0.7.13",
4
4
  "description": "A helper library for creating and using passkey accounts on the Stellar blockchain.",
5
5
  "author": "Tyler van der Hoeven",
6
6
  "license": "MIT",
@@ -14,8 +14,8 @@
14
14
  "base64url": "^3.0.1",
15
15
  "buffer": "^6.0.3",
16
16
  "passkey-factory-sdk": "0.3.4",
17
- "sac-sdk": "0.1.1",
18
- "passkey-kit-sdk": "0.3.4"
17
+ "passkey-kit-sdk": "0.3.4",
18
+ "sac-sdk": "0.1.1"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@simplewebauthn/types": "^10.0.0",
package/src/kit.ts CHANGED
@@ -8,21 +8,19 @@ import { Buffer } from 'buffer'
8
8
  import { PasskeyBase } from './base'
9
9
  import { AssembledTransaction, DEFAULT_TIMEOUT } from '@stellar/stellar-sdk/contract'
10
10
 
11
- // TODO ensure we're outputting a built transaction that's actually useful in the case you don't intend to use Launchtube
12
-
13
11
  export class SignerKey {
14
- private constructor(public type: "Policy" | "Ed25519" | "Secp256r1", public value: string | Buffer) { }
12
+ private constructor(public key: "Policy" | "Ed25519" | "Secp256r1", public value: string) { }
15
13
 
16
- static Policy(value: string): SignerKey {
17
- return new SignerKey("Policy", value);
14
+ static Policy(policy: string): SignerKey {
15
+ return new SignerKey("Policy", policy);
18
16
  }
19
17
 
20
- static Ed25519(value: Buffer): SignerKey {
21
- return new SignerKey("Ed25519", value);
18
+ static Ed25519(publicKey: string): SignerKey {
19
+ return new SignerKey("Ed25519", publicKey);
22
20
  }
23
21
 
24
- static Secp256r1(value: Buffer): SignerKey {
25
- return new SignerKey("Secp256r1", value);
22
+ static Secp256r1(id: string): SignerKey {
23
+ return new SignerKey("Secp256r1", id);
26
24
  }
27
25
  }
28
26
 
@@ -219,7 +217,7 @@ export class PasskeyKit extends PasskeyBase {
219
217
  if ([keyId, keypair, policy].filter((arg) => !!arg).length > 1)
220
218
  throw new Error('Exactly one of `options.keyId`, `options.keypair`, or `options.policy` must be provided.');
221
219
 
222
- const credentials = entry.credentials().address(); // TODO review this for using the Signatures type again. Might be just `credentials`
220
+ const credentials = entry.credentials().address();
223
221
 
224
222
  if (!expiration) {
225
223
  expiration = credentials.signatureExpirationLedger()
@@ -402,6 +400,8 @@ export class PasskeyKit extends PasskeyBase {
402
400
  expiration?: number
403
401
  }
404
402
  ) {
403
+ // TODO ensure we're outputting a built transaction that's actually useful in the case you don't intend to use launchtube
404
+ // Pretty sure we'll always be woefully under budget
405
405
  return txn.signAuthEntries({
406
406
  address: this.wallet!.options.contractId,
407
407
  authorizeEntry: (entry) => {
@@ -449,32 +449,9 @@ export class PasskeyKit extends PasskeyBase {
449
449
  });
450
450
  }
451
451
 
452
- public remove(key: SignerKey) {
453
- let signer_key: SDKSignerKey
454
-
455
- switch (key.type) {
456
- case 'Policy':
457
- signer_key = {
458
- tag: key.type,
459
- values: [key.value as string]
460
- }
461
- break;
462
- case 'Ed25519':
463
- signer_key = {
464
- tag: key.type,
465
- values: [key.value as Buffer]
466
- }
467
- break;
468
- case 'Secp256r1':
469
- signer_key = {
470
- tag: key.type,
471
- values: [key.value as Buffer]
472
- }
473
- break;
474
- }
475
-
452
+ public remove(signer: SignerKey) {
476
453
  return this.wallet!.remove({
477
- signer_key,
454
+ signer_key: this.getSignerKey(signer)
478
455
  });
479
456
  }
480
457
 
@@ -493,26 +470,9 @@ export class PasskeyKit extends PasskeyBase {
493
470
  sdk_signer_keys = []
494
471
 
495
472
  for (const signer_key of signer_keys) {
496
- switch (signer_key.type) {
497
- case 'Policy':
498
- sdk_signer_keys.push({
499
- tag: signer_key.type,
500
- values: [signer_key.value as string]
501
- })
502
- break;
503
- case 'Ed25519':
504
- sdk_signer_keys.push({
505
- tag: signer_key.type,
506
- values: [signer_key.value as Buffer]
507
- })
508
- break;
509
- case 'Secp256r1':
510
- sdk_signer_keys.push({
511
- tag: signer_key.type,
512
- values: [signer_key.value as Buffer]
513
- })
514
- break;
515
- }
473
+ sdk_signer_keys.push(
474
+ this.getSignerKey(signer_key)
475
+ )
516
476
  }
517
477
  }
518
478
 
@@ -522,6 +482,33 @@ export class PasskeyKit extends PasskeyBase {
522
482
  return sdk_limits
523
483
  }
524
484
 
485
+ private getSignerKey({ key: tag, value }: SignerKey) {
486
+ let signer_key: SDKSignerKey
487
+
488
+ switch (tag) {
489
+ case 'Policy':
490
+ signer_key = {
491
+ tag,
492
+ values: [value]
493
+ }
494
+ break;
495
+ case 'Ed25519':
496
+ signer_key = {
497
+ tag,
498
+ values: [Keypair.fromPublicKey(value).rawPublicKey()]
499
+ }
500
+ break;
501
+ case 'Secp256r1':
502
+ signer_key = {
503
+ tag,
504
+ values: [base64url.toBuffer(value)]
505
+ }
506
+ break;
507
+ }
508
+
509
+ return signer_key
510
+ }
511
+
525
512
  private async getPublicKey(response: AuthenticatorAttestationResponseJSON) {
526
513
  let publicKey: Buffer | undefined
527
514
 
package/types/kit.d.ts CHANGED
@@ -7,12 +7,12 @@ import { Buffer } from 'buffer';
7
7
  import { PasskeyBase } from './base';
8
8
  import { AssembledTransaction } from '@stellar/stellar-sdk/contract';
9
9
  export declare class SignerKey {
10
- type: "Policy" | "Ed25519" | "Secp256r1";
11
- value: string | Buffer;
10
+ key: "Policy" | "Ed25519" | "Secp256r1";
11
+ value: string;
12
12
  private constructor();
13
- static Policy(value: string): SignerKey;
14
- static Ed25519(value: Buffer): SignerKey;
15
- static Secp256r1(value: Buffer): SignerKey;
13
+ static Policy(policy: string): SignerKey;
14
+ static Ed25519(publicKey: string): SignerKey;
15
+ static Secp256r1(id: string): SignerKey;
16
16
  }
17
17
  export type SignerLimits = Map<string, SignerKey[] | undefined>;
18
18
  export declare enum SignerStore {
@@ -76,8 +76,9 @@ export declare class PasskeyKit extends PasskeyBase {
76
76
  addSecp256r1(keyId: Uint8Array, publicKey: Uint8Array, limits: SignerLimits, store: SignerStore): Promise<AssembledTransaction<import("@stellar/stellar-sdk/contract").Result<void, import("@stellar/stellar-sdk/contract").ErrorMessage>>>;
77
77
  addEd25519(publicKey: string, limits: SignerLimits, store: SignerStore): Promise<AssembledTransaction<import("@stellar/stellar-sdk/contract").Result<void, import("@stellar/stellar-sdk/contract").ErrorMessage>>>;
78
78
  addPolicy(policy: string, limits: SignerLimits, store: SignerStore): Promise<AssembledTransaction<import("@stellar/stellar-sdk/contract").Result<void, import("@stellar/stellar-sdk/contract").ErrorMessage>>>;
79
- remove(key: SignerKey): Promise<AssembledTransaction<import("@stellar/stellar-sdk/contract").Result<void, import("@stellar/stellar-sdk/contract").ErrorMessage>>>;
79
+ remove(signer: SignerKey): Promise<AssembledTransaction<import("@stellar/stellar-sdk/contract").Result<void, import("@stellar/stellar-sdk/contract").ErrorMessage>>>;
80
80
  private getSignerLimits;
81
+ private getSignerKey;
81
82
  private getPublicKey;
82
83
  private compactSignature;
83
84
  }