@@ -2,6 +2,8 @@ use super::zklogin::ZkLoginAuthenticator;
2
2
use super :: zklogin:: ZkLoginPublicIdentifier ;
3
3
use super :: Ed25519PublicKey ;
4
4
use super :: Ed25519Signature ;
5
+ use super :: PasskeyAuthenticator ;
6
+ use super :: PasskeyPublicKey ;
5
7
use super :: Secp256k1PublicKey ;
6
8
use super :: Secp256k1Signature ;
7
9
use super :: Secp256r1PublicKey ;
@@ -51,6 +53,7 @@ pub enum MultisigMemberPublicKey {
51
53
Secp256k1 ( Secp256k1PublicKey ) ,
52
54
Secp256r1 ( Secp256r1PublicKey ) ,
53
55
ZkLogin ( ZkLoginPublicIdentifier ) ,
56
+ Passkey ( PasskeyPublicKey ) ,
54
57
}
55
58
56
59
/// A member in a multisig committee
@@ -328,6 +331,7 @@ pub enum MultisigMemberSignature {
328
331
Secp256k1 ( Secp256k1Signature ) ,
329
332
Secp256r1 ( Secp256r1Signature ) ,
330
333
ZkLogin ( Box < ZkLoginAuthenticator > ) ,
334
+ Passkey ( PasskeyAuthenticator ) ,
331
335
}
332
336
333
337
#[ cfg( feature = "serde" ) ]
@@ -337,6 +341,7 @@ mod serialization {
337
341
use crate :: crypto:: Base64Array33 ;
338
342
use crate :: crypto:: Base64Array34 ;
339
343
use crate :: Ed25519PublicKey ;
344
+ use crate :: PasskeyPublicKey ;
340
345
use crate :: Secp256k1PublicKey ;
341
346
use crate :: Secp256r1PublicKey ;
342
347
use crate :: SignatureScheme ;
@@ -383,6 +388,9 @@ mod serialization {
383
388
MultisigMemberPublicKey :: ZkLogin ( _) => Err ( serde:: ser:: Error :: custom (
384
389
"zklogin not supported in legacy multisig" ,
385
390
) ) ,
391
+ MultisigMemberPublicKey :: Passkey ( _) => Err ( serde:: ser:: Error :: custom (
392
+ "passkey not supported in legacy multisig" ,
393
+ ) ) ,
386
394
}
387
395
}
388
396
}
@@ -652,6 +660,7 @@ mod serialization {
652
660
Secp256k1 ( Secp256k1PublicKey ) ,
653
661
Secp256r1 ( Secp256r1PublicKey ) ,
654
662
ZkLogin ( ZkLoginPublicIdentifier ) ,
663
+ Passkey ( PasskeyPublicKey ) ,
655
664
}
656
665
657
666
#[ derive( serde_derive:: Serialize , serde_derive:: Deserialize ) ]
@@ -662,6 +671,7 @@ mod serialization {
662
671
Secp256k1 { public_key : Secp256k1PublicKey } ,
663
672
Secp256r1 { public_key : Secp256r1PublicKey } ,
664
673
ZkLogin ( ZkLoginPublicIdentifier ) ,
674
+ Passkey { public_key : PasskeyPublicKey } ,
665
675
}
666
676
667
677
impl Serialize for MultisigMemberPublicKey {
@@ -689,6 +699,11 @@ mod serialization {
689
699
MultisigMemberPublicKey :: ZkLogin ( public_id) => {
690
700
ReadableMemberPublicKey :: ZkLogin ( public_id. clone ( ) )
691
701
}
702
+ MultisigMemberPublicKey :: Passkey ( public_key) => {
703
+ ReadableMemberPublicKey :: Passkey {
704
+ public_key : * public_key,
705
+ }
706
+ }
692
707
} ;
693
708
readable. serialize ( serializer)
694
709
} else {
@@ -705,6 +720,9 @@ mod serialization {
705
720
MultisigMemberPublicKey :: ZkLogin ( public_id) => {
706
721
MemberPublicKey :: ZkLogin ( public_id. clone ( ) )
707
722
}
723
+ MultisigMemberPublicKey :: Passkey ( public_key) => {
724
+ MemberPublicKey :: Passkey ( * public_key)
725
+ }
708
726
} ;
709
727
binary. serialize ( serializer)
710
728
}
@@ -727,6 +745,7 @@ mod serialization {
727
745
Self :: Secp256r1 ( public_key)
728
746
}
729
747
ReadableMemberPublicKey :: ZkLogin ( public_id) => Self :: ZkLogin ( public_id) ,
748
+ ReadableMemberPublicKey :: Passkey { public_key } => Self :: Passkey ( public_key) ,
730
749
} )
731
750
} else {
732
751
let binary = MemberPublicKey :: deserialize ( deserializer) ?;
@@ -735,6 +754,7 @@ mod serialization {
735
754
MemberPublicKey :: Secp256k1 ( public_key) => Self :: Secp256k1 ( public_key) ,
736
755
MemberPublicKey :: Secp256r1 ( public_key) => Self :: Secp256r1 ( public_key) ,
737
756
MemberPublicKey :: ZkLogin ( public_id) => Self :: ZkLogin ( public_id) ,
757
+ MemberPublicKey :: Passkey ( public_key) => Self :: Passkey ( public_key) ,
738
758
} )
739
759
}
740
760
}
@@ -746,6 +766,7 @@ mod serialization {
746
766
Secp256k1 ( Secp256k1Signature ) ,
747
767
Secp256r1 ( Secp256r1Signature ) ,
748
768
ZkLogin ( Box < ZkLoginAuthenticator > ) ,
769
+ Passkey ( PasskeyAuthenticator ) ,
749
770
}
750
771
751
772
#[ derive( serde_derive:: Serialize , serde_derive:: Deserialize ) ]
@@ -756,6 +777,7 @@ mod serialization {
756
777
Secp256k1 { signature : Secp256k1Signature } ,
757
778
Secp256r1 { signature : Secp256r1Signature } ,
758
779
ZkLogin ( Box < ZkLoginAuthenticator > ) ,
780
+ Passkey ( PasskeyAuthenticator ) ,
759
781
}
760
782
761
783
impl Serialize for MultisigMemberSignature {
@@ -783,6 +805,9 @@ mod serialization {
783
805
MultisigMemberSignature :: ZkLogin ( authenticator) => {
784
806
ReadableMemberSignature :: ZkLogin ( authenticator. clone ( ) )
785
807
}
808
+ MultisigMemberSignature :: Passkey ( authenticator) => {
809
+ ReadableMemberSignature :: Passkey ( authenticator. clone ( ) )
810
+ }
786
811
} ;
787
812
readable. serialize ( serializer)
788
813
} else {
@@ -799,6 +824,9 @@ mod serialization {
799
824
MultisigMemberSignature :: ZkLogin ( authenticator) => {
800
825
MemberSignature :: ZkLogin ( authenticator. clone ( ) )
801
826
}
827
+ MultisigMemberSignature :: Passkey ( authenticator) => {
828
+ MemberSignature :: Passkey ( authenticator. clone ( ) )
829
+ }
802
830
} ;
803
831
binary. serialize ( serializer)
804
832
}
@@ -817,6 +845,7 @@ mod serialization {
817
845
ReadableMemberSignature :: Secp256k1 { signature } => Self :: Secp256k1 ( signature) ,
818
846
ReadableMemberSignature :: Secp256r1 { signature } => Self :: Secp256r1 ( signature) ,
819
847
ReadableMemberSignature :: ZkLogin ( authenticator) => Self :: ZkLogin ( authenticator) ,
848
+ ReadableMemberSignature :: Passkey ( authenticator) => Self :: Passkey ( authenticator) ,
820
849
} )
821
850
} else {
822
851
let binary = MemberSignature :: deserialize ( deserializer) ?;
@@ -825,6 +854,7 @@ mod serialization {
825
854
MemberSignature :: Secp256k1 ( signature) => Self :: Secp256k1 ( signature) ,
826
855
MemberSignature :: Secp256r1 ( signature) => Self :: Secp256r1 ( signature) ,
827
856
MemberSignature :: ZkLogin ( authenticator) => Self :: ZkLogin ( authenticator) ,
857
+ MemberSignature :: Passkey ( authenticator) => Self :: Passkey ( authenticator) ,
828
858
} )
829
859
}
830
860
}
0 commit comments