Skip to content

Commit eb414be

Browse files
authored
Fix bug: Failed to get cert name when key vault name include "certificates" (#42522)
1 parent 8c639ed commit eb414be

File tree

4 files changed

+21
-4
lines changed

4 files changed

+21
-4
lines changed

sdk/keyvault/azure-security-keyvault-jca/CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
### Breaking Changes
88

99
### Bugs Fixed
10-
- Fixed bug about intermediate certificate not loaded. [#39715](https://github.com/Azure/azure-sdk-for-java/issues/39715).
10+
- Fixed bug: Intermediate certificate not loaded. [#39715](https://github.com/Azure/azure-sdk-for-java/issues/39715).
11+
- Fixed bug: Failed to get cert name when key vault name include "certificates". [#42162](https://github.com/Azure/azure-sdk-for-java/issues/42162).
1112

1213
### Other Changes
1314

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import java.util.logging.Logger;
4444

4545
import static com.azure.security.keyvault.jca.implementation.utils.AccessTokenUtil.getLoginUri;
46+
import static com.azure.security.keyvault.jca.implementation.utils.CertificateUtil.getCertificateNameFromCertificateItemId;
4647
import static com.azure.security.keyvault.jca.implementation.utils.CertificateUtil.loadCertificatesFromSecretBundleValue;
4748
import static com.azure.security.keyvault.jca.implementation.utils.HttpUtil.API_VERSION_POSTFIX;
4849
import static com.azure.security.keyvault.jca.implementation.utils.HttpUtil.HTTPS_PREFIX;
@@ -235,11 +236,9 @@ public List<String> getAliases() {
235236

236237
if (certificateListResult != null) {
237238
uri = certificateListResult.getNextLink();
238-
239239
for (CertificateItem certificateItem : certificateListResult.getValue()) {
240240
String id = certificateItem.getId();
241-
String alias = id.substring(id.indexOf("certificates") + "certificates".length() + 1);
242-
241+
String alias = getCertificateNameFromCertificateItemId(id);
243242
result.add(alias);
244243
}
245244
} else {

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,13 @@ public static Certificate[] loadX509CertificatesFromFile(InputStream inputStream
104104
.collect(Collectors.toList())
105105
.toArray(new Certificate[0]);
106106
}
107+
108+
public static String getCertificateNameFromCertificateItemId(String id) {
109+
// Example id: https://mycertificates.vault.azure.net/certificates/mycert
110+
// Here, vault name is mycertificates.
111+
// Vault name must be a 3-24 character string, containing only 0-9, a-z, A-Z, and not consecutive -.
112+
String keyWord = "/certificates/";
113+
return id.substring(id.indexOf(keyWord) + keyWord.length());
114+
}
115+
107116
}

sdk/keyvault/azure-security-keyvault-jca/src/test/java/com/azure/security/keyvault/jca/implementation/utils/CertificateUtilTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.security.cert.Certificate;
1919
import java.security.cert.CertificateException;
2020

21+
import static com.azure.security.keyvault.jca.implementation.utils.CertificateUtil.getCertificateNameFromCertificateItemId;
2122
import static com.azure.security.keyvault.jca.implementation.utils.CertificateUtil.loadX509CertificateFromFile;
2223
import static com.azure.security.keyvault.jca.implementation.utils.CertificateUtil.loadX509CertificatesFromFile;
2324
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -79,4 +80,11 @@ private void assertCertificateNumberInInFile(String file, int expectedCertificat
7980
Certificate[] certificates = loadX509CertificatesFromFile(inputStream);
8081
assertEquals(expectedCertificateNumber, certificates.length);
8182
}
83+
84+
@Test
85+
public void getCertificateNameFromCertificateItemIdTest() {
86+
assertEquals("mycert", getCertificateNameFromCertificateItemId("https://test.vault.azure.net/certificates/mycert"));
87+
assertEquals("mycert", getCertificateNameFromCertificateItemId("https://test-certificates.vault.azure.net/certificates/mycert"));
88+
assertEquals("mycert", getCertificateNameFromCertificateItemId("https://mycertificates.vault.azure.net/certificates/mycert"));
89+
}
8290
}

0 commit comments

Comments
 (0)