Skip to content

Commit 23ccdc8

Browse files
committed
simplify resolveSignatureAlgorithm
we dont have to retain RSA PKCS#1 support. the spec expresses "For signing by the certificate authority RSA-PSS, or ECDSA SHOULD be used."
1 parent edfdba3 commit 23ccdc8

6 files changed

Lines changed: 4 additions & 34 deletions

File tree

src/main/java/de/rwth/idsg/steve/config/SteveProperties.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,6 @@ public static class LocalCsrSigning {
103103
private IssuerConfig rsa = new IssuerConfig();
104104
private IssuerConfig ecdsa = new IssuerConfig();
105105

106-
public enum SignatureAlgorithmPolicy {
107-
AUTO,
108-
RSA_PSS,
109-
RSA_PKCS1
110-
}
111-
112106
public boolean isValid() {
113107
return certificateValidityYears != null && (IssuerConfig.isValid(rsa) || IssuerConfig.isValid(ecdsa));
114108
}
@@ -125,13 +119,6 @@ public static class IssuerConfig {
125119
*/
126120
private String caChainPem;
127121

128-
/**
129-
* Signature algorithm policy for locally signed charge point certificates:
130-
* - auto: RSA => RSA-PSS (SHA256withRSAandMGF1), EC => ECDSA (SHA256withECDSA)
131-
* - rsa-pkcs1: RSA => PKCS#1 v1.5 (SHA256WithRSA), EC => ECDSA (SHA256withECDSA)
132-
*/
133-
private SignatureAlgorithmPolicy signatureAlgorithmPolicy = SignatureAlgorithmPolicy.AUTO;
134-
135122
public static boolean isValid(IssuerConfig issuer) {
136123
return issuer != null
137124
&& !StringUtils.isBlank(issuer.caCertificatePem)

src/main/java/de/rwth/idsg/steve/service/CertificateSigningServiceLocal.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ private void loadIssuer(ResourceLoader resourceLoader,
285285
var caCertificate = resolveResource(resourceLoader, issuerConfig.getCaCertificatePem(), CertificateUtils::parseCertificate);
286286
var caPrivateKey = resolveResource(resourceLoader, issuerConfig.getCaKeyPem(), CertificateUtils::parsePrivateKeyViaBouncyCastle);
287287
var issuerCertificateChain = loadIssuerCertificateChain(resourceLoader, caCertificate, issuerConfig.getCaChainPem());
288-
var certificateSignatureAlgorithm = resolveSignatureAlgorithm(caPrivateKey, issuerConfig.getSignatureAlgorithmPolicy());
288+
var certificateSignatureAlgorithm = resolveSignatureAlgorithm(caPrivateKey);
289289

290290
var issuer = new CertificateIssuerMaterial(
291291
name,

src/main/java/de/rwth/idsg/steve/utils/CertificateIssuerMaterial.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
*/
1919
package de.rwth.idsg.steve.utils;
2020

21-
import de.rwth.idsg.steve.config.SteveProperties;
2221
import jooq.steve.db.enums.CertificateSignatureAlgorithm;
2322

2423
import java.nio.charset.StandardCharsets;
@@ -52,7 +51,7 @@ public void validateCaCertificate() throws Exception {
5251
throw new IllegalArgumentException("Configured CA certificate for issuer '" + name + "' must allow keyCertSign in keyUsage");
5352
}
5453

55-
String checkAlgorithm = resolveSignatureAlgorithm(caPrivateKey, SteveProperties.Ocpp.Security.CsrSigning.LocalCsrSigning.SignatureAlgorithmPolicy.RSA_PKCS1);
54+
String checkAlgorithm = resolveSignatureAlgorithm(caPrivateKey);
5655
byte[] dummyProbeData = "certificate-key-pair-check".getBytes(StandardCharsets.UTF_8);
5756

5857
Signature signer = Signature.getInstance(checkAlgorithm);

src/main/java/de/rwth/idsg/steve/utils/CertificateUtils.java

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
*/
1919
package de.rwth.idsg.steve.utils;
2020

21-
import de.rwth.idsg.steve.config.SteveProperties.Ocpp.Security.CsrSigning.LocalCsrSigning.SignatureAlgorithmPolicy;
2221
import jooq.steve.db.enums.CertificateSignatureAlgorithm;
2322
import lombok.AccessLevel;
2423
import lombok.NoArgsConstructor;
@@ -138,25 +137,14 @@ public static PrivateKey parsePrivateKeyViaBouncyCastle(String privateKeyPem) th
138137
}
139138
}
140139

141-
public static String resolveSignatureAlgorithm(PrivateKey privateKey,
142-
SignatureAlgorithmPolicy signatureAlgorithmPolicy) {
143-
var policy = (signatureAlgorithmPolicy == null)
144-
? SignatureAlgorithmPolicy.AUTO
145-
: signatureAlgorithmPolicy;
146-
140+
public static String resolveSignatureAlgorithm(PrivateKey privateKey) {
147141
String keyAlgorithm = privateKey.getAlgorithm();
148142
if ("RSA".equalsIgnoreCase(keyAlgorithm)) {
149-
return switch (policy) {
150-
case AUTO, RSA_PSS -> "SHA256withRSAandMGF1";
151-
case RSA_PKCS1 -> "SHA256WithRSA";
152-
};
143+
return "SHA256withRSAandMGF1";
153144
}
154145
if ("EC".equalsIgnoreCase(keyAlgorithm) || "ECDSA".equalsIgnoreCase(keyAlgorithm)) {
155146
return "SHA256withECDSA";
156147
}
157-
if ("DSA".equalsIgnoreCase(keyAlgorithm)) {
158-
return "SHA256withDSA";
159-
}
160148
throw new IllegalArgumentException("Unsupported signing private key algorithm: " + keyAlgorithm);
161149
}
162150

src/main/resources/application.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,7 @@ steve:
7575
ca-certificate-pem:
7676
ca-key-pem:
7777
ca-chain-pem:
78-
signature-algorithm-policy: auto
7978
ecdsa:
8079
ca-certificate-pem:
8180
ca-key-pem:
8281
ca-chain-pem:
83-
signature-algorithm-policy: auto

src/test/resources/application-test-tls.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ steve:
2727
rsa:
2828
ca-certificate-pem: src/test/resources/certificates/csr-signing-rsa-ca-cert.pem
2929
ca-key-pem: src/test/resources/certificates/csr-signing-rsa-ca-key.pem
30-
signature-algorithm-policy: auto
3130
ecdsa:
3231
ca-certificate-pem: src/test/resources/certificates/csr-signing-ecdsa-ca-cert.pem
3332
ca-key-pem: src/test/resources/certificates/csr-signing-ecdsa-ca-key.pem
34-
signature-algorithm-policy: auto

0 commit comments

Comments
 (0)