You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by sm...@apache.org on 2006/10/05 07:51:11 UTC
svn commit: r453111 - in
/incubator/harmony/enhanced/classlib/trunk/modules/security/src:
main/java/common/org/apache/harmony/security/x509/
test/impl/java/org/apache/harmony/security/tests/provider/cert/
Author: smishura
Date: Wed Oct 4 22:51:10 2006
New Revision: 453111
URL: http://svn.apache.org/viewvc?view=rev&rev=453111
Log:
Apply patch for HARMONY-1701 ([classlib][security] X.509 framework fails to encode IssuingDistributionPoint extension)
Modified:
incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/IssuingDistributionPoint.java
incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/ReasonFlags.java
incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java/org/apache/harmony/security/tests/provider/cert/X509CRLImplTest.java
Modified: incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/IssuingDistributionPoint.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/IssuingDistributionPoint.java?view=diff&rev=453111&r1=453110&r2=453111
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/IssuingDistributionPoint.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/IssuingDistributionPoint.java Wed Oct 4 22:51:10 2006
@@ -21,6 +21,7 @@
import org.apache.harmony.security.asn1.BerInputStream;
import org.apache.harmony.security.asn1.ASN1Boolean;
+import org.apache.harmony.security.asn1.ASN1Explicit;
import org.apache.harmony.security.asn1.ASN1Implicit;
import org.apache.harmony.security.asn1.ASN1Sequence;
import org.apache.harmony.security.asn1.ASN1Type;
@@ -64,16 +65,12 @@
/**
* Creates the extension object on the base of its encoded form.
*/
- public IssuingDistributionPoint(byte[] encoding) throws IOException {
- super(encoding);
+ public static IssuingDistributionPoint decode(byte[] encoding)
+ throws IOException {
IssuingDistributionPoint idp =
(IssuingDistributionPoint) ASN1.decode(encoding);
- this.distributionPoint = idp.distributionPoint;
- this.onlyContainsUserCerts = idp.onlyContainsUserCerts;
- this.onlyContainsCACerts = idp.onlyContainsCACerts;
- this.onlySomeReasons = idp.onlySomeReasons;
- this.indirectCRL = idp.indirectCRL;
- this.onlyContainsAttributeCerts = idp.onlyContainsAttributeCerts;
+ idp.encoding = encoding;
+ return idp;
}
/**
@@ -172,7 +169,8 @@
*/
public static ASN1Type ASN1 = new ASN1Sequence(
new ASN1Type[] {
- new ASN1Implicit(0, DistributionPointName.ASN1),
+ // ASN.1 prohibits implicitly tagged CHOICE
+ new ASN1Explicit(0, DistributionPointName.ASN1),
new ASN1Implicit(1, ASN1Boolean.getInstance()),
new ASN1Implicit(2, ASN1Boolean.getInstance()),
new ASN1Implicit(3, ReasonFlags.ASN1),
Modified: incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/ReasonFlags.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/ReasonFlags.java?view=diff&rev=453111&r1=453110&r2=453111
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/ReasonFlags.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/org/apache/harmony/security/x509/ReasonFlags.java Wed Oct 4 22:51:10 2006
@@ -51,20 +51,44 @@
* </pre>
*/
public class ReasonFlags {
+
+ /**
+ * The names of the reasons.
+ */
+ public static final String[] REASONS = {
+ "unused", //$NON-NLS-1$
+ "keyCompromise", //$NON-NLS-1$
+ "cACompromise", //$NON-NLS-1$
+ "affiliationChanged", //$NON-NLS-1$
+ "superseded", //$NON-NLS-1$
+ "cessationOfOperation", //$NON-NLS-1$
+ "certificateHold", //$NON-NLS-1$
+ "privilegeWithdrawn", //$NON-NLS-1$
+ "aACompromise" //$NON-NLS-1$
+ };
- boolean[] flags;
+ // the value of extension
+ private boolean[] flags;
+ /**
+ * Creates the extension object corresponding to the given flags.
+ */
public ReasonFlags(boolean[] flags) {
this.flags = flags;
}
-
- public static ASN1BitString ASN1 = new ASN1BitString.ASN1NamedBitList() {
+
+ /**
+ * ASN.1 Encoder/Decoder.
+ */
+ public static ASN1BitString ASN1 =
+ new ASN1BitString.ASN1NamedBitList(REASONS.length) {
public Object getDecodedObject(BerInputStream in) throws IOException {
return new ReasonFlags((boolean[]) super.getDecodedObject(in));
}
public void setEncodingContent(BerOutputStream out) {
out.content = ((ReasonFlags) out.content).flags;
+ super.setEncodingContent(out);
}
};
}
Modified: incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java/org/apache/harmony/security/tests/provider/cert/X509CRLImplTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java/org/apache/harmony/security/tests/provider/cert/X509CRLImplTest.java?view=diff&rev=453111&r1=453110&r2=453111
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java/org/apache/harmony/security/tests/provider/cert/X509CRLImplTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/security/src/test/impl/java/org/apache/harmony/security/tests/provider/cert/X509CRLImplTest.java Wed Oct 4 22:51:10 2006
@@ -51,12 +51,16 @@
import org.apache.harmony.security.x509.Certificate;
import org.apache.harmony.security.x509.CertificateIssuer;
import org.apache.harmony.security.x509.CertificateList;
+import org.apache.harmony.security.x509.CRLNumber;
+import org.apache.harmony.security.x509.DistributionPointName;
import org.apache.harmony.security.x509.Extension;
import org.apache.harmony.security.x509.Extensions;
import org.apache.harmony.security.x509.GeneralName;
import org.apache.harmony.security.x509.GeneralNames;
+import org.apache.harmony.security.x509.IssuingDistributionPoint;
import org.apache.harmony.security.x509.InvalidityDate;
import org.apache.harmony.security.x509.ReasonCode;
+import org.apache.harmony.security.x509.ReasonFlags;
import org.apache.harmony.security.x509.SubjectPublicKeyInfo;
import org.apache.harmony.security.x509.TBSCertList;
import org.apache.harmony.security.x509.TBSCertificate;
@@ -135,9 +139,8 @@
crlExtensions = new Extensions(
Arrays.asList(new Extension[] {
// CRL Number Extension
- new Extension("2.5.29.20",
- ASN1Integer.getInstance().encode(
- BigInteger.valueOf(4444).toByteArray())),
+ new Extension("2.5.29.20", Extension.NON_CRITICAL,
+ new CRLNumber(BigInteger.valueOf(4444))),
// Authority Key Identifier
new Extension("2.5.29.35", false,
new AuthorityKeyIdentifier(
@@ -150,6 +153,20 @@
})),
// authorityCertSerialNumber
certSerialNumber2)),
+ // Issuing Distribution Point
+ new Extension("2.5.29.28", Extension.CRITICAL,
+ new IssuingDistributionPoint(
+ new DistributionPointName(new GeneralNames(
+ Arrays.asList(new GeneralName[] {
+ new GeneralName(1, "rfc@822.Name"),
+ new GeneralName(2, "dNSName"),
+ new GeneralName(4, "O=Organization"),
+ new GeneralName(6, "http://uniform.Resource.Id"),
+ new GeneralName(7, "255.255.255.0"),
+ new GeneralName(8, "1.2.3.4444.55555")
+ }))),
+ new ReasonFlags(new boolean[] {true, true, false, false, true, true})
+ )),
}));
} catch (Exception e) {
e.printStackTrace();