Skip to content

Commit acf6c2c

Browse files
committed
added validation of RSA modulus and EC basis
1 parent 064398b commit acf6c2c

File tree

12 files changed

+226
-60
lines changed

12 files changed

+226
-60
lines changed

core/src/main/java/org/bouncycastle/asn1/anssi/ANSSINamedCurves.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ protected ECCurve createCurve()
4848
BigInteger n = fromHex("F1FD178C0B3AD58F10126DE8CE42435B53DC67E140D2BF941FFDD459C6D655E1");
4949
BigInteger h = BigInteger.valueOf(1);
5050

51-
return configureCurve(new ECCurve.Fp(p, a, b, n, h));
51+
return configureCurve(new ECCurve.Fp(p, a, b, n, h, true));
5252
}
5353

5454
protected X9ECParameters createParameters()

core/src/main/java/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ protected ECCurve createCurve()
5151
mod_p,
5252
fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD94"),
5353
fromHex("A6"),
54-
mod_q, ECConstants.ONE));
54+
mod_q, ECConstants.ONE, true));
5555
}
5656

5757
protected X9ECParameters createParameters()
@@ -81,7 +81,7 @@ protected ECCurve createCurve()
8181
mod_p,
8282
fromHex("8000000000000000000000000000000000000000000000000000000000000C96"),
8383
fromHex("3E1AF419A269A5F866A7D3C25C3DF80AE979259373FF2B182F49D4CE7E1BBC8B"),
84-
mod_q, ECConstants.ONE));
84+
mod_q, ECConstants.ONE, true));
8585
}
8686

8787
protected X9ECParameters createParameters()
@@ -111,7 +111,7 @@ protected ECCurve createCurve()
111111
mod_p,
112112
fromHex("9B9F605F5A858107AB1EC85E6B41C8AACF846E86789051D37998F7B9022D7598"),
113113
fromHex("805A"),
114-
mod_q, ECConstants.ONE));
114+
mod_q, ECConstants.ONE, true));
115115
}
116116

117117
protected X9ECParameters createParameters()
@@ -141,7 +141,7 @@ protected ECCurve createCurve()
141141
mod_p,
142142
fromHex("9B9F605F5A858107AB1EC85E6B41C8AACF846E86789051D37998F7B9022D7598"),
143143
fromHex("805A"),
144-
mod_q, ECConstants.ONE));
144+
mod_q, ECConstants.ONE, true));
145145
}
146146

147147
protected X9ECParameters createParameters()
@@ -171,7 +171,7 @@ protected ECCurve createCurve()
171171
mod_p,
172172
fromHex("C2173F1513981673AF4892C23035A27CE25E2013BF95AA33B22C656F277E7335"),
173173
fromHex("295F9BAE7428ED9CCC20E7C359A9D41A22FCCD9108E17BF7BA9337A6F8AE9513"),
174-
mod_q, ECConstants.FOUR));
174+
mod_q, ECConstants.FOUR, true));
175175
}
176176

177177
protected X9ECParameters createParameters()
@@ -201,7 +201,7 @@ protected ECCurve createCurve()
201201
mod_p,
202202
fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC4"),
203203
fromHex("E8C2505DEDFC86DDC1BD0B2B6667F1DA34B82574761CB0E879BD081CFD0B6265EE3CB090F30D27614CB4574010DA90DD862EF9D4EBEE4761503190785A71C760"),
204-
mod_q, ECConstants.ONE));
204+
mod_q, ECConstants.ONE, true));
205205
}
206206

207207
protected X9ECParameters createParameters()
@@ -231,7 +231,7 @@ protected ECCurve createCurve()
231231
mod_p,
232232
fromHex("8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006C"),
233233
fromHex("687D1B459DC841457E3E06CF6F5E2517B97C7D614AF138BCBF85DC806C4B289F3E965D2DB1416D217F8B276FAD1AB69C50F78BEE1FA3106EFB8CCBC7C5140116"),
234-
mod_q, ECConstants.ONE));
234+
mod_q, ECConstants.ONE, true));
235235
}
236236

237237
protected X9ECParameters createParameters()
@@ -261,7 +261,7 @@ protected ECCurve createCurve()
261261
mod_p,
262262
fromHex("DC9203E514A721875485A529D2C722FB187BC8980EB866644DE41C68E143064546E861C0E2C9EDD92ADE71F46FCF50FF2AD97F951FDA9F2A2EB6546F39689BD3"),
263263
fromHex("B4C4EE28CEBC6C2C8AC12952CF37F16AC7EFB6A9F69F4B57FFDA2E4F0DE5ADE038CBC2FFF719D2C18DE0284B8BFEF3B52B8CC7A5F5BF0A3C8D2319A5312557E1"),
264-
mod_q, ECConstants.FOUR));
264+
mod_q, ECConstants.FOUR, true));
265265
}
266266

267267
protected X9ECParameters createParameters()

core/src/main/java/org/bouncycastle/asn1/gm/GMNamedCurves.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ protected ECCurve createCurve()
4848
BigInteger n = fromHex("FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123");
4949
BigInteger h = BigInteger.valueOf(1);
5050

51-
return configureCurve(new ECCurve.Fp(p, a, b, n, h));
51+
return configureCurve(new ECCurve.Fp(p, a, b, n, h, true));
5252
}
5353

5454
protected X9ECParameters createParameters()
@@ -73,7 +73,7 @@ protected ECCurve createCurve()
7373
BigInteger n = fromHex("BDB6F4FE3E8B1D9E0DA8C0D40FC962195DFAE76F56564677");
7474
BigInteger h = BigInteger.valueOf(1);
7575

76-
return configureCurve(new ECCurve.Fp(p, a, b, n, h));
76+
return configureCurve(new ECCurve.Fp(p, a, b, n, h, true));
7777
}
7878

7979
protected X9ECParameters createParameters()

core/src/main/java/org/bouncycastle/asn1/sec/SECNamedCurves.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ protected ECCurve createCurve()
5555
BigInteger n = fromHex("DB7C2ABF62E35E7628DFAC6561C5");
5656
BigInteger h = BigInteger.valueOf(1);
5757

58-
return configureCurve(new ECCurve.Fp(p, a, b, n, h));
58+
return configureCurve(new ECCurve.Fp(p, a, b, n, h, true));
5959
}
6060

6161
protected X9ECParameters createParameters()
@@ -84,7 +84,7 @@ protected ECCurve createCurve()
8484
BigInteger n = fromHex("36DF0AAFD8B8D7597CA10520D04B");
8585
BigInteger h = BigInteger.valueOf(4);
8686

87-
return configureCurve(new ECCurve.Fp(p, a, b, n, h));
87+
return configureCurve(new ECCurve.Fp(p, a, b, n, h, true));
8888
}
8989

9090
protected X9ECParameters createParameters()
@@ -113,7 +113,7 @@ protected ECCurve createCurve()
113113
BigInteger n = fromHex("FFFFFFFE0000000075A30D1B9038A115");
114114
BigInteger h = BigInteger.valueOf(1);
115115

116-
return configureCurve(new ECCurve.Fp(p, a, b, n, h));
116+
return configureCurve(new ECCurve.Fp(p, a, b, n, h, true));
117117
}
118118

119119
protected X9ECParameters createParameters()
@@ -142,7 +142,7 @@ protected ECCurve createCurve()
142142
BigInteger n = fromHex("3FFFFFFF7FFFFFFFBE0024720613B5A3");
143143
BigInteger h = BigInteger.valueOf(4);
144144

145-
return configureCurve(new ECCurve.Fp(p, a, b, n, h));
145+
return configureCurve(new ECCurve.Fp(p, a, b, n, h, true));
146146
}
147147

148148
protected X9ECParameters createParameters()
@@ -185,7 +185,7 @@ protected ECCurve createCurve()
185185
new BigInteger("96341f1138933bc2f503fd44", 16),
186186
176));
187187

188-
return configureCurveGLV(new ECCurve.Fp(p, a, b, n, h), glv);
188+
return configureCurveGLV(new ECCurve.Fp(p, a, b, n, h, true), glv);
189189
}
190190

191191
protected X9ECParameters createParameters()
@@ -214,7 +214,7 @@ protected ECCurve createCurve()
214214
BigInteger n = fromHex("0100000000000000000001F4C8F927AED3CA752257");
215215
BigInteger h = BigInteger.valueOf(1);
216216

217-
return configureCurve(new ECCurve.Fp(p, a, b, n, h));
217+
return configureCurve(new ECCurve.Fp(p, a, b, n, h, true));
218218
}
219219

220220
protected X9ECParameters createParameters()
@@ -243,7 +243,7 @@ protected ECCurve createCurve()
243243
BigInteger n = fromHex("0100000000000000000000351EE786A818F3A1A16B");
244244
BigInteger h = BigInteger.valueOf(1);
245245

246-
return configureCurve(new ECCurve.Fp(p, a, b, n, h));
246+
return configureCurve(new ECCurve.Fp(p, a, b, n, h, true));
247247
}
248248

249249
protected X9ECParameters createParameters()
@@ -286,7 +286,7 @@ protected ECCurve createCurve()
286286
new BigInteger("b3fb3400dec5c4adceb8655d4c94", 16),
287287
208));
288288

289-
return configureCurveGLV(new ECCurve.Fp(p, a, b, n, h), glv);
289+
return configureCurveGLV(new ECCurve.Fp(p, a, b, n, h, true), glv);
290290
}
291291

292292
protected X9ECParameters createParameters()
@@ -315,7 +315,7 @@ protected ECCurve createCurve()
315315
BigInteger n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831");
316316
BigInteger h = BigInteger.valueOf(1);
317317

318-
return configureCurve(new ECCurve.Fp(p, a, b, n, h));
318+
return configureCurve(new ECCurve.Fp(p, a, b, n, h, true));
319319
}
320320

321321
protected X9ECParameters createParameters()
@@ -358,7 +358,7 @@ protected ECCurve createCurve()
358358
new BigInteger("b8adf1378a6eb73409fa6c9c637ba7f5", 16),
359359
240));
360360

361-
return configureCurveGLV(new ECCurve.Fp(p, a, b, n, h), glv);
361+
return configureCurveGLV(new ECCurve.Fp(p, a, b, n, h, true), glv);
362362
}
363363

364364
protected X9ECParameters createParameters()
@@ -387,7 +387,7 @@ protected ECCurve createCurve()
387387
BigInteger n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D");
388388
BigInteger h = BigInteger.valueOf(1);
389389

390-
return configureCurve(new ECCurve.Fp(p, a, b, n, h));
390+
return configureCurve(new ECCurve.Fp(p, a, b, n, h, true));
391391
}
392392

393393
protected X9ECParameters createParameters()
@@ -430,7 +430,7 @@ protected ECCurve createCurve()
430430
new BigInteger("e4437ed6010e88286f547fa90abfe4c42212", 16),
431431
272));
432432

433-
return configureCurveGLV(new ECCurve.Fp(p, a, b, n, h), glv);
433+
return configureCurveGLV(new ECCurve.Fp(p, a, b, n, h, true), glv);
434434
}
435435

436436
protected X9ECParameters createParameters()
@@ -459,7 +459,7 @@ protected ECCurve createCurve()
459459
BigInteger n = fromHex("FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551");
460460
BigInteger h = BigInteger.valueOf(1);
461461

462-
return configureCurve(new ECCurve.Fp(p, a, b, n, h));
462+
return configureCurve(new ECCurve.Fp(p, a, b, n, h, true));
463463
}
464464

465465
protected X9ECParameters createParameters()
@@ -488,7 +488,7 @@ protected ECCurve createCurve()
488488
BigInteger n = fromHex("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973");
489489
BigInteger h = BigInteger.valueOf(1);
490490

491-
return configureCurve(new ECCurve.Fp(p, a, b, n, h));
491+
return configureCurve(new ECCurve.Fp(p, a, b, n, h, true));
492492
}
493493

494494
protected X9ECParameters createParameters()
@@ -518,7 +518,7 @@ protected ECCurve createCurve()
518518
BigInteger n = fromHex("01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409");
519519
BigInteger h = BigInteger.valueOf(1);
520520

521-
return configureCurve(new ECCurve.Fp(p, a, b, n, h));
521+
return configureCurve(new ECCurve.Fp(p, a, b, n, h, true));
522522
}
523523

524524
protected X9ECParameters createParameters()

core/src/main/java/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ protected ECCurve createCurve()
4747
fromHex("E95E4A5F737059DC60DFC7AD95B3D8139515620F"), // q
4848
fromHex("340E7BE2A280EB74E2BE61BADA745D97E8F7C300"), // a
4949
fromHex("1E589A8595423412134FAA2DBDEC95C8D8675E58"), // b
50-
n, h));
50+
n, h, true));
5151
}
5252

5353
protected X9ECParameters createParameters()
@@ -74,7 +74,7 @@ protected ECCurve createCurve()
7474
fromHex("E95E4A5F737059DC60DFC7AD95B3D8139515620F"), // q
7575
fromHex("E95E4A5F737059DC60DFC7AD95B3D8139515620C"), // a
7676
fromHex("7A556B6DAE535B7B51ED2C4D7DAA7A0B5C55F380"), // b
77-
n, h));
77+
n, h, true));
7878
}
7979

8080
protected X9ECParameters createParameters()
@@ -100,7 +100,7 @@ protected ECCurve createCurve()
100100
fromHex("C302F41D932A36CDA7A3463093D18DB78FCE476DE1A86297"), // q
101101
fromHex("6A91174076B1E0E19C39C031FE8685C1CAE040E5C69A28EF"), // a
102102
fromHex("469A28EF7C28CCA3DC721D044F4496BCCA7EF4146FBF25C9"), // b
103-
n, h));
103+
n, h, true));
104104
}
105105

106106
protected X9ECParameters createParameters()
@@ -127,7 +127,7 @@ protected ECCurve createCurve()
127127
fromHex("C302F41D932A36CDA7A3463093D18DB78FCE476DE1A86297"), // q
128128
fromHex("C302F41D932A36CDA7A3463093D18DB78FCE476DE1A86294"), // a
129129
fromHex("13D56FFAEC78681E68F9DEB43B35BEC2FB68542E27897B79"), // b
130-
n, h));
130+
n, h, true));
131131
}
132132

133133
protected X9ECParameters createParameters()
@@ -153,7 +153,7 @@ protected ECCurve createCurve()
153153
fromHex("D7C134AA264366862A18302575D1D787B09F075797DA89F57EC8C0FF"), // q
154154
fromHex("68A5E62CA9CE6C1C299803A6C1530B514E182AD8B0042A59CAD29F43"), // a
155155
fromHex("2580F63CCFE44138870713B1A92369E33E2135D266DBB372386C400B"), // b
156-
n, h));
156+
n, h, true));
157157
}
158158

159159
protected X9ECParameters createParameters()
@@ -180,7 +180,7 @@ protected ECCurve createCurve()
180180
fromHex("D7C134AA264366862A18302575D1D787B09F075797DA89F57EC8C0FF"), // q
181181
fromHex("D7C134AA264366862A18302575D1D787B09F075797DA89F57EC8C0FC"), // a
182182
fromHex("4B337D934104CD7BEF271BF60CED1ED20DA14C08B3BB64F18A60888D"), // b
183-
n, h));
183+
n, h, true));
184184
}
185185

186186
protected X9ECParameters createParameters()
@@ -206,7 +206,7 @@ protected ECCurve createCurve()
206206
fromHex("A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E5377"), // q
207207
fromHex("7D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9"), // a
208208
fromHex("26DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B6"), // b
209-
n, h));
209+
n, h, true));
210210
}
211211

212212
protected X9ECParameters createParameters()
@@ -233,7 +233,7 @@ protected ECCurve createCurve()
233233
fromHex("A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E5377"), // q
234234
fromHex("A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E5374"), // a
235235
fromHex("662C61C430D84EA4FE66A7733D0B76B7BF93EBC4AF2F49256AE58101FEE92B04"), // b
236-
n, h));
236+
n, h, true));
237237
}
238238

239239
protected X9ECParameters createParameters()
@@ -259,7 +259,7 @@ protected ECCurve createCurve()
259259
fromHex("D35E472036BC4FB7E13C785ED201E065F98FCFA6F6F40DEF4F92B9EC7893EC28FCD412B1F1B32E27"), // q
260260
fromHex("3EE30B568FBAB0F883CCEBD46D3F3BB8A2A73513F5EB79DA66190EB085FFA9F492F375A97D860EB4"), // a
261261
fromHex("520883949DFDBC42D3AD198640688A6FE13F41349554B49ACC31DCCD884539816F5EB4AC8FB1F1A6"), // b
262-
n, h));
262+
n, h, true));
263263
}
264264

265265
protected X9ECParameters createParameters()
@@ -286,7 +286,7 @@ protected ECCurve createCurve()
286286
fromHex("D35E472036BC4FB7E13C785ED201E065F98FCFA6F6F40DEF4F92B9EC7893EC28FCD412B1F1B32E27"), // q
287287
fromHex("D35E472036BC4FB7E13C785ED201E065F98FCFA6F6F40DEF4F92B9EC7893EC28FCD412B1F1B32E24"), // a
288288
fromHex("A7F561E038EB1ED560B3D147DB782013064C19F27ED27C6780AAF77FB8A547CEB5B4FEF422340353"), // b
289-
n, h));
289+
n, h, true));
290290
}
291291

292292
protected X9ECParameters createParameters()
@@ -312,7 +312,7 @@ protected ECCurve createCurve()
312312
fromHex("8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B412B1DA197FB71123ACD3A729901D1A71874700133107EC53"), // q
313313
fromHex("7BC382C63D8C150C3C72080ACE05AFA0C2BEA28E4FB22787139165EFBA91F90F8AA5814A503AD4EB04A8C7DD22CE2826"), // a
314314
fromHex("04A8C7DD22CE28268B39B55416F0447C2FB77DE107DCD2A62E880EA53EEB62D57CB4390295DBC9943AB78696FA504C11"), // b
315-
n, h));
315+
n, h, true));
316316
}
317317

318318
protected X9ECParameters createParameters()
@@ -339,7 +339,7 @@ protected ECCurve createCurve()
339339
fromHex("8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B412B1DA197FB71123ACD3A729901D1A71874700133107EC53"), // q
340340
fromHex("8CB91E82A3386D280F5D6F7E50E641DF152F7109ED5456B412B1DA197FB71123ACD3A729901D1A71874700133107EC50"), // a
341341
fromHex("7F519EADA7BDA81BD826DBA647910F8C4B9346ED8CCDC64E4B1ABD11756DCE1D2074AA263B88805CED70355A33B471EE"), // b
342-
n, h));
342+
n, h, true));
343343
}
344344

345345
protected X9ECParameters createParameters()
@@ -365,7 +365,7 @@ protected ECCurve createCurve()
365365
fromHex("AADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA703308717D4D9B009BC66842AECDA12AE6A380E62881FF2F2D82C68528AA6056583A48F3"), // q
366366
fromHex("7830A3318B603B89E2327145AC234CC594CBDD8D3DF91610A83441CAEA9863BC2DED5D5AA8253AA10A2EF1C98B9AC8B57F1117A72BF2C7B9E7C1AC4D77FC94CA"), // a
367367
fromHex("3DF91610A83441CAEA9863BC2DED5D5AA8253AA10A2EF1C98B9AC8B57F1117A72BF2C7B9E7C1AC4D77FC94CADC083E67984050B75EBAE5DD2809BD638016F723"), // b
368-
n, h));
368+
n, h, true));
369369
}
370370

371371
protected X9ECParameters createParameters()
@@ -392,7 +392,7 @@ protected ECCurve createCurve()
392392
fromHex("AADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA703308717D4D9B009BC66842AECDA12AE6A380E62881FF2F2D82C68528AA6056583A48F3"), // q
393393
fromHex("AADD9DB8DBE9C48B3FD4E6AE33C9FC07CB308DB3B3C9D20ED6639CCA703308717D4D9B009BC66842AECDA12AE6A380E62881FF2F2D82C68528AA6056583A48F0"), // a
394394
fromHex("7CBBBCF9441CFAB76E1890E46884EAE321F70C0BCB4981527897504BEC3E36A62BCDFA2304976540F6450085F2DAE145C22553B465763689180EA2571867423E"), // b
395-
n, h));
395+
n, h, true));
396396
}
397397

398398
protected X9ECParameters createParameters()

0 commit comments

Comments
 (0)