From 4782c2cdea4fc7d070c9dac560380cc45852babc Mon Sep 17 00:00:00 2001
From: Kenny Root
+ * Extension ::= SEQUENCE { + * extnID OBJECT IDENTIFIER, + * critical BOOLEAN DEFAULT FALSE, + * extnValue OCTET STRING + * } + *+ * + * @since 1.7 + * @hide + */ +public interface Extension { + /** + * Returns the OID (Object Identifier) for this extension encoded as a + * string (e.g., "2.5.29.15"). + */ + String getId(); + + /** + * Returns {@code true} if this extension is critical. If this is true and + * an implementation does not understand this extension, it must reject it. + * See RFC 3280 section 4.2 for more information. + */ + boolean isCritical(); + + /** + * The DER-encoded value of this extension. + */ + byte[] getValue(); + + /** + * Writes the DER-encoded extension to {@code out}. + * + * @throws IOException when there is an encoding error or error writing to + * {@code out} + */ + void encode(OutputStream out) throws IOException; +} diff --git a/luni/src/main/java/org/apache/harmony/security/x509/Extension.java b/luni/src/main/java/org/apache/harmony/security/x509/Extension.java index d9b02f9..d5d8015 100644 --- a/luni/src/main/java/org/apache/harmony/security/x509/Extension.java +++ b/luni/src/main/java/org/apache/harmony/security/x509/Extension.java @@ -23,6 +23,7 @@ package org.apache.harmony.security.x509; import java.io.IOException; +import java.io.OutputStream; import java.util.Arrays; import org.apache.harmony.security.asn1.ASN1Boolean; import org.apache.harmony.security.asn1.ASN1OctetString; @@ -49,7 +50,7 @@ import org.apache.harmony.security.utils.Array; * } * */ -public final class Extension { +public final class Extension implements java.security.cert.Extension { // critical constants public static final boolean CRITICAL = true; public static final boolean NON_CRITICAL = false; @@ -145,7 +146,8 @@ public final class Extension { /** * Returns the value of extnID field of the structure. */ - public String getExtnID() { + @Override + public String getId() { if (extnID_str == null) { extnID_str = ObjectIdentifier.toString(extnID); } @@ -155,14 +157,16 @@ public final class Extension { /** * Returns the value of critical field of the structure. */ - public boolean getCritical() { + @Override + public boolean isCritical() { return critical; } /** * Returns the value of extnValue field of the structure. */ - public byte[] getExtnValue() { + @Override + public byte[] getValue() { return extnValue; } @@ -187,6 +191,11 @@ public final class Extension { return encoding; } + @Override + public void encode(OutputStream out) throws IOException { + out.write(getEncoded()); + } + @Override public boolean equals(Object ext) { if (!(ext instanceof Extension)) { return false; @@ -287,7 +296,7 @@ public final class Extension { } public void dumpValue(StringBuilder sb, String prefix) { - sb.append("OID: ").append(getExtnID()).append(", Critical: ").append(critical).append('\n'); + sb.append("OID: ").append(getId()).append(", Critical: ").append(critical).append('\n'); if (!valueDecoded) { try { decodeExtensionValue(); diff --git a/luni/src/main/java/org/apache/harmony/security/x509/Extensions.java b/luni/src/main/java/org/apache/harmony/security/x509/Extensions.java index 92ff3a9..7a10ebc 100644 --- a/luni/src/main/java/org/apache/harmony/security/x509/Extensions.java +++ b/luni/src/main/java/org/apache/harmony/security/x509/Extensions.java @@ -136,8 +136,8 @@ public final class Extensions { Set