@@ -21,11 +21,11 @@ use std::{convert::TryFrom, ops::Add, sync::Mutex};
2121use digest:: { Digest , FixedOutput , Output } ;
2222use ecdsa:: {
2323 der:: { MaxOverhead , MaxSize , Signature as DerSignature } ,
24- hazmat:: { DigestPrimitive , SignPrimitive } ,
25- Signature , SignatureSize , VerifyingKey ,
24+ hazmat:: DigestPrimitive ,
25+ EcdsaCurve , Signature , SignatureSize , VerifyingKey ,
2626} ;
2727use elliptic_curve:: {
28- generic_array :: ArrayLength ,
28+ array :: ArraySize ,
2929 ops:: Invert ,
3030 sec1:: { FromEncodedPoint , ModulusSize , ToEncodedPoint } ,
3131 subtle:: CtOption ,
@@ -70,7 +70,7 @@ use x509_cert::{
7070#[ derive( Debug ) ]
7171pub struct EcSigner < ' ctx , C >
7272where
73- C : PrimeCurve + CurveArithmetic ,
73+ C : PrimeCurve + CurveArithmetic + EcdsaCurve ,
7474{
7575 context : Mutex < & ' ctx mut TransientKeyContext > ,
7676 key_material : KeyMaterial ,
8080
8181impl < ' ctx , C > EcSigner < ' ctx , C >
8282where
83- C : PrimeCurve + CurveArithmetic ,
83+ C : PrimeCurve + CurveArithmetic + EcdsaCurve ,
8484 C : AssociatedTpmCurve ,
8585 FieldBytesSize < C > : ModulusSize ,
8686 AffinePoint < C > : FromEncodedPoint < C > + ToEncodedPoint < C > ,
@@ -106,7 +106,7 @@ where
106106
107107impl < C > EcSigner < ' _ , C >
108108where
109- C : PrimeCurve + CurveArithmetic ,
109+ C : PrimeCurve + CurveArithmetic + EcdsaCurve ,
110110 C : AssociatedTpmCurve ,
111111{
112112 /// Key parameters for this curve, selected digest is the one selected by DigestPrimitive
@@ -126,7 +126,7 @@ where
126126 /// The hashing algorithm `D` is the digest that will be used for signatures (SHA-256, SHA3-256, ...).
127127 pub fn key_params < D > ( ) -> KeyParams
128128 where
129- D : FixedOutput < OutputSize = FieldBytesSize < C > > ,
129+ D : FixedOutput ,
130130 D : AssociatedHashingAlgorithm ,
131131 {
132132 KeyParams :: Ecc {
@@ -139,9 +139,9 @@ where
139139
140140impl < C > AsRef < VerifyingKey < C > > for EcSigner < ' _ , C >
141141where
142- C : PrimeCurve + CurveArithmetic ,
143- Scalar < C > : Invert < Output = CtOption < Scalar < C > > > + SignPrimitive < C > ,
144- SignatureSize < C > : ArrayLength < u8 > ,
142+ C : PrimeCurve + CurveArithmetic + EcdsaCurve ,
143+ Scalar < C > : Invert < Output = CtOption < Scalar < C > > > ,
144+ SignatureSize < C > : ArraySize ,
145145{
146146 fn as_ref ( & self ) -> & VerifyingKey < C > {
147147 & self . verifying_key
@@ -150,21 +150,21 @@ where
150150
151151impl < C > KeypairRef for EcSigner < ' _ , C >
152152where
153- C : PrimeCurve + CurveArithmetic ,
154- Scalar < C > : Invert < Output = CtOption < Scalar < C > > > + SignPrimitive < C > ,
155- SignatureSize < C > : ArrayLength < u8 > ,
153+ C : PrimeCurve + CurveArithmetic + EcdsaCurve ,
154+ Scalar < C > : Invert < Output = CtOption < Scalar < C > > > ,
155+ SignatureSize < C > : ArraySize ,
156156{
157157 type VerifyingKey = VerifyingKey < C > ;
158158}
159159
160160impl < C , D > DigestSigner < D , Signature < C > > for EcSigner < ' _ , C >
161161where
162- C : PrimeCurve + CurveArithmetic ,
162+ C : PrimeCurve + CurveArithmetic + EcdsaCurve ,
163163 C : AssociatedTpmCurve ,
164- D : Digest + FixedOutput < OutputSize = FieldBytesSize < C > > ,
164+ D : Digest + FixedOutput ,
165165 D : AssociatedHashingAlgorithm ,
166- Scalar < C > : Invert < Output = CtOption < Scalar < C > > > + SignPrimitive < C > ,
167- SignatureSize < C > : ArrayLength < u8 > ,
166+ Scalar < C > : Invert < Output = CtOption < Scalar < C > > > ,
167+ SignatureSize < C > : ArraySize ,
168168 TpmDigest : From < Output < D > > ,
169169{
170170 fn try_sign_digest ( & self , digest : D ) -> Result < Signature < C > , SigError > {
@@ -195,16 +195,16 @@ where
195195
196196impl < C , D > DigestSigner < D , DerSignature < C > > for EcSigner < ' _ , C >
197197where
198- C : PrimeCurve + CurveArithmetic ,
198+ C : PrimeCurve + CurveArithmetic + EcdsaCurve ,
199199 C : AssociatedTpmCurve ,
200- D : Digest + FixedOutput < OutputSize = FieldBytesSize < C > > ,
200+ D : Digest + FixedOutput ,
201201 D : AssociatedHashingAlgorithm ,
202- Scalar < C > : Invert < Output = CtOption < Scalar < C > > > + SignPrimitive < C > ,
203- SignatureSize < C > : ArrayLength < u8 > ,
202+ Scalar < C > : Invert < Output = CtOption < Scalar < C > > > ,
203+ SignatureSize < C > : ArraySize ,
204204 TpmDigest : From < Output < D > > ,
205205
206- MaxSize < C > : ArrayLength < u8 > ,
207- <FieldBytesSize < C > as Add >:: Output : Add < MaxOverhead > + ArrayLength < u8 > ,
206+ MaxSize < C > : ArraySize ,
207+ <FieldBytesSize < C > as Add >:: Output : Add < MaxOverhead > + ArraySize ,
208208{
209209 fn try_sign_digest ( & self , digest : D ) -> Result < DerSignature < C > , SigError > {
210210 let signature: Signature < _ > = self . try_sign_digest ( digest) ?;
@@ -214,11 +214,11 @@ where
214214
215215impl < C > Signer < Signature < C > > for EcSigner < ' _ , C >
216216where
217- C : PrimeCurve + CurveArithmetic + DigestPrimitive ,
217+ C : PrimeCurve + CurveArithmetic + EcdsaCurve + DigestPrimitive ,
218218 C : AssociatedTpmCurve ,
219219 <C as DigestPrimitive >:: Digest : AssociatedHashingAlgorithm ,
220- Scalar < C > : Invert < Output = CtOption < Scalar < C > > > + SignPrimitive < C > ,
221- SignatureSize < C > : ArrayLength < u8 > ,
220+ Scalar < C > : Invert < Output = CtOption < Scalar < C > > > ,
221+ SignatureSize < C > : ArraySize ,
222222 TpmDigest : From < Output < <C as DigestPrimitive >:: Digest > > ,
223223{
224224 fn try_sign ( & self , msg : & [ u8 ] ) -> Result < Signature < C > , SigError > {
@@ -228,15 +228,15 @@ where
228228
229229impl < C > Signer < DerSignature < C > > for EcSigner < ' _ , C >
230230where
231- C : PrimeCurve + CurveArithmetic + DigestPrimitive ,
231+ C : PrimeCurve + CurveArithmetic + EcdsaCurve + DigestPrimitive ,
232232 C : AssociatedTpmCurve ,
233233 <C as DigestPrimitive >:: Digest : AssociatedHashingAlgorithm ,
234- Scalar < C > : Invert < Output = CtOption < Scalar < C > > > + SignPrimitive < C > ,
235- SignatureSize < C > : ArrayLength < u8 > ,
234+ Scalar < C > : Invert < Output = CtOption < Scalar < C > > > ,
235+ SignatureSize < C > : ArraySize ,
236236 TpmDigest : From < Output < <C as DigestPrimitive >:: Digest > > ,
237237
238- MaxSize < C > : ArrayLength < u8 > ,
239- <FieldBytesSize < C > as Add >:: Output : Add < MaxOverhead > + ArrayLength < u8 > ,
238+ MaxSize < C > : ArraySize ,
239+ <FieldBytesSize < C > as Add >:: Output : Add < MaxOverhead > + ArraySize ,
240240{
241241 fn try_sign ( & self , msg : & [ u8 ] ) -> Result < DerSignature < C > , SigError > {
242242 self . try_sign_digest ( C :: Digest :: new_with_prefix ( msg) )
@@ -245,9 +245,9 @@ where
245245
246246impl < C > SignatureAlgorithmIdentifier for EcSigner < ' _ , C >
247247where
248- C : PrimeCurve + CurveArithmetic ,
249- Scalar < C > : Invert < Output = CtOption < Scalar < C > > > + SignPrimitive < C > ,
250- SignatureSize < C > : ArrayLength < u8 > ,
248+ C : PrimeCurve + CurveArithmetic + EcdsaCurve ,
249+ Scalar < C > : Invert < Output = CtOption < Scalar < C > > > ,
250+ SignatureSize < C > : ArraySize ,
251251 Signature < C > : AssociatedAlgorithmIdentifier < Params = AnyRef < ' static > > ,
252252{
253253 type Params = AnyRef < ' static > ;
0 commit comments