diff options
Diffstat (limited to 'container-disc/src/main/java/com/yahoo/container/jdisc/athenz/impl/InstanceIdentity.java')
-rw-r--r-- | container-disc/src/main/java/com/yahoo/container/jdisc/athenz/impl/InstanceIdentity.java | 46 |
1 files changed, 19 insertions, 27 deletions
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/impl/InstanceIdentity.java b/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/impl/InstanceIdentity.java index ccb9b12c61a..20bbb2aa67e 100644 --- a/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/impl/InstanceIdentity.java +++ b/container-disc/src/main/java/com/yahoo/container/jdisc/athenz/impl/InstanceIdentity.java @@ -4,8 +4,13 @@ package com.yahoo.container.jdisc.athenz.impl; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; -import java.util.Map; +import java.io.IOException; +import java.security.cert.X509Certificate; /** * Used for deserializing response from ZTS @@ -15,42 +20,29 @@ import java.util.Map; @JsonIgnoreProperties(ignoreUnknown = true) @JsonInclude(JsonInclude.Include.NON_NULL) public class InstanceIdentity { - @JsonProperty("attributes") private final Map<String, String> attributes; - @JsonProperty("provider") private final String provider; - @JsonProperty("name") private final String name; - @JsonProperty("instanceId") private final String instanceId; - @JsonProperty("x509Certificate") private final String x509Certificate; - @JsonProperty("x509CertificateSigner") private final String x509CertificateSigner; - @JsonProperty("sshCertificate") private final String sshCertificate; - @JsonProperty("sshCertificateSigner") private final String sshCertificateSigner; + @JsonProperty("x509Certificate") private final X509Certificate x509Certificate; @JsonProperty("serviceToken") private final String serviceToken; - public InstanceIdentity( - @JsonProperty("attributes") Map<String, String> attributes, - @JsonProperty("provider") String provider, - @JsonProperty("name") String name, - @JsonProperty("instanceId") String instanceId, - @JsonProperty("x509Certificate") String x509Certificate, - @JsonProperty("x509CertificateSigner") String x509CertificateSigner, - @JsonProperty("sshCertificate") String sshCertificate, - @JsonProperty("sshCertificateSigner") String sshCertificateSigner, - @JsonProperty("serviceToken") String serviceToken) { - this.attributes = attributes; - this.provider = provider; - this.name = name; - this.instanceId = instanceId; + public InstanceIdentity(@JsonProperty("x509Certificate") @JsonDeserialize(using = X509CertificateDeserializer.class) + X509Certificate x509Certificate, + @JsonProperty("serviceToken") String serviceToken) { this.x509Certificate = x509Certificate; - this.x509CertificateSigner = x509CertificateSigner; - this.sshCertificate = sshCertificate; - this.sshCertificateSigner = sshCertificateSigner; this.serviceToken = serviceToken; } - public String getX509Certificate() { + public X509Certificate getX509Certificate() { return x509Certificate; } public String getServiceToken() { return serviceToken; } + + public static class X509CertificateDeserializer extends JsonDeserializer<X509Certificate> { + @Override + public X509Certificate deserialize(JsonParser parser, DeserializationContext context) throws IOException { + return CryptoUtils.parseCertificate(parser.getValueAsString()); + } + } + } |