@@ -85,10 +85,14 @@ pub trait OriginKeyStore {
8585 async fn remove ( & self , truncated_token_key_id : & TruncatedTokenKeyId ) -> bool ;
8686}
8787
88- /// Serializes a keypair into a DER-encoded PKCS#8 document.
89- #[ must_use]
90- pub fn serialize_public_key ( public_key : & PublicKey ) -> Vec < u8 > {
91- public_key. to_spki ( ) . unwrap ( )
88+ /// Serializes a public key into a DER-encoded SPKI document.
89+ ///
90+ /// # Errors
91+ /// Returns an error if the public key cannot be serialized.
92+ pub fn serialize_public_key (
93+ public_key : & PublicKey ,
94+ ) -> Result < Vec < u8 > , blind_rsa_signatures:: Error > {
95+ public_key. to_spki ( )
9296}
9397
9498const KEYSIZE_IN_BITS : usize = 2048 ;
@@ -119,8 +123,10 @@ impl IssuerServer {
119123 let key_pair = KeyPair :: generate ( rng, KEYSIZE_IN_BITS )
120124 . inspect_err ( |e| debug ! ( error: % = e; "Failed to generate RSA keypair" ) )
121125 . map_err ( |source| CreateKeypairError :: KeyGenerationFailed { source } ) ?;
122- let truncated_token_key_id =
123- truncate_token_key_id ( & public_key_to_token_key_id ( & key_pair. pk ) ) ;
126+ let truncated_token_key_id = truncate_token_key_id (
127+ & public_key_to_token_key_id ( & key_pair. pk )
128+ . map_err ( |source| CreateKeypairError :: KeySerializationFailed { source } ) ?,
129+ ) ;
124130
125131 if key_store. get ( & truncated_token_key_id) . await . is_some ( ) {
126132 continue ;
@@ -170,11 +176,21 @@ impl IssuerServer {
170176 }
171177
172178 /// Sets the given keypair.
179+ ///
180+ /// # Errors
181+ /// Returns an error if the public key cannot be serialized.
173182 #[ cfg( feature = "kat" ) ]
174- pub async fn set_keypair < IKS : IssuerKeyStore > ( & self , key_store : & IKS , key_pair : KeyPair ) {
175- let truncated_token_key_id =
176- truncate_token_key_id ( & public_key_to_token_key_id ( & key_pair. pk ) ) ;
183+ pub async fn set_keypair < IKS : IssuerKeyStore > (
184+ & self ,
185+ key_store : & IKS ,
186+ key_pair : KeyPair ,
187+ ) -> Result < ( ) , CreateKeypairError > {
188+ let truncated_token_key_id = truncate_token_key_id (
189+ & public_key_to_token_key_id ( & key_pair. pk )
190+ . map_err ( |source| CreateKeypairError :: KeySerializationFailed { source } ) ?,
191+ ) ;
177192 key_store. insert ( truncated_token_key_id, key_pair) . await ;
193+ Ok ( ( ) )
178194 }
179195}
180196
0 commit comments