Skip to content

Commit d1f21d7

Browse files
committed
Merge branch 'main' of gitlab.cryptoworkshop.com:root/bc-java
2 parents c28c616 + 4a723e3 commit d1f21d7

File tree

4 files changed

+43
-13
lines changed

4 files changed

+43
-13
lines changed

core/src/main/java/org/bouncycastle/pqc/crypto/cmce/CMCEPrivateKeyParameters.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,7 @@ public CMCEPrivateKeyParameters(CMCEParameters params, byte[] delta, byte[] C, b
3939
public byte[] reconstructPublicKey()
4040
{
4141
CMCEEngine engine = getParameters().getEngine();
42-
byte[] pk = new byte[engine.getPublicKeySize()];
43-
engine.generate_public_key_from_private_key(privateKey);
44-
return pk;
42+
return engine.generate_public_key_from_private_key(privateKey);
4543
}
4644

4745
public byte[] getEncoded()

docs/releasenotes.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@ <h3>2.1.2 Defects Fixed</h3>
2626
<li>SNOVA and MAYO are now correctly added to the JCA provider module-info file.</li>
2727
<li>TLS: Avoid nonce reuse error in JCE AEAD workaround for pre-Java7.</li>
2828
<li>BCJSSE: Session binding map is now shared across all stages of the session lifecycle (SunJSSE compatibility).</li>
29+
<li>Fix CMCEPrivateKeyParameters#reconstructPublicKey method.</li>
2930
</ul>
3031
<h3>2.1.3 Additional Features and Functionality</h3>
3132
<ul>
3233
<li>SHA3Digest, CSHAKE, TupleHash, KMAC now provide support for Memoable and EncodableService.</li>
34+
<li>BCJSSE: Support for integrity-only cipher suites in TLS 1.3 per RFC 9150.</li>
3335
</ul>
3436

3537
<a id="r1rv81"><h3>2.2.1 Version</h3></a>

tls/src/main/java/org/bouncycastle/jsse/provider/CipherSuiteInfo.java

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,14 @@ private static void decomposeEncryptionAlgorithm(Set<String> decomposition, int
155155
case EncryptionAlgorithm.NULL:
156156
decomposition.add("C_NULL");
157157
break;
158+
case EncryptionAlgorithm.NULL_HMAC_SHA256:
159+
decomposition.add("C_NULL_HMAC");
160+
decomposeHmacSHA256(decomposition);
161+
break;
162+
case EncryptionAlgorithm.NULL_HMAC_SHA384:
163+
decomposition.add("C_NULL_HMAC");
164+
decomposeHmacSHA384(decomposition);
165+
break;
158166
case EncryptionAlgorithm.SM4_CBC:
159167
decomposition.add("SM4_CBC");
160168
break;
@@ -174,14 +182,14 @@ private static void decomposeHashAlgorithm(Set<String> decomposition, int crypto
174182
switch (cryptoHashAlgorithm)
175183
{
176184
case CryptoHashAlgorithm.sha256:
177-
addAll(decomposition, "SHA256", "SHA-256", "HmacSHA256");
185+
decomposeHmacSHA256(decomposition);
178186
break;
179187
case CryptoHashAlgorithm.sha384:
180-
addAll(decomposition, "SHA384", "SHA-384", "HmacSHA384");
188+
decomposeHmacSHA384(decomposition);
189+
break;
190+
case CryptoHashAlgorithm.sha512:
191+
decomposeHmacSHA512(decomposition);
181192
break;
182-
// case CryptoHashAlgorithm.sha512:
183-
// addAll(decomposition, "SHA512", "SHA-512", "HmacSHA512");
184-
// break;
185193
case CryptoHashAlgorithm.sm3:
186194
addAll(decomposition, "SM3", "HmacSM3");
187195
break;
@@ -190,6 +198,21 @@ private static void decomposeHashAlgorithm(Set<String> decomposition, int crypto
190198
}
191199
}
192200

201+
private static void decomposeHmacSHA256(Set<String> decomposition)
202+
{
203+
addAll(decomposition, "SHA256", "SHA-256", "HmacSHA256");
204+
}
205+
206+
private static void decomposeHmacSHA384(Set<String> decomposition)
207+
{
208+
addAll(decomposition, "SHA384", "SHA-384", "HmacSHA384");
209+
}
210+
211+
private static void decomposeHmacSHA512(Set<String> decomposition)
212+
{
213+
addAll(decomposition, "SHA512", "SHA-512", "HmacSHA512");
214+
}
215+
193216
private static void decomposeKeyExchangeAlgorithm(Set<String> decomposition, int keyExchangeAlgorithm)
194217
{
195218
switch (keyExchangeAlgorithm)
@@ -263,14 +286,14 @@ private static void decomposeMACAlgorithm(Set<String> decomposition, int cipherT
263286
addAll(decomposition, "SHA1", "SHA-1", "HmacSHA1");
264287
break;
265288
case MACAlgorithm.hmac_sha256:
266-
addAll(decomposition, "SHA256", "SHA-256", "HmacSHA256");
289+
decomposeHmacSHA256(decomposition);
267290
break;
268291
case MACAlgorithm.hmac_sha384:
269-
addAll(decomposition, "SHA384", "SHA-384", "HmacSHA384");
292+
decomposeHmacSHA384(decomposition);
293+
break;
294+
case MACAlgorithm.hmac_sha512:
295+
decomposeHmacSHA512(decomposition);
270296
break;
271-
// case MACAlgorithm.hmac_sha512:
272-
// addAll(decomposition, "SHA512", "SHA-512", "HmacSHA512");
273-
// break;
274297
default:
275298
throw new IllegalArgumentException();
276299
}
@@ -381,6 +404,7 @@ private static int getCryptoHashAlgorithm(int cipherSuite)
381404
case CipherSuite.TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256:
382405
case CipherSuite.TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256:
383406
case CipherSuite.TLS_RSA_WITH_NULL_SHA256:
407+
case CipherSuite.TLS_SHA256_SHA256:
384408
return CryptoHashAlgorithm.sha256;
385409

386410
case CipherSuite.TLS_AES_256_GCM_SHA384:
@@ -412,6 +436,7 @@ private static int getCryptoHashAlgorithm(int cipherSuite)
412436
case CipherSuite.TLS_RSA_WITH_ARIA_256_CBC_SHA384:
413437
case CipherSuite.TLS_RSA_WITH_ARIA_256_GCM_SHA384:
414438
case CipherSuite.TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384:
439+
case CipherSuite.TLS_SHA384_SHA384:
415440
return CryptoHashAlgorithm.sha384;
416441

417442
case CipherSuite.TLS_SM4_CCM_SM3:
@@ -455,6 +480,8 @@ private static String getTransformation(int encryptionAlgorithm)
455480
case EncryptionAlgorithm.CHACHA20_POLY1305:
456481
return "ChaCha20-Poly1305";
457482
case EncryptionAlgorithm.NULL:
483+
case EncryptionAlgorithm.NULL_HMAC_SHA256:
484+
case EncryptionAlgorithm.NULL_HMAC_SHA384:
458485
return "NULL";
459486
case EncryptionAlgorithm.SM4_CBC:
460487
return "SM4/CBC/NoPadding";

tls/src/main/java/org/bouncycastle/jsse/provider/ProvSSLContextSpi.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ private static Map<String, CipherSuiteInfo> createSupportedCipherSuiteMap()
181181
addCipherSuite(cs, "TLS_AES_256_GCM_SHA384", CipherSuite.TLS_AES_256_GCM_SHA384);
182182
addCipherSuite(cs, "TLS_CHACHA20_POLY1305_SHA256", CipherSuite.TLS_CHACHA20_POLY1305_SHA256);
183183

184+
addCipherSuite(cs, "TLS_SHA256_SHA256", CipherSuite.TLS_SHA256_SHA256);
185+
addCipherSuite(cs, "TLS_SHA384_SHA384", CipherSuite.TLS_SHA384_SHA384);
186+
184187
// TLS 1.2-
185188
addCipherSuite(cs, "TLS_DH_anon_WITH_AES_128_CBC_SHA", CipherSuite.TLS_DH_anon_WITH_AES_128_CBC_SHA);
186189
addCipherSuite(cs, "TLS_DH_anon_WITH_AES_128_CBC_SHA256", CipherSuite.TLS_DH_anon_WITH_AES_128_CBC_SHA256);

0 commit comments

Comments
 (0)