@@ -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