PROBLEM SUMMARY
When reading zone config Venafi Cloud, vcert-java throws a NullPointerException with this stack trace:
Exception in thread "main" java.lang.NullPointerException
at com.venafi.vcert.sdk.connectors.cloud.domain.CertificateIssuingTemplate.toPolicy(CertificateIssuingTemplate.java:69)
at com.venafi.vcert.sdk.connectors.cloud.CloudConnector.readZoneConfiguration(CloudConnector.java:159)
at com.venafi.vcert.sdk.VCertClient.readZoneConfiguration(VCertClient.java:127)
STEPS TO REPRODUCE
import com.venafi.vcert.sdk.Config;
import com.venafi.vcert.sdk.VCertClient;
import com.venafi.vcert.sdk.VCertException;
import com.venafi.vcert.sdk.endpoint.Authentication;
import com.venafi.vcert.sdk.endpoint.ConnectorType;
public class ZoneErrorTest {
public static final String API_KEY = "[redacted]";
public static final String ZONE = "98f564f0-5e13-11ea-993a-7b095c006e5d";
public static void main(String[] args) throws Exception {
new ZoneErrorTest().run();
}
public void run() throws Exception {
VCertClient client = createClient();
client.readZoneConfiguration(ZONE);
}
private VCertClient createClient() throws VCertException {
Config sdkConfig = Config.builder()
.connectorType(ConnectorType.CLOUD)
.build();
Authentication sdkAuth = Authentication.builder()
.apiKey(API_KEY)
.build();
VCertClient client = new VCertClient(sdkConfig);
client.authenticate(sdkAuth);
return client;
}
}
EXPECTED RESULTS
No exception occurs.
ACTUAL RESULTS
14:52:41.906 [main] DEBUG feign.Logger - [Cloud#authorize] ---> GET https://api.venafi.cloud/v1/useraccounts HTTP/1.1
14:52:42.662 [main] DEBUG feign.Logger - [Cloud#authorize] <--- HTTP/1.1 200 OK (746ms)
14:52:42.698 [main] DEBUG feign.Logger - [Cloud#projects] ---> GET https://api.venafi.cloud/v1/devopsprojects?zoneDetails=true HTTP/1.1
14:52:42.984 [main] DEBUG feign.Logger - [Cloud#projects] <--- HTTP/1.1 200 OK (285ms)
Exception in thread "main" java.lang.NullPointerException
at com.venafi.vcert.sdk.connectors.cloud.domain.CertificateIssuingTemplate.toPolicy(CertificateIssuingTemplate.java:69)
at com.venafi.vcert.sdk.connectors.cloud.CloudConnector.readZoneConfiguration(CloudConnector.java:159)
at com.venafi.vcert.sdk.VCertClient.readZoneConfiguration(VCertClient.java:127)
at FailTest.run(FailTest.java:27)
at ZoneErrorTest.main(ZoneErrorTest.java:12)
ENVIRONMENT DETAILS
Commit 361e641, macOS Catalina, Java 11 (via AdoptOpenJDK, Hotspot).
COMMENTS/WORKAROUNDS
CertificateIssueingTemplate.toPolicy() calls:
List<AllowedKeyConfiguration> allowedKeyConfigurations = keyTypes.stream()
Here, keyTypes is null.
The reason why keyTypes is null is because the API response contains "keyTypesMap", not "keyTypes":
http "https://api.venafi.cloud/v1/devopsprojects?zoneDetails=true" "tppl-api-key:[redacted]"
{
"devopsProjects": [
{
...
"zones": [
{
"cit": {
...
"keyReuse": true,
"keyTypesMap": {
"RSA": [
2048,
4096
]
},
...
},
...
},
...
]
}
]
}
PROBLEM SUMMARY
When reading zone config Venafi Cloud, vcert-java throws a NullPointerException with this stack trace:
STEPS TO REPRODUCE
EXPECTED RESULTS
No exception occurs.
ACTUAL RESULTS
ENVIRONMENT DETAILS
Commit 361e641, macOS Catalina, Java 11 (via AdoptOpenJDK, Hotspot).
COMMENTS/WORKAROUNDS
CertificateIssueingTemplate.toPolicy() calls:
Here, keyTypes is null.
The reason why keyTypes is null is because the API response contains "keyTypesMap", not "keyTypes":
{ "devopsProjects": [ { ... "zones": [ { "cit": { ... "keyReuse": true, "keyTypesMap": { "RSA": [ 2048, 4096 ] }, ... }, ... }, ... ] } ] }