Skip to content

Commit a974a06

Browse files
authored
Fix jca hsm (Azure#36648)
1 parent 59f37b6 commit a974a06

23 files changed

+167
-121
lines changed

eng/code-quality-reports/src/main/resources/spotbugs/spotbugs-exclude.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@
214214
<!-- Suppress Redundant nullcheck error for JreCertificates$JREKeyStore.loadKeyStore(KeyStore). -->
215215
<Match>
216216
<Or>
217-
<Class name="com.azure.security.keyvault.jca.implementation.JREKeyStoreFactory"/> <!-- false positive -->
217+
<Class name="com.azure.security.keyvault.jca.implementation.JreKeyStoreFactory"/> <!-- false positive -->
218218
</Or>
219219
<Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE"/>
220220
</Match>

sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/KeyVaultJcaProvider.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33

44
package com.azure.security.keyvault.jca;
55

6-
import com.azure.security.keyvault.jca.implementation.signature.KeyVaultKeyLessRsaSignature;
7-
import com.azure.security.keyvault.jca.implementation.signature.KeyVaultKeyLessEcSha384Signature;
8-
import com.azure.security.keyvault.jca.implementation.signature.KeyVaultKeyLessEcSha512Signature;
9-
import com.azure.security.keyvault.jca.implementation.signature.KeyVaultKeyLessEcSha256Signature;
10-
import com.azure.security.keyvault.jca.implementation.signature.AbstractKeyVaultKeyLessSignature;
6+
import com.azure.security.keyvault.jca.implementation.signature.KeyVaultKeylessRsa256Signature;
7+
import com.azure.security.keyvault.jca.implementation.signature.KeyVaultKeylessRsa512Signature;
8+
import com.azure.security.keyvault.jca.implementation.signature.KeyVaultKeylessEcSha384Signature;
9+
import com.azure.security.keyvault.jca.implementation.signature.KeyVaultKeylessEcSha512Signature;
10+
import com.azure.security.keyvault.jca.implementation.signature.KeyVaultKeylessEcSha256Signature;
11+
import com.azure.security.keyvault.jca.implementation.signature.AbstractKeyVaultKeylessSignature;
12+
import com.azure.security.keyvault.jca.implementation.signature.KeyVaultKeylessRsaSsaPssSignature;
1113

1214
import java.lang.reflect.InvocationTargetException;
1315
import java.security.PrivilegedAction;
@@ -97,10 +99,12 @@ private void initialize() {
9799
)
98100
);
99101
Stream.of(
100-
KeyVaultKeyLessRsaSignature.class,
101-
KeyVaultKeyLessEcSha256Signature.class,
102-
KeyVaultKeyLessEcSha384Signature.class,
103-
KeyVaultKeyLessEcSha512Signature.class)
102+
KeyVaultKeylessRsaSsaPssSignature.class,
103+
KeyVaultKeylessRsa256Signature.class,
104+
KeyVaultKeylessRsa512Signature.class,
105+
KeyVaultKeylessEcSha256Signature.class,
106+
KeyVaultKeylessEcSha384Signature.class,
107+
KeyVaultKeylessEcSha512Signature.class)
104108
.forEach(c -> putService(
105109
new Service(
106110
this,
@@ -116,7 +120,7 @@ private void initialize() {
116120
}
117121

118122

119-
private String getAlgorithmName(Class<? extends AbstractKeyVaultKeyLessSignature> c) {
123+
private String getAlgorithmName(Class<? extends AbstractKeyVaultKeylessSignature> c) {
120124
try {
121125
return c.getDeclaredConstructor().newInstance().getAlgorithmName();
122126
} catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {

sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/implementation/JREKeyStoreFactory.java renamed to sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/implementation/JreKeyStoreFactory.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,17 @@
2323
/**
2424
* This class provides a JRE key store.
2525
*/
26-
public final class JREKeyStoreFactory {
27-
private static final String JAVA_HOME = privilegedGetProperty("java.home", "");
26+
public final class JreKeyStoreFactory {
27+
private static final String JAVA_HOME = privilegedGetProperty("java.home", "");
2828
private static final Path STORE_PATH = Paths.get(JAVA_HOME).resolve("lib").resolve("security");
2929
private static final Path DEFAULT_STORE = STORE_PATH.resolve("cacerts");
3030
private static final Path JSSE_DEFAULT_STORE = STORE_PATH.resolve("jssecacerts");
3131
private static final String KEY_STORE_PASSWORD = privilegedGetProperty("javax.net.ssl.keyStorePassword", "changeit");
32-
private static final Logger LOGGER = Logger.getLogger(JREKeyStoreFactory.class.getName());
32+
private static final Logger LOGGER = Logger.getLogger(JreKeyStoreFactory.class.getName());
3333
private static final KeyStore JRE_KEY_STORE = getJreKeyStore();
3434

3535

36-
private JREKeyStoreFactory() {
36+
private JreKeyStoreFactory() {
3737

3838
}
3939

sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/implementation/KeyVaultClient.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@
22
// Licensed under the MIT License.
33
package com.azure.security.keyvault.jca.implementation;
44

5-
import static java.util.logging.Level.INFO;
6-
import static java.util.logging.Level.WARNING;
7-
5+
import com.azure.security.keyvault.jca.implementation.model.AccessToken;
86
import com.azure.security.keyvault.jca.implementation.model.CertificateBundle;
97
import com.azure.security.keyvault.jca.implementation.model.CertificateItem;
108
import com.azure.security.keyvault.jca.implementation.model.CertificateListResult;
119
import com.azure.security.keyvault.jca.implementation.model.CertificatePolicy;
1210
import com.azure.security.keyvault.jca.implementation.model.KeyProperties;
13-
import com.azure.security.keyvault.jca.implementation.model.AccessToken;
1411
import com.azure.security.keyvault.jca.implementation.model.SecretBundle;
1512
import com.azure.security.keyvault.jca.implementation.model.SignResult;
1613
import com.azure.security.keyvault.jca.implementation.utils.AccessTokenUtil;
@@ -39,9 +36,13 @@
3936
import java.util.Base64;
4037
import java.util.HashMap;
4138
import java.util.List;
39+
import java.util.Map;
4240
import java.util.Optional;
4341
import java.util.logging.Logger;
4442

43+
import static java.util.logging.Level.INFO;
44+
import static java.util.logging.Level.WARNING;
45+
4546
/**
4647
* The REST client specific to Azure Key Vault.
4748
*/
@@ -327,13 +328,15 @@ public Key getKey(String alias, char[] password) {
327328
// and we can't access private key(which is not exportable), we will use
328329
// the Azure Key Vault Secrets API to obtain the private key (keyless).
329330
LOGGER.exiting("KeyVaultClient", "getKey", null);
331+
332+
String keyType2 = keyType.contains("-HSM") ? keyType.substring(0, keyType.indexOf("-HSM")) : keyType;
330333
return Optional.ofNullable(certificateBundle)
331334
.map(CertificateBundle::getKid)
332-
.map(kid -> new KeyVaultPrivateKey(keyType, kid, this))
335+
.map(kid -> new KeyVaultPrivateKey(keyType2, kid, this))
333336
.orElse(null);
334337
}
335338
String certificateSecretUri = certificateBundle.getSid();
336-
HashMap<String, String> headers = new HashMap<>();
339+
Map<String, String> headers = new HashMap<>();
337340
headers.put("Authorization", "Bearer " + getAccessToken());
338341
String body = HttpUtil.get(certificateSecretUri + API_VERSION_POSTFIX, headers);
339342
if (body == null) {
@@ -389,7 +392,7 @@ public Key getKey(String alias, char[] password) {
389392
public byte[] getSignedWithPrivateKey(String digestName, String digestValue, String keyId) {
390393
SignResult result = null;
391394
String bodyString = String.format("{\"alg\": \"" + digestName + "\", \"value\": \"%s\"}", digestValue);
392-
HashMap<String, String> headers = new HashMap<>();
395+
Map<String, String> headers = new HashMap<>();
393396
headers.put("Authorization", "Bearer " + getAccessToken());
394397
String url = String.format("%s/sign%s", keyId, API_VERSION_POSTFIX);
395398
String response = HttpUtil.post(url, headers, bodyString, "application/json");

sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/implementation/certificates/JreCertificates.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
package com.azure.security.keyvault.jca.implementation.certificates;
55

6-
import com.azure.security.keyvault.jca.implementation.JREKeyStoreFactory;
6+
import com.azure.security.keyvault.jca.implementation.JreKeyStoreFactory;
77
import java.security.Key;
88
import java.security.KeyStore;
99
import java.security.KeyStoreException;
@@ -49,7 +49,7 @@ public final class JreCertificates implements AzureCertificates {
4949
* Private constructor
5050
*/
5151
private JreCertificates() {
52-
KeyStore jreKeyStore = JREKeyStoreFactory.getDefaultKeyStore();
52+
KeyStore jreKeyStore = JreKeyStoreFactory.getDefaultKeyStore();
5353
aliases = Optional.ofNullable(jreKeyStore)
5454
.map(a -> {
5555
try {

sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/implementation/certificates/package-info.java

Lines changed: 0 additions & 7 deletions
This file was deleted.

sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/implementation/model/package-info.java

Lines changed: 0 additions & 7 deletions
This file was deleted.

sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/implementation/package-info.java

Lines changed: 0 additions & 7 deletions
This file was deleted.

sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/implementation/signature/AbstractKeyVaultKeyLessSignature.java renamed to sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/implementation/signature/AbstractKeyVaultKeylessSignature.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
import java.security.spec.AlgorithmParameterSpec;
1818

1919
/**
20-
* KeyVault Signature to key less sign
20+
* KeyVault Signature to keyless sign
2121
*/
22-
public abstract class AbstractKeyVaultKeyLessSignature extends SignatureSpi {
22+
public abstract class AbstractKeyVaultKeylessSignature extends SignatureSpi {
2323

2424
protected KeyVaultClient keyVaultClient;
2525

sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/implementation/signature/KeyVaultKeyLessEcSha256Signature.java renamed to sdk/keyvault/azure-security-keyvault-jca/src/main/java/com/azure/security/keyvault/jca/implementation/signature/KeyVaultKeylessEcSha256Signature.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
/**
66
* key vault SHA256
77
*/
8-
public final class KeyVaultKeyLessEcSha256Signature extends KeyVaultKeyLessECSignature {
8+
public final class KeyVaultKeylessEcSha256Signature extends KeyVaultKeylessEcSignature {
99

1010
@Override
1111
public String getAlgorithmName() {
@@ -15,7 +15,7 @@ public String getAlgorithmName() {
1515
/**
1616
* support SHA-256
1717
*/
18-
public KeyVaultKeyLessEcSha256Signature() {
18+
public KeyVaultKeylessEcSha256Signature() {
1919
super("SHA-256", "ES256");
2020
}
2121

0 commit comments

Comments
 (0)