Index: modules/security/src/test/java/common/org/apache/harmony/security/provider/cert/X509CertImplTest.java =================================================================== --- modules/security/src/test/java/common/org/apache/harmony/security/provider/cert/X509CertImplTest.java (revision 396804) +++ modules/security/src/test/java/common/org/apache/harmony/security/provider/cert/X509CertImplTest.java (working copy) @@ -647,9 +647,12 @@ } else { printAsHex(20, "", " ", certExtnValue); } - //fail("The values for extension "+id+" differ."); + fail("The values for extension "+id+" differ."); } } + assertNull("Null value should be returned in the case of " + + "nonexisting extension", + certificate.getExtensionValue("1.1.1.1")); } /** Index: modules/security/src/test/java/common/org/apache/harmony/security/provider/cert/X509CRLImplTest.java =================================================================== --- modules/security/src/test/java/common/org/apache/harmony/security/provider/cert/X509CRLImplTest.java (revision 396804) +++ modules/security/src/test/java/common/org/apache/harmony/security/provider/cert/X509CRLImplTest.java (working copy) @@ -30,6 +30,7 @@ import java.security.Signature; import java.security.cert.CRLException; import java.security.cert.CertificateFactory; +import java.security.cert.X509CRLEntry; import java.util.Arrays; import java.util.Date; import java.util.List; @@ -547,9 +548,10 @@ /** * getExtensionValue(String oid) method testing. */ - public void testGetExtensionValue() { - System.out.println("getExtensionValue: " - + crl.getExtensionValue("2.5.29.20")); + public void testGetExtensionValue() throws Exception { + assertNotNull(crl.getExtensionValue("2.5.29.20")); + assertNull("Null value should be returned in the case of " + + "nonexisting extension", crl.getExtensionValue("1.1.1.1")); } /** Index: modules/security/src/test/java/common/org/apache/harmony/security/provider/cert/X509CRLEntryImplTest.java =================================================================== --- modules/security/src/test/java/common/org/apache/harmony/security/provider/cert/X509CRLEntryImplTest.java (revision 0) +++ modules/security/src/test/java/common/org/apache/harmony/security/provider/cert/X509CRLEntryImplTest.java (revision 0) @@ -0,0 +1,80 @@ +/* + * Copyright 2006 The Apache Software Foundation or its licensors, as applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @author Alexander Y. Kleymenov + * @version $Revision$ + */ + +package org.apache.harmony.security.provider.cert; + +import java.math.BigInteger; +import java.util.Date; +import javax.security.auth.x500.X500Principal; + +import org.apache.harmony.security.x509.Extension; +import org.apache.harmony.security.x509.Extensions; +import org.apache.harmony.security.x509.TBSCertList; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * X509CRLEntryImplTest test + */ +public class X509CRLEntryImplTest extends TestCase { + + /** + * getExtensionValue(String oid) method testing. + */ + public void testGetExtensionValue() throws Exception { + // revoked certificate issuer + X500Principal issuer = + new X500Principal("O=Certificate Issuer"); + // revoked sertificate serial number + BigInteger serialNumber = BigInteger.valueOf(555); + // crl entry extensions + Extensions crlEntryExtensions = new Extensions(); + // add reason code extension which OID is 2.5.29.21 + // see RFC 3280 http://www.ietf.org/rfc/rfc3280.txt + crlEntryExtensions.addExtension(new Extension.ReasonCode(1)); + // crl entry + X509CRLEntryImpl crlEntry = new X509CRLEntryImpl( + new TBSCertList.RevokedCertificate( + serialNumber, + new Date(), + crlEntryExtensions + ), + issuer + ); + assertNotNull(crlEntry.getExtensionValue("2.5.29.21")); + assertNull("Null value should be returned in the case of " + + "nonexisting extension", + // demand absent Invalidity Date extension + // which OID is 2.5.29.24 (RFC 3280) + crlEntry.getExtensionValue("2.5.29.24")); + } + + public static Test suite() { + return new TestSuite(X509CRLEntryImplTest.class); + } + + public static void main(String[] args) { + junit.textui.TestRunner.run(suite()); + } +} + Index: modules/security/src/main/java/common/org/apache/harmony/security/provider/cert/X509CertImpl.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/provider/cert/X509CertImpl.java (revision 396820) +++ modules/security/src/main/java/common/org/apache/harmony/security/provider/cert/X509CertImpl.java (working copy) @@ -46,6 +46,7 @@ import org.apache.harmony.crypto.utils.AlgNameMapper; import org.apache.harmony.security.x509.Certificate; +import org.apache.harmony.security.x509.Extension; import org.apache.harmony.security.x509.Extensions; import org.apache.harmony.security.x509.TBSCertificate; @@ -417,7 +418,8 @@ if (extensions == null) { return null; } - return extensions.getExtensionByOID(oid).getRawExtnValue(); + Extension ext = extensions.getExtensionByOID(oid); + return (ext == null) ? null : ext.getRawExtnValue(); } public boolean hasUnsupportedCriticalExtension() { Index: modules/security/src/main/java/common/org/apache/harmony/security/provider/cert/X509CRLImpl.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/provider/cert/X509CRLImpl.java (revision 396820) +++ modules/security/src/main/java/common/org/apache/harmony/security/provider/cert/X509CRLImpl.java (working copy) @@ -46,6 +46,7 @@ import org.apache.harmony.crypto.utils.AlgNameMapper; import org.apache.harmony.security.x509.CertificateList; +import org.apache.harmony.security.x509.Extension; import org.apache.harmony.security.x509.Extensions; import org.apache.harmony.security.x509.TBSCertList; @@ -397,7 +398,8 @@ if (extensions == null) { return null; } - return extensions.getExtensionByOID(oid).getRawExtnValue(); + Extension ext = extensions.getExtensionByOID(oid); + return (ext == null) ? null : ext.getRawExtnValue(); } public boolean hasUnsupportedCriticalExtension() { Index: modules/security/src/main/java/common/org/apache/harmony/security/provider/cert/X509CRLEntryImpl.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/provider/cert/X509CRLEntryImpl.java (revision 396820) +++ modules/security/src/main/java/common/org/apache/harmony/security/provider/cert/X509CRLEntryImpl.java (working copy) @@ -29,6 +29,7 @@ import javax.security.auth.x500.X500Principal; +import org.apache.harmony.security.x509.Extension; import org.apache.harmony.security.x509.Extensions; import org.apache.harmony.security.x509.TBSCertList; @@ -119,7 +120,8 @@ if (extensions == null) { return null; } - return extensions.getExtensionByOID(oid).getRawExtnValue(); + Extension ext = extensions.getExtensionByOID(oid); + return (ext == null) ? null : ext.getRawExtnValue(); } public boolean hasUnsupportedCriticalExtension() {