@@ -76,13 +76,13 @@ use crate::{
7676#[ async_generic( async_signature(
7777 signer: & dyn AsyncRawSigner ,
7878 data: & [ u8 ] ,
79- box_size: usize ,
79+ box_size: Option < usize > ,
8080 tss: TimeStampStorage
8181) ) ]
8282pub fn sign (
8383 signer : & dyn RawSigner ,
8484 data : & [ u8 ] ,
85- box_size : usize ,
85+ box_size : Option < usize > ,
8686 tss : TimeStampStorage ,
8787) -> Result < Vec < u8 > , CoseError > {
8888 if _sync {
@@ -101,13 +101,13 @@ pub fn sign(
101101#[ async_generic( async_signature(
102102 signer: & dyn AsyncRawSigner ,
103103 data: & [ u8 ] ,
104- box_size: usize ,
104+ box_size: Option < usize > ,
105105 tss: TimeStampStorage
106106) ) ]
107107pub fn sign_v1 (
108108 signer : & dyn RawSigner ,
109109 data : & [ u8 ] ,
110- box_size : usize ,
110+ box_size : Option < usize > ,
111111 tss : TimeStampStorage ,
112112) -> Result < Vec < u8 > , CoseError > {
113113 let alg = signer. alg ( ) ;
@@ -171,13 +171,13 @@ pub fn sign_v1(
171171#[ async_generic( async_signature(
172172 signer: & dyn AsyncRawSigner ,
173173 data: & [ u8 ] ,
174- box_size: usize ,
174+ box_size: Option < usize > ,
175175 tss: TimeStampStorage
176176) ) ]
177177pub fn sign_v2 (
178178 signer : & dyn RawSigner ,
179179 data : & [ u8 ] ,
180- box_size : usize ,
180+ box_size : Option < usize > ,
181181 tss : TimeStampStorage ,
182182) -> Result < Vec < u8 > , CoseError > {
183183 let alg = signer. alg ( ) ;
@@ -283,7 +283,7 @@ fn build_protected_header(
283283 Ok ( ph2)
284284}
285285
286- #[ async_generic( async_signature( signer: & dyn AsyncRawSigner , data: & [ u8 ] , p_header: & ProtectedHeader , tss: TimeStampStorage , ) ) ]
286+ #[ async_generic( async_signature( signer: & dyn AsyncRawSigner , data: & [ u8 ] , p_header: & ProtectedHeader , tss: TimeStampStorage , ) ) ]
287287fn build_unprotected_header (
288288 signer : & dyn RawSigner ,
289289 data : & [ u8 ] ,
@@ -332,13 +332,17 @@ const PAD_OFFSET: usize = 7;
332332// when that happens a second padding is added to change the remaining needed
333333// padding. The default initial guess works for almost all sizes, without the
334334// need for additional loops.
335- fn pad_cose_sig ( sign1 : & mut CoseSign1 , end_size : usize ) -> Result < Vec < u8 > , CoseError > {
335+ fn pad_cose_sig ( sign1 : & mut CoseSign1 , end_size : Option < usize > ) -> Result < Vec < u8 > , CoseError > {
336336 let mut sign1_clone = sign1. clone ( ) ;
337337
338338 let cur_vec = sign1_clone
339339 . to_tagged_vec ( )
340340 . map_err ( |e| CoseError :: CborGenerationError ( e. to_string ( ) ) ) ?;
341341
342+ let Some ( end_size) = end_size else {
343+ return Ok ( cur_vec) ;
344+ } ;
345+
342346 let cur_size = cur_vec. len ( ) ;
343347 if cur_size == end_size {
344348 return Ok ( cur_vec) ;
@@ -375,7 +379,7 @@ fn pad_cose_sig(sign1: &mut CoseSign1, end_size: usize) -> Result<Vec<u8>, CoseE
375379 Label :: Text ( PAD . to_string ( ) ) ,
376380 Value :: Bytes ( vec ! [ 0u8 ; target_guess] ) ,
377381 ) ) ;
378- return pad_cose_sig ( & mut sign1_clone, end_size) ;
382+ return pad_cose_sig ( & mut sign1_clone, Some ( end_size) ) ;
379383 }
380384
381385 // Get current CBOR vec to see if we reached target size.
@@ -397,5 +401,5 @@ fn pad_cose_sig(sign1: &mut CoseSign1, end_size: usize) -> Result<Vec<u8>, CoseE
397401 Value :: Bytes ( vec ! [ 0u8 ; last_pad - 10 ] ) ,
398402 ) ) ;
399403
400- pad_cose_sig ( sign1, end_size)
404+ pad_cose_sig ( sign1, Some ( end_size) )
401405}
0 commit comments