Skip to content

Commit df9de32

Browse files
committed
Cleanup around RFC 8998 prep
1 parent d6b6a0d commit df9de32

8 files changed

Lines changed: 14 additions & 21 deletions

File tree

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,7 @@ static boolean isFipsSignatureScheme(int signatureScheme)
231231
case SignatureScheme.DRAFT_slhdsa_shake_192f:
232232
case SignatureScheme.DRAFT_slhdsa_shake_256s:
233233
case SignatureScheme.DRAFT_slhdsa_shake_256f:
234+
case SignatureScheme.sm2sig_sm3:
234235
default:
235236
return false;
236237
}

tls/src/main/java/org/bouncycastle/tls/SignatureAndHashAlgorithm.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public class SignatureAndHashAlgorithm
4848
public static final SignatureAndHashAlgorithm slhdsa_shake_192f = create(SignatureScheme.DRAFT_slhdsa_shake_192f);
4949
public static final SignatureAndHashAlgorithm slhdsa_shake_256s = create(SignatureScheme.DRAFT_slhdsa_shake_256s);
5050
public static final SignatureAndHashAlgorithm slhdsa_shake_256f = create(SignatureScheme.DRAFT_slhdsa_shake_256f);
51+
public static final SignatureAndHashAlgorithm sm2sig_sm3 = create(SignatureScheme.sm2sig_sm3);
5152

5253
public static SignatureAndHashAlgorithm getInstance(short hashAlgorithm, short signatureAlgorithm)
5354
{

tls/src/main/java/org/bouncycastle/tls/SignatureScheme.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,6 @@ public static short getHashAlgorithm(int signatureScheme)
280280

281281
public static short getSignatureAlgorithm(int signatureScheme)
282282
{
283-
// TODO[RFC 8998] sm2sig_sm3
284283
return (short)(signatureScheme & 0xFF);
285284
}
286285

@@ -322,6 +321,8 @@ public static SignatureAndHashAlgorithm getSignatureAndHashAlgorithm(int signatu
322321
return SignatureAndHashAlgorithm.slhdsa_shake_256s;
323322
case DRAFT_slhdsa_shake_256f:
324323
return SignatureAndHashAlgorithm.slhdsa_shake_256f;
324+
case sm2sig_sm3:
325+
return SignatureAndHashAlgorithm.sm2sig_sm3;
325326
default:
326327
return SignatureAndHashAlgorithm.getInstance(
327328
getHashAlgorithm(signatureScheme),

tls/src/main/java/org/bouncycastle/tls/TlsUtils.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.bouncycastle.asn1.bsi.BSIObjectIdentifiers;
2222
import org.bouncycastle.asn1.eac.EACObjectIdentifiers;
2323
import org.bouncycastle.asn1.edec.EdECObjectIdentifiers;
24+
import org.bouncycastle.asn1.gm.GMObjectIdentifiers;
2425
import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
2526
import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
2627
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
@@ -138,8 +139,7 @@ private static Hashtable createCertSigAlgOIDs()
138139
addCertSigAlgOID(h, RosstandartObjectIdentifiers.id_tc26_signwithdigest_gost_3410_12_512,
139140
SignatureAndHashAlgorithm.gostr34102012_512);
140141

141-
// TODO[RFC 8998]
142-
// addCertSigAlgOID(h, GMObjectIdentifiers.sm2sign_with_sm3, HashAlgorithm.sm3, SignatureAlgorithm.sm2);
142+
addCertSigAlgOID(h, GMObjectIdentifiers.sm2sign_with_sm3, SignatureAndHashAlgorithm.sm2sig_sm3);
143143

144144
return h;
145145
}
@@ -2022,9 +2022,6 @@ public static ASN1ObjectIdentifier getOIDForHashAlgorithm(short hashAlgorithm)
20222022
return NISTObjectIdentifiers.id_sha384;
20232023
case HashAlgorithm.sha512:
20242024
return NISTObjectIdentifiers.id_sha512;
2025-
// TODO[RFC 8998]
2026-
// case HashAlgorithm.sm3:
2027-
// return GMObjectIdentifiers.sm3;
20282025
default:
20292026
throw new IllegalArgumentException("invalid HashAlgorithm: " + HashAlgorithm.getText(hashAlgorithm));
20302027
}

tls/src/main/java/org/bouncycastle/tls/crypto/TlsCryptoUtils.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.IOException;
44

55
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
6+
import org.bouncycastle.asn1.gm.GMObjectIdentifiers;
67
import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
78
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
89
import org.bouncycastle.asn1.rosstandart.RosstandartObjectIdentifiers;
@@ -140,9 +141,8 @@ public static ASN1ObjectIdentifier getOIDForHash(int cryptoHashAlgorithm)
140141
return NISTObjectIdentifiers.id_sha384;
141142
case CryptoHashAlgorithm.sha512:
142143
return NISTObjectIdentifiers.id_sha512;
143-
// TODO[RFC 8998]
144-
// case CryptoHashAlgorithm.sm3:
145-
// return GMObjectIdentifiers.sm3;
144+
case CryptoHashAlgorithm.sm3:
145+
return GMObjectIdentifiers.sm3;
146146
case CryptoHashAlgorithm.gostr3411_2012_256:
147147
return RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256;
148148
default:

tls/src/main/java/org/bouncycastle/tls/crypto/impl/bc/BcDefaultTlsCredentialedSigner.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,14 @@ else if (privateKey instanceof ECPrivateKeyParameters)
4949

5050
if (signatureAndHashAlgorithm != null)
5151
{
52+
int signatureScheme = SignatureScheme.from(signatureAndHashAlgorithm);
53+
5254
// TODO[RFC 8998]
53-
// short signatureAlgorithm = signatureAndHashAlgorithm.getSignature();
54-
// switch (signatureAlgorithm)
55+
// if (SignatureScheme.sm2sig_sm3 == signatureScheme)
5556
// {
56-
// case SignatureAlgorithm.sm2:
5757
// return new BcTlsSM2Signer(crypto, privKeyEC, Strings.toByteArray("TLSv1.3+GM+Cipher+Suite"));
5858
// }
5959

60-
int signatureScheme = SignatureScheme.from(signatureAndHashAlgorithm);
6160
if (SignatureScheme.isECDSA(signatureScheme))
6261
{
6362
return new BcTlsECDSA13Signer(crypto, privKeyEC, signatureScheme);

tls/src/main/java/org/bouncycastle/tls/crypto/impl/bc/BcTlsCrypto.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -444,9 +444,6 @@ public boolean hasSignatureAlgorithm(short signatureAlgorithm)
444444
case SignatureAlgorithm.gostr34102012_256:
445445
case SignatureAlgorithm.gostr34102012_512:
446446

447-
// TODO[RFC 8998]
448-
// case SignatureAlgorithm.sm2:
449-
450447
default:
451448
return false;
452449
}

tls/src/main/java/org/bouncycastle/tls/crypto/impl/bc/BcTlsSM2Signer.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.bouncycastle.crypto.params.ParametersWithRandom;
66
import org.bouncycastle.crypto.signers.SM2Signer;
77
import org.bouncycastle.tls.SignatureAndHashAlgorithm;
8+
import org.bouncycastle.tls.SignatureScheme;
89
import org.bouncycastle.tls.crypto.TlsStreamSigner;
910
import org.bouncycastle.util.Arrays;
1011

@@ -22,11 +23,7 @@ public BcTlsSM2Signer(BcTlsCrypto crypto, ECPrivateKeyParameters privateKey, byt
2223

2324
public TlsStreamSigner getStreamSigner(SignatureAndHashAlgorithm algorithm)
2425
{
25-
if (algorithm == null
26-
// TODO[RFC 8998]
27-
// || algorithm.getSignature() != SignatureAlgorithm.sm2
28-
// || algorithm.getHash() != HashAlgorithm.sm3
29-
)
26+
if (algorithm == null || SignatureScheme.from(algorithm) != SignatureScheme.sm2sig_sm3)
3027
{
3128
throw new IllegalStateException("Invalid algorithm: " + algorithm);
3229
}

0 commit comments

Comments
 (0)