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 +3 -3
- package/src/kit.ts +42 -55
- package/types/kit.d.ts +7 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "passkey-kit",
|
|
3
|
-
"version": "0.7.
|
|
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
|
-
"
|
|
18
|
-
"
|
|
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
|
|
12
|
+
private constructor(public key: "Policy" | "Ed25519" | "Secp256r1", public value: string) { }
|
|
15
13
|
|
|
16
|
-
static Policy(
|
|
17
|
-
return new SignerKey("Policy",
|
|
14
|
+
static Policy(policy: string): SignerKey {
|
|
15
|
+
return new SignerKey("Policy", policy);
|
|
18
16
|
}
|
|
19
17
|
|
|
20
|
-
static Ed25519(
|
|
21
|
-
return new SignerKey("Ed25519",
|
|
18
|
+
static Ed25519(publicKey: string): SignerKey {
|
|
19
|
+
return new SignerKey("Ed25519", publicKey);
|
|
22
20
|
}
|
|
23
21
|
|
|
24
|
-
static Secp256r1(
|
|
25
|
-
return new SignerKey("Secp256r1",
|
|
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();
|
|
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(
|
|
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
|
-
|
|
497
|
-
|
|
498
|
-
|
|
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
|
-
|
|
11
|
-
value: string
|
|
10
|
+
key: "Policy" | "Ed25519" | "Secp256r1";
|
|
11
|
+
value: string;
|
|
12
12
|
private constructor();
|
|
13
|
-
static Policy(
|
|
14
|
-
static Ed25519(
|
|
15
|
-
static Secp256r1(
|
|
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(
|
|
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
|
}
|