@@ -18,35 +18,33 @@ resolver = "2"
1818#  Ensure all dependencies + feats are mapped to crate features for correct usage
1919#  default features often have std breaking no_std and potentially other unwanted
2020[dependencies ]
21- aes  = {  version  =  " 0.8.4 " ,  default-features  =  false ,  optional  =  true  } 
21+ #  Cryptographic dependencies 
2222aead  = { version  = " 0.5.2"  , default-features  = false , optional  = true  }
23+ aes  = { version  = " 0.8.4"  , default-features  = false , optional  = true  }
2324aes-gcm  = { version  = " 0.10.3"  , default-features  = false , optional  = true  }
24- ccm  = { version  = " 0.5.0"  , optional  = true ,  default-features  = false  }
25+ ccm  = { version  = " 0.5.0"  , default-features  = false ,  optional  = true  }
2526chacha20poly1305  = { version  = " 0.10.1"  , default-features  = false , optional  = true  }
2627crypto-common  = { version  = " 0.1.6"  , default-features  = false  }
2728der  = { version  = " 0.7.9"  , default-features  = false , optional  = true  }
2829digest  = { version  = " 0.10.7"  , default-features  = false  }
2930ecdsa  = { version  = " 0.16.9"  , default-features  = false , optional  = true  }
3031ed25519-dalek  = { version  = " 2"  , default-features  = false , optional  = true  }
32+ elliptic-curve  = { version  = " 0.13.8"  , default-features  = false , optional  = true  }
3133hmac  = { version  = " 0.12.1"  , default-features  = false  }
3234p256  = { version  = " 0.13.2"  , default-features  = false , optional  = true  }
3335p384  = { version  = " 0.13.0"  , default-features  = false , optional  = true  }
3436p521  = { version  = " 0.13.3"  , default-features  = false , optional  = true  }
3537pkcs1  = { version  = " 0.7.5"  , default-features  = false , optional  = true  }
36- pkcs8  = { version  = " 0.10.2"  , default-features  = false , features  = [
37-     " pkcs5"  ,
38- ], optional  = true  }
39- rsa  = { version  = " 0.9.7"  , default-features  = false , features  = [
40-     " sha2"  ,
41- ], optional  = true  }
38+ pkcs8  = { version  = " 0.10.2"  , default-features  = false , optional  = true  }
39+ rsa  = { version  = " 0.9.7"  , default-features  = false , optional  = true  }
4240sec1  = { version  = " 0.7.3"  , default-features  = false , optional  = true  }
4341sha2  = { version  = " 0.10.8"  , default-features  = false  }
4442signature  = { version  = " 2.2.0"  , default-features  = false , optional  = true  }
43+ typenum  = { version  = " 1.17.0"  , features  = [" no_std"  , " const-generics"  ] }
4544x25519-dalek  = { version  = " 2"  , default-features  = false , optional  = true  }
4645
47- getrandom  = { version  = " 0.2"  , default-features  = false , features  = [
48-     " custom" 
49- ] }
46+ #  External groups
47+ getrandom  = { version  = " 0.2"  , default-features  = false , features  = [" custom"  ] }
5048paste  = { version  = " 1.0.15"  , default-features  = false  }
5149pki-types  = { package  = " rustls-pki-types"  , version  = " 1.10.0"  , default-features  = false  }
5250rand_core  = { version  = " 0.6.4"  , default-features  = false , features  = [
@@ -56,32 +54,27 @@ rustls = { version = "0.23.19", default-features = false }
5654webpki  = { package  = " rustls-webpki"  , version  = " 0.102.8"  , default-features  = false , optional  = true  }
5755
5856[target .'cfg(target_arch  =  "wasm32")' .dependencies ]
59- getrandom  = { version  = " 0.2"  , features  = [
60-     " js" 
61- ] }
57+ getrandom  = { version  = " 0.2"  , features  = [" wasm-bindgen"  ] }
6258
6359[dev-dependencies ]
6460bytes  = { version  = " 1.9.0"  , default-features  = false  }
65- itertools  = " 0.13.0" 
66- rsa  = { version  = " 0.9.7"  , default-features  = false , features  = [
67-     " sha2"  ,
68- ] }
61+ itertools  = { version  = " 0.13.0"  , default-features  = false  }
62+ rsa  = { version  = " 0.9.7"  , default-features  = false , features  = [" sha2"  ] }
6963rustls  = { version  = " 0.23.19"  , default-features  = false , features  = [" std"  ] }
70- sha2  = { version  = " 0.10.8"  , default-features  = false ,  features  = [ " oid " ]  }
71- spki  = { version  = " 0.7.3"  , features  = [" alloc"  ] }
64+ sha2  = { version  = " 0.10.8"  , default-features  = false  }
65+ spki  = { version  = " 0.7.3"  , default-features  =  false ,  features  = [" alloc"  ] }
7266x509-cert  = { version  = " 0.2.5"  , default-features  = false , features  = [
7367    " builder"  ,
74-     " pem" 
7568] }
7669
7770[features ]
78- default  = [" std"  , " tls12"  , " zeroize"  , " full"  ]
71+ default  = [" std"  , " tls12"  , " zeroize"  , " full" ,  " fast "  ]
7972full  = [
8073    " aead-full"  ,
81-     " ecdsa -full"  ,
82-     " eddsa -full"  ,
74+     " sign -full"  ,
75+     " verify -full"  ,
8376    " kx-full"  ,
84-     " rsa -full"  ,
77+     " hash -full"  ,
8578    " format"  ,
8679]
8780format  = [" pem"  , " pkcs1"  , " pkcs8"  , " sec1"  ]
@@ -90,69 +83,143 @@ tls12 = ["rustls/tls12"]
9083
9184#  RustCrypto is preparing to migrate to core::error::Error
9285#  and in before most of the use case for std is just std::error::Error 
93- std  = [" alloc"  ]
94- alloc  = [" ecdsa?/alloc"  , " signature?/alloc"  ]
86+ std  = [" alloc"  , " rustls/std"  ]
87+ alloc  = [
88+     " ecdsa?/alloc"  ,
89+     " elliptic-curve?/alloc"  ,
90+     " pkcs8?/alloc"  ,
91+     " sec1?/alloc"  ,
92+     " signature?/alloc"  ,
93+ ]
94+ zeroize  = [
95+     " aes-gcm?/zeroize"  ,
96+     " aes?/zeroize"  ,
97+     " der?/zeroize"  ,
98+     " ed25519-dalek?/zeroize"  ,
99+     " pkcs1?/zeroize"  ,
100+     " sec1?/zeroize"  ,
101+     " x25519-dalek?/zeroize"  ,
102+ ]
103+ subtle  = [" digest/subtle"  , " pkcs8?/subtle"  , " sec1?/subtle"  ]
104+ fast  = [
105+     " ed25519-dalek?/fast"  ,
106+     " rsa?/u64_digit"  ,
107+     " x25519-dalek?/precomputed-tables"  ,
108+ ]
95109
96110nist  = []
97111p256  = [" dep:p256"  , " nist"  ]
98112p384  = [" dep:p384"  , " nist"  ]
99113p521  = [" dep:p521"  , " nist"  ]
100114ed25519  = [" dep:ed25519-dalek"  ]
101115
102- verify  = [" dep:webpki"  ]
103- 
104- ecdsa  = [" dep:ecdsa"  , " verify"  , " signature"  , " rand"  , " der"  ]
105- ecdsa-p256  = [" p256"  , " p256/ecdsa"  , " ecdsa"  ]
106- ecdsa-p384  = [" p384"  , " p384/ecdsa"  , " ecdsa"  ]
107- ecdsa-p521  = [" p521"  , " p521/ecdsa"  , " ecdsa"  ]
116+ ecdsa  = [" dep:ecdsa"  , " verify"  , " signature"  , " rand"  , " der"  , " elliptic-curve"  ]
117+ ecdsa-p256  = [" ecdsa"  , " p256"  , " p256/ecdsa"  ]
118+ ecdsa-p384  = [" ecdsa"  , " p384"  , " p384/ecdsa"  ]
119+ ecdsa-p521  = [" ecdsa"  , " p521"  , " p521/ecdsa"  ]
108120ecdsa-full  = [" ecdsa-p256"  , " ecdsa-p384"  , " ecdsa-p521"  ]
109121
110- eddsa  = [" verify"  , " signature"  ]
111- eddsa-ed25519  = [" ed25519 "  , " eddsa "  ]
122+ eddsa  = [" verify"  , " signature" ,  " elliptic-curve "  ]
123+ eddsa-ed25519  = [" eddsa "  , " ed25519 "  ]
112124eddsa-full  = [" eddsa-ed25519"  ]
113125
114- kx  = [" rand"  ]
115- kx-x25519  = [" dep:x25519-dalek"  , " kx"  ]
116- kx-p256  = [" p256"  , " p256/ecdh"  , " kx"  ]
117- kx-p384  = [" p384"  , " p384/ecdh"  , " kx"  ]
118- kx-p521  = [" p521"  , " p521/ecdh"  , " kx"  ]
126+ kx  = [" rand"  , " elliptic-curve"  ]
127+ kx-x25519  = [" kx"  , " dep:x25519-dalek"  ]
128+ kx-nist  = [" sec1"  ]
129+ kx-p256  = [" kx"  , " p256"  , " kx-nist"  , " p256/ecdh"  ]
130+ kx-p384  = [" kx"  , " p384"  , " kx-nist"  , " p384/ecdh"  ]
131+ kx-p521  = [" kx"  , " p521"  , " kx-nist"  , " p521/ecdh"  ]
119132kx-full  = [" kx-x25519"  , " kx-p256"  , " kx-p384"  , " kx-p521"  ]
120133
121- rsa  = [" dep:rsa"  , " rsa/sha2"  , " verify " ,  " signature " ,  " pkcs1"  ]
134+ rsa  = [" dep:rsa"  , " rsa/sha2"  , " pkcs1"  ]
122135rsa-pkcs1  = [" rsa"  , " pkcs1"  ]
123136rsa-pss  = [" rsa"  ]
124- rsa-full  = [" rsa-pkcs1"  , " rsa-pss"  ]
125137
126138aead  = [" dep:aead"  ]
127- aes-gcm  = [" dep:aes-gcm"  , " aes"  , " gcm"  , " aead"  ]
128- aes-ccm  = [" aes"  , " ccm"  , " aead"  ]
129- chacha20poly1305  = [" dep:chacha20poly1305"  , " aead"  ]
130- aead-full  = [" aes-gcm"  , " aes-ccm"  , " chacha20poly1305"  ]
139+ aead-aes-gcm  = [" aead"  , " aes-gcm"  ]
140+ aead-aes-ccm  = [" aead"  , " aes-ccm"  ]
141+ aead-chacha20poly1305  = [" aead"  , " chacha20poly1305"  ]
142+ aead-full  = [" aead-aes-gcm"  , " aead-aes-ccm"  , " aead-chacha20poly1305"  ]
143+ 
144+ sign  = [" signature"  , " der"  ]
145+ sign-ecdsa-nist  = [" sign"  ]
146+ sign-ecdsa-p256  = [" sign-ecdsa-nist"  , " ecdsa-p256"  ]
147+ sign-ecdsa-p384  = [" sign-ecdsa-nist"  , " ecdsa-p384"  ]
148+ sign-ecdsa-p521  = [" sign-ecdsa-nist"  , " ecdsa-p521"  ]
149+ sign-eddsa  = [" sign"  ]
150+ sign-eddsa-ed25519  = [" sign-eddsa"  , " eddsa-ed25519"  ]
151+ sign-rsa  = [" sign"  , " rsa"  ]
152+ sign-rsa-pkcs1  = [" sign-rsa"  , " rsa-pkcs1"  ]
153+ sign-rsa-pss  = [" sign-rsa"  , " rsa-pss"  ]
154+ sign-full  = [
155+     " sign-ecdsa-p256"  ,
156+     " sign-ecdsa-p384"  ,
157+     " sign-ecdsa-p521"  ,
158+     " sign-eddsa-ed25519"  ,
159+     " sign-rsa-pkcs1"  ,
160+     " sign-rsa-pss"  ,
161+ ]
162+ 
163+ verify  = [" dep:webpki"  ]
164+ verify-ecdsa-nist  = [" verify"  ]
165+ verify-ecdsa-p256  = [" verify-ecdsa-nist"  , " ecdsa-p256"  ]
166+ verify-ecdsa-p256-sha256  = [" verify-ecdsa-p256"  , " hash-sha256"  ]
167+ verify-ecdsa-p256-sha384  = [" verify-ecdsa-p256"  , " hash-sha384"  ]
168+ verify-ecdsa-p384  = [" verify-ecdsa-nist"  , " ecdsa-p384"  ]
169+ verify-ecdsa-p384-sha256  = [" verify-ecdsa-p384"  , " hash-sha256"  ]
170+ verify-ecdsa-p384-sha384  = [" verify-ecdsa-p384"  , " hash-sha384"  ]
171+ verify-eddsa-ed25519  = [" verify"  , " eddsa-ed25519"  ]
172+ verify-rsa-pkcs1  = [" verify"  , " rsa-pkcs1"  ]
173+ verify-rsa-pkcs1-sha256  = [" verify-rsa-pkcs1"  , " hash-sha256"  ]
174+ verify-rsa-pkcs1-sha384  = [" verify-rsa-pkcs1"  , " hash-sha384"  ]
175+ verify-rsa-pkcs1-sha512  = [" verify-rsa-pkcs1"  , " hash-sha512"  ]
176+ verify-rsa-pss  = [" verify"  , " rsa-pss"  ]
177+ verify-rsa-pss-sha256  = [" verify-rsa-pss"  , " hash-sha256"  ]
178+ verify-rsa-pss-sha384  = [" verify-rsa-pss"  , " hash-sha384"  ]
179+ verify-rsa-pss-sha512  = [" verify-rsa-pss"  , " hash-sha512"  ]
180+ verify-full  = [
181+     " verify-ecdsa-p256-sha256"  ,
182+     " verify-ecdsa-p256-sha384"  ,
183+     " verify-ecdsa-p384-sha256"  ,
184+     " verify-ecdsa-p384-sha384"  ,
185+     " verify-eddsa-ed25519"  ,
186+     " verify-rsa-pkcs1-sha256"  ,
187+     " verify-rsa-pkcs1-sha384"  ,
188+     " verify-rsa-pkcs1-sha512"  ,
189+     " verify-rsa-pss-sha256"  ,
190+     " verify-rsa-pss-sha384"  ,
191+     " verify-rsa-pss-sha512"  ,
192+ ]
131193
132- #  TODO
133194hash  = []
195+ hash-sha224  = [" hash"  ]
134196hash-sha256  = [" hash"  ]
135197hash-sha384  = [" hash"  ]
136198hash-sha512  = [" hash"  ]
137- hash-full  = [" hash-sha256"  , " hash-sha384"  , " hash-sha512"  ]
199+ hash-full  = [" hash-sha224 " ,  " hash- sha256"  , " hash-sha384"  , " hash-sha512"  ]
138200
139201#  Formats
140202der  = [" dep:der"  ]
141- sec1  = [" dep:sec1"  , " der "  ]
142- pem  = [" sec1 ?/pem"  , " pkcs8 ?/pem" ,  " p256?/pem " ,  " p384?/pem " ,  " p521?/pem " ,  " der "  ]
143- pkcs1  = [" dep:pkcs1" ,  " der "  ]
203+ sec1  = [" dep:sec1"  , " elliptic-curve?/sec1 "  ]
204+ pem  = [" elliptic-curve ?/pem"  , " ecdsa ?/pem"  ]
205+ pkcs1  = [" dep:pkcs1"  ]
144206pkcs8  = [
145207    " dep:pkcs8"  ,
208+     " ecdsa?/pkcs8"  ,
146209    " ed25519-dalek?/pkcs8"  ,
147-     " sec1 ?/pkcs8"  ,
210+     " elliptic-curve ?/pkcs8"  ,
148211    " p256?/pkcs8"  ,
149212    " p384?/pkcs8"  ,
150213    " p521?/pkcs8"  ,
151-     " der "  ,
214+     " sec1?/pkcs8 "  ,
152215]
153216
154- signature  = [" dep:signature"  ]
155- rand  = [" dep:rand_core"  , " signature?/rand_core"  ]
156217aes  = [" dep:aes"  ]
218+ aes-ccm  = [" aes"  , " ccm"  ]
219+ aes-gcm  = [" dep:aes-gcm"  , " aes"  , " gcm"  ]
157220ccm  = [" dep:ccm"  ]
158- gcm  = []
221+ chacha20poly1305  = [" dep:chacha20poly1305"  ]
222+ elliptic-curve  = [" dep:elliptic-curve"  ]
223+ gcm  = []
224+ rand  = [" dep:rand_core"  , " signature?/rand_core"  ]
225+ signature  = [" dep:signature"  ]
0 commit comments