@@ -123,3 +123,126 @@ pub const P521_DOMAIN_NO_SEED: SpecifiedECDomain<'static> = SpecifiedECDomain {
123123 order : P521_ORDER ,
124124 cofactor : Some ( 1 ) ,
125125} ;
126+
127+ // Brainpool curve domain parameters from RFC 5639, Section 3.
128+ // https://datatracker.ietf.org/doc/html/rfc5639#section-3
129+
130+ const BRAINPOOLP256R1_FIELD : FieldID < ' static > = FieldID {
131+ field_type : asn1:: DefinedByMarker :: marker ( ) ,
132+ parameters : FieldParameters :: PrimeField ( asn1:: BigUint :: new ( b"\x00 \xa9 \xfb \x57 \xdb \xa1 \xee \xa9 \xbc \x3e \x66 \x0a \x90 \x9d \x83 \x8d \x72 \x6e \x3b \xf6 \x23 \xd5 \x26 \x20 \x28 \x20 \x13 \x48 \x1d \x1f \x6e \x53 \x77 " ) . unwrap ( ) ) ,
133+ } ;
134+ const BRAINPOOLP256R1_CURVE_A : & [ u8 ; 32 ] = b"\x7d \x5a \x09 \x75 \xfc \x2c \x30 \x57 \xee \xf6 \x75 \x30 \x41 \x7a \xff \xe7 \xfb \x80 \x55 \xc1 \x26 \xdc \x5c \x6c \xe9 \x4a \x4b \x44 \xf3 \x30 \xb5 \xd9 " ;
135+ const BRAINPOOLP256R1_CURVE_B : & [ u8 ; 32 ] = b"\x26 \xdc \x5c \x6c \xe9 \x4a \x4b \x44 \xf3 \x30 \xb5 \xd9 \xbb \xd7 \x7c \xbf \x95 \x84 \x16 \x29 \x5c \xf7 \xe1 \xce \x6b \xcc \xdc \x18 \xff \x8c \x07 \xb6 " ;
136+ const BRAINPOOLP256R1_SEED : asn1:: BitString < ' static > = asn1:: BitString :: new (
137+ b"\x75 \x7f \x59 \x58 \x49 \x0c \xfd \x47 \xd7 \xc1 \x9b \xb4 \x21 \x58 \xd9 \x55 \x4f \x7b \x46 \xbc " ,
138+ 0 ,
139+ )
140+ . unwrap ( ) ;
141+ const BRAINPOOLP256R1_UNCOMPRESSED_BASE : & [ u8 ; 65 ] = b"\x04 \x8b \xd2 \xae \xb9 \xcb \x7e \x57 \xcb \x2c \x4b \x48 \x2f \xfc \x81 \xb7 \xaf \xb9 \xde \x27 \xe1 \xe3 \xbd \x23 \xc2 \x3a \x44 \x53 \xbd \x9a \xce \x32 \x62 \x54 \x7e \xf8 \x35 \xc3 \xda \xc4 \xfd \x97 \xf8 \x46 \x1a \x14 \x61 \x1d \xc9 \xc2 \x77 \x45 \x13 \x2d \xed \x8e \x54 \x5c \x1d \x54 \xc7 \x2f \x04 \x69 \x97 " ;
142+ const BRAINPOOLP256R1_ORDER : asn1:: BigUint < ' static > = asn1:: BigUint :: new ( b"\x00 \xa9 \xfb \x57 \xdb \xa1 \xee \xa9 \xbc \x3e \x66 \x0a \x90 \x9d \x83 \x8d \x71 \x8c \x39 \x7a \xa3 \xb5 \x61 \xa6 \xf7 \x90 \x1e \x0e \x82 \x97 \x48 \x56 \xa7 " ) . unwrap ( ) ;
143+
144+ pub const BRAINPOOLP256R1_DOMAIN : SpecifiedECDomain < ' static > = SpecifiedECDomain {
145+ version : 1 ,
146+ field_id : BRAINPOOLP256R1_FIELD ,
147+ curve : Curve {
148+ a : BRAINPOOLP256R1_CURVE_A ,
149+ b : BRAINPOOLP256R1_CURVE_B ,
150+ seed : Some ( BRAINPOOLP256R1_SEED ) ,
151+ } ,
152+ base : BRAINPOOLP256R1_UNCOMPRESSED_BASE ,
153+ order : BRAINPOOLP256R1_ORDER ,
154+ cofactor : Some ( 1 ) ,
155+ } ;
156+
157+ pub const BRAINPOOLP256R1_DOMAIN_NO_SEED : SpecifiedECDomain < ' static > = SpecifiedECDomain {
158+ version : 1 ,
159+ field_id : BRAINPOOLP256R1_FIELD ,
160+ curve : Curve {
161+ a : BRAINPOOLP256R1_CURVE_A ,
162+ b : BRAINPOOLP256R1_CURVE_B ,
163+ seed : None ,
164+ } ,
165+ base : BRAINPOOLP256R1_UNCOMPRESSED_BASE ,
166+ order : BRAINPOOLP256R1_ORDER ,
167+ cofactor : Some ( 1 ) ,
168+ } ;
169+
170+ const BRAINPOOLP384R1_FIELD : FieldID < ' static > = FieldID {
171+ field_type : asn1:: DefinedByMarker :: marker ( ) ,
172+ parameters : FieldParameters :: PrimeField ( asn1:: BigUint :: new ( b"\x00 \x8c \xb9 \x1e \x82 \xa3 \x38 \x6d \x28 \x0f \x5d \x6f \x7e \x50 \xe6 \x41 \xdf \x15 \x2f \x71 \x09 \xed \x54 \x56 \xb4 \x12 \xb1 \xda \x19 \x7f \xb7 \x11 \x23 \xac \xd3 \xa7 \x29 \x90 \x1d \x1a \x71 \x87 \x47 \x00 \x13 \x31 \x07 \xec \x53 " ) . unwrap ( ) ) ,
173+ } ;
174+ const BRAINPOOLP384R1_CURVE_A : & [ u8 ; 48 ] = b"\x7b \xc3 \x82 \xc6 \x3d \x8c \x15 \x0c \x3c \x72 \x08 \x0a \xce \x05 \xaf \xa0 \xc2 \xbe \xa2 \x8e \x4f \xb2 \x27 \x87 \x13 \x91 \x65 \xef \xba \x91 \xf9 \x0f \x8a \xa5 \x81 \x4a \x50 \x3a \xd4 \xeb \x04 \xa8 \xc7 \xdd \x22 \xce \x28 \x26 " ;
175+ const BRAINPOOLP384R1_CURVE_B : & [ u8 ; 48 ] = b"\x04 \xa8 \xc7 \xdd \x22 \xce \x28 \x26 \x8b \x39 \xb5 \x54 \x16 \xf0 \x44 \x7c \x2f \xb7 \x7d \xe1 \x07 \xdc \xd2 \xa6 \x2e \x88 \x0e \xa5 \x3e \xeb \x62 \xd5 \x7c \xb4 \x39 \x02 \x95 \xdb \xc9 \x94 \x3a \xb7 \x86 \x96 \xfa \x50 \x4c \x11 " ;
176+ const BRAINPOOLP384R1_SEED : asn1:: BitString < ' static > = asn1:: BitString :: new (
177+ b"\xbc \xfb \xfa \x1c \x87 \x7c \x56 \x28 \x4d \xab \x79 \xcd \x4c \x2b \x32 \x93 \xd2 \x0e \x9e \x5e " ,
178+ 0 ,
179+ )
180+ . unwrap ( ) ;
181+ const BRAINPOOLP384R1_UNCOMPRESSED_BASE : & [ u8 ; 97 ] = b"\x04 \x1d \x1c \x64 \xf0 \x68 \xcf \x45 \xff \xa2 \xa6 \x3a \x81 \xb7 \xc1 \x3f \x6b \x88 \x47 \xa3 \xe7 \x7e \xf1 \x4f \xe3 \xdb \x7f \xca \xfe \x0c \xbd \x10 \xe8 \xe8 \x26 \xe0 \x34 \x36 \xd6 \x46 \xaa \xef \x87 \xb2 \xe2 \x47 \xd4 \xaf \x1e \x8a \xbe \x1d \x75 \x20 \xf9 \xc2 \xa4 \x5c \xb1 \xeb \x8e \x95 \xcf \xd5 \x52 \x62 \xb7 \x0b \x29 \xfe \xec \x58 \x64 \xe1 \x9c \x05 \x4f \xf9 \x91 \x29 \x28 \x0e \x46 \x46 \x21 \x77 \x91 \x81 \x11 \x42 \x82 \x03 \x41 \x26 \x3c \x53 \x15 " ;
182+ const BRAINPOOLP384R1_ORDER : asn1:: BigUint < ' static > = asn1:: BigUint :: new ( b"\x00 \x8c \xb9 \x1e \x82 \xa3 \x38 \x6d \x28 \x0f \x5d \x6f \x7e \x50 \xe6 \x41 \xdf \x15 \x2f \x71 \x09 \xed \x54 \x56 \xb3 \x1f \x16 \x6e \x6c \xac \x04 \x25 \xa7 \xcf \x3a \xb6 \xaf \x6b \x7f \xc3 \x10 \x3b \x88 \x32 \x02 \xe9 \x04 \x65 \x65 " ) . unwrap ( ) ;
183+
184+ pub const BRAINPOOLP384R1_DOMAIN : SpecifiedECDomain < ' static > = SpecifiedECDomain {
185+ version : 1 ,
186+ field_id : BRAINPOOLP384R1_FIELD ,
187+ curve : Curve {
188+ a : BRAINPOOLP384R1_CURVE_A ,
189+ b : BRAINPOOLP384R1_CURVE_B ,
190+ seed : Some ( BRAINPOOLP384R1_SEED ) ,
191+ } ,
192+ base : BRAINPOOLP384R1_UNCOMPRESSED_BASE ,
193+ order : BRAINPOOLP384R1_ORDER ,
194+ cofactor : Some ( 1 ) ,
195+ } ;
196+
197+ pub const BRAINPOOLP384R1_DOMAIN_NO_SEED : SpecifiedECDomain < ' static > = SpecifiedECDomain {
198+ version : 1 ,
199+ field_id : BRAINPOOLP384R1_FIELD ,
200+ curve : Curve {
201+ a : BRAINPOOLP384R1_CURVE_A ,
202+ b : BRAINPOOLP384R1_CURVE_B ,
203+ seed : None ,
204+ } ,
205+ base : BRAINPOOLP384R1_UNCOMPRESSED_BASE ,
206+ order : BRAINPOOLP384R1_ORDER ,
207+ cofactor : Some ( 1 ) ,
208+ } ;
209+
210+ const BRAINPOOLP512R1_FIELD : FieldID < ' static > = FieldID {
211+ field_type : asn1:: DefinedByMarker :: marker ( ) ,
212+ parameters : FieldParameters :: PrimeField ( asn1:: BigUint :: new ( b"\x00 \xaa \xdd \x9d \xb8 \xdb \xe9 \xc4 \x8b \x3f \xd4 \xe6 \xae \x33 \xc9 \xfc \x07 \xcb \x30 \x8d \xb3 \xb3 \xc9 \xd2 \x0e \xd6 \x63 \x9c \xca \x70 \x33 \x08 \x71 \x7d \x4d \x9b \x00 \x9b \xc6 \x68 \x42 \xae \xcd \xa1 \x2a \xe6 \xa3 \x80 \xe6 \x28 \x81 \xff \x2f \x2d \x82 \xc6 \x85 \x28 \xaa \x60 \x56 \x58 \x3a \x48 \xf3 " ) . unwrap ( ) ) ,
213+ } ;
214+ const BRAINPOOLP512R1_CURVE_A : & [ u8 ; 64 ] = b"\x78 \x30 \xa3 \x31 \x8b \x60 \x3b \x89 \xe2 \x32 \x71 \x45 \xac \x23 \x4c \xc5 \x94 \xcb \xdd \x8d \x3d \xf9 \x16 \x10 \xa8 \x34 \x41 \xca \xea \x98 \x63 \xbc \x2d \xed \x5d \x5a \xa8 \x25 \x3a \xa1 \x0a \x2e \xf1 \xc9 \x8b \x9a \xc8 \xb5 \x7f \x11 \x17 \xa7 \x2b \xf2 \xc7 \xb9 \xe7 \xc1 \xac \x4d \x77 \xfc \x94 \xca " ;
215+ const BRAINPOOLP512R1_CURVE_B : & [ u8 ; 64 ] = b"\x3d \xf9 \x16 \x10 \xa8 \x34 \x41 \xca \xea \x98 \x63 \xbc \x2d \xed \x5d \x5a \xa8 \x25 \x3a \xa1 \x0a \x2e \xf1 \xc9 \x8b \x9a \xc8 \xb5 \x7f \x11 \x17 \xa7 \x2b \xf2 \xc7 \xb9 \xe7 \xc1 \xac \x4d \x77 \xfc \x94 \xca \xdc \x08 \x3e \x67 \x98 \x40 \x50 \xb7 \x5e \xba \xe5 \xdd \x28 \x09 \xbd \x63 \x80 \x16 \xf7 \x23 " ;
216+ const BRAINPOOLP512R1_SEED : asn1:: BitString < ' static > = asn1:: BitString :: new (
217+ b"\xaf \x02 \xac \x60 \xac \xc9 \x3e \xd8 \x74 \x42 \x2a \x52 \xec \xb2 \x38 \xfe \xee \x5a \xb6 \xad " ,
218+ 0 ,
219+ )
220+ . unwrap ( ) ;
221+ const BRAINPOOLP512R1_UNCOMPRESSED_BASE : & [ u8 ; 129 ] = b"\x04 \x81 \xae \xe4 \xbd \xd8 \x2e \xd9 \x64 \x5a \x21 \x32 \x2e \x9c \x4c \x6a \x93 \x85 \xed \x9f \x70 \xb5 \xd9 \x16 \xc1 \xb4 \x3b \x62 \xee \xf4 \xd0 \x09 \x8e \xff \x3b \x1f \x78 \xe2 \xd0 \xd4 \x8d \x50 \xd1 \x68 \x7b \x93 \xb9 \x7d \x5f \x7c \x6d \x50 \x47 \x40 \x6a \x5e \x68 \x8b \x35 \x22 \x09 \xbc \xb9 \xf8 \x22 \x7d \xde \x38 \x5d \x56 \x63 \x32 \xec \xc0 \xea \xbf \xa9 \xcf \x78 \x22 \xfd \xf2 \x09 \xf7 \x00 \x24 \xa5 \x7b \x1a \xa0 \x00 \xc5 \x5b \x88 \x1f \x81 \x11 \xb2 \xdc \xde \x49 \x4a \x5f \x48 \x5e \x5b \xca \x4b \xd8 \x8a \x27 \x63 \xae \xd1 \xca \x2b \x2f \xa8 \xf0 \x54 \x06 \x78 \xcd \x1e \x0f \x3a \xd8 \x08 \x92 " ;
222+ const BRAINPOOLP512R1_ORDER : asn1:: BigUint < ' static > = asn1:: BigUint :: new ( b"\x00 \xaa \xdd \x9d \xb8 \xdb \xe9 \xc4 \x8b \x3f \xd4 \xe6 \xae \x33 \xc9 \xfc \x07 \xcb \x30 \x8d \xb3 \xb3 \xc9 \xd2 \x0e \xd6 \x63 \x9c \xca \x70 \x33 \x08 \x70 \x55 \x3e \x5c \x41 \x4c \xa9 \x26 \x19 \x41 \x86 \x61 \x19 \x7f \xac \x10 \x47 \x1d \xb1 \xd3 \x81 \x08 \x5d \xda \xdd \xb5 \x87 \x96 \x82 \x9c \xa9 \x00 \x69 " ) . unwrap ( ) ;
223+
224+ pub const BRAINPOOLP512R1_DOMAIN : SpecifiedECDomain < ' static > = SpecifiedECDomain {
225+ version : 1 ,
226+ field_id : BRAINPOOLP512R1_FIELD ,
227+ curve : Curve {
228+ a : BRAINPOOLP512R1_CURVE_A ,
229+ b : BRAINPOOLP512R1_CURVE_B ,
230+ seed : Some ( BRAINPOOLP512R1_SEED ) ,
231+ } ,
232+ base : BRAINPOOLP512R1_UNCOMPRESSED_BASE ,
233+ order : BRAINPOOLP512R1_ORDER ,
234+ cofactor : Some ( 1 ) ,
235+ } ;
236+
237+ pub const BRAINPOOLP512R1_DOMAIN_NO_SEED : SpecifiedECDomain < ' static > = SpecifiedECDomain {
238+ version : 1 ,
239+ field_id : BRAINPOOLP512R1_FIELD ,
240+ curve : Curve {
241+ a : BRAINPOOLP512R1_CURVE_A ,
242+ b : BRAINPOOLP512R1_CURVE_B ,
243+ seed : None ,
244+ } ,
245+ base : BRAINPOOLP512R1_UNCOMPRESSED_BASE ,
246+ order : BRAINPOOLP512R1_ORDER ,
247+ cofactor : Some ( 1 ) ,
248+ } ;
0 commit comments