package org.jboss.resteasy.skeleton.key.representations.idm; import org.bouncycastle.openssl.PEMWriter; import org.codehaus.jackson.annotate.JsonIgnore; import org.codehaus.jackson.annotate.JsonProperty; import org.jboss.resteasy.skeleton.key.PemUtils; import java.io.IOException; import java.io.StringWriter; import java.security.PublicKey; /** * @author <a href="mailto:bill@burkecentral.com">Bill Burke</a> * @version $Revision: 1 $ */ public class PublishedRealmRepresentation { protected String realm; protected String self; @JsonProperty("public_key") protected String publicKeyPem; @JsonProperty("authorization") protected String authorizationUrl; @JsonProperty("codes") protected String codeUrl; @JsonProperty("grants") protected String grantUrl; @JsonIgnore protected volatile transient PublicKey publicKey; public String getRealm() { return realm; } public void setRealm(String realm) { this.realm = realm; } public String getSelf() { return self; } public void setSelf(String self) { this.self = self; } public String getPublicKeyPem() { return publicKeyPem; } public void setPublicKeyPem(String publicKeyPem) { this.publicKeyPem = publicKeyPem; this.publicKey = null; } @JsonIgnore public PublicKey getPublicKey() { if (publicKey != null) return publicKey; if (publicKeyPem != null) { try { publicKey = PemUtils.decodePublicKey(publicKeyPem); } catch (Exception e) { throw new RuntimeException(e); } } return publicKey; } @JsonIgnore public void setPublicKey(PublicKey publicKey) { this.publicKey = publicKey; StringWriter writer = new StringWriter(); PEMWriter pemWriter = new PEMWriter(writer); try { pemWriter.writeObject(publicKey); pemWriter.flush(); } catch (IOException e) { throw new RuntimeException(e); } String s = writer.toString(); this.publicKeyPem = PemUtils.removeBeginEnd(s); } public String getAuthorizationUrl() { return authorizationUrl; } public void setAuthorizationUrl(String authorizationUrl) { this.authorizationUrl = authorizationUrl; } public String getCodeUrl() { return codeUrl; } public void setCodeUrl(String codeUrl) { this.codeUrl = codeUrl; } public String getGrantUrl() { return grantUrl; } public void setGrantUrl(String grantUrl) { this.grantUrl = grantUrl; } }