Index: modules/security/src/test/impl/java/org/apache/harmony/security/tests/pkcs10/CertificationRequestInfoTest.java =================================================================== --- modules/security/src/test/impl/java/org/apache/harmony/security/tests/pkcs10/CertificationRequestInfoTest.java (revision 0) +++ modules/security/src/test/impl/java/org/apache/harmony/security/tests/pkcs10/CertificationRequestInfoTest.java (revision 0) @@ -0,0 +1,74 @@ +package org.apache.harmony.security.tests.pkcs10; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import javax.security.auth.x500.X500Principal; + +import junit.framework.TestCase; + +import org.apache.harmony.security.pkcs10.CertificationRequestInfo; +import org.apache.harmony.security.x501.AttributeTypeAndValue; +import org.apache.harmony.security.x501.AttributeValue; +import org.apache.harmony.security.x501.Name; +import org.apache.harmony.security.x509.AlgorithmIdentifier; +import org.apache.harmony.security.x509.SubjectPublicKeyInfo; + + +public class CertificationRequestInfoTest extends TestCase { + + public static void main(String[] args) { + junit.textui.TestRunner.run(CertificationRequestInfoTest.class); + } + + /** + * Test method for CertificationRequestInfo. Creates + * CertificationRequestInfo, gets its values, encodes and decodes the + * encoded form. + * + * @throws IOException + */ + public void testCertificationRequestInfo() throws IOException { + int version = 2;// X.509 v3 + Name subject = new Name("O=subject"); + SubjectPublicKeyInfo spki = new SubjectPublicKeyInfo( + new AlgorithmIdentifier("1.2.840.113549.1.1.2"), new byte[4]); + List attributes = new ArrayList(); + // 1.2.840.113549.1.9.1 is OID of EMAILADDRESS + attributes.add(new AttributeTypeAndValue("1.2.840.113549.1.9.1", + new AttributeValue("a@b.com", false))); + + CertificationRequestInfo certReqInfo = new CertificationRequestInfo( + version, subject, spki, attributes); + + // check what we have constructed + assertEquals(version, certReqInfo.getVersion()); + assertEquals(subject.getName(X500Principal.RFC1779), certReqInfo + .getSubject().getName(X500Principal.RFC1779)); + assertTrue(Arrays.equals(spki.getEncoded(), certReqInfo + .getSubjectPublicKeyInfo().getEncoded())); + assertEquals(attributes, certReqInfo.getAttributes()); + + // decode the encoded CertificationRequestInfo + byte[] encoding = certReqInfo.getEncoded(); + CertificationRequestInfo decoded = + (CertificationRequestInfo) CertificationRequestInfo.ASN1 + .decode(encoding); + + // check what was decoded + assertEquals(certReqInfo.getVersion(), decoded.getVersion()); + assertEquals(certReqInfo.getSubject().getName(X500Principal.CANONICAL), + decoded.getSubject().getName(X500Principal.CANONICAL)); + assertTrue(Arrays.equals(certReqInfo.getSubjectPublicKeyInfo() + .getEncoded(), decoded.getSubjectPublicKeyInfo().getEncoded())); + + AttributeTypeAndValue certReqInfoATaV = (AttributeTypeAndValue) certReqInfo + .getAttributes().get(0); + AttributeTypeAndValue decodedATaV = (AttributeTypeAndValue) decoded + .getAttributes().get(0); + assertEquals(certReqInfoATaV.getType(), decodedATaV.getType()); + } +} + Index: modules/security/src/test/impl/java/org/apache/harmony/security/tests/pkcs10/CertificationRequestTest.java =================================================================== --- modules/security/src/test/impl/java/org/apache/harmony/security/tests/pkcs10/CertificationRequestTest.java (revision 0) +++ modules/security/src/test/impl/java/org/apache/harmony/security/tests/pkcs10/CertificationRequestTest.java (revision 0) @@ -0,0 +1,75 @@ +package org.apache.harmony.security.tests.pkcs10; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import junit.framework.TestCase; + +import org.apache.harmony.security.pkcs10.CertificationRequest; +import org.apache.harmony.security.pkcs10.CertificationRequestInfo; +import org.apache.harmony.security.x501.AttributeTypeAndValue; +import org.apache.harmony.security.x501.AttributeValue; +import org.apache.harmony.security.x501.Name; +import org.apache.harmony.security.x509.AlgorithmIdentifier; +import org.apache.harmony.security.x509.SubjectPublicKeyInfo; + + + +public class CertificationRequestTest extends TestCase { + + public static void main(String[] args) { + junit.textui.TestRunner.run(CertificationRequestTest.class); + } + + /** + * Test method for 'com.openintel.drl.security.pkcs10.CertificationRequest'. + * Creates CertificationRequest, gets its values, encodes and decodes the + * encoded form. + * + * @throws IOException + */ + public void testCertificationRequest() throws IOException { + int version = 2;// v3 + Name subject = new Name("O=subject"); + SubjectPublicKeyInfo spki = new SubjectPublicKeyInfo( + new AlgorithmIdentifier("1.2.840.113549.1.1.2"), new byte[4]); + List attributes = new ArrayList(); + // 1.2.840.113549.1.9.1 is OID of EMAILADDRESS + attributes.add(new AttributeTypeAndValue("1.2.840.113549.1.9.1", + new AttributeValue("a@b.com", false))); + CertificationRequestInfo certReqInfo = new CertificationRequestInfo( + version, subject, spki, attributes); + AlgorithmIdentifier signatureAlgId = new AlgorithmIdentifier( + "1.2.3.44.555"); + byte[] signature = { (byte) 0x01, (byte) 0x02, (byte) 0x03, + (byte) 0x04, (byte) 0x05 }; + + CertificationRequest certReq = new CertificationRequest(certReqInfo, + signatureAlgId, signature); + + // check what we have constructed + assertEquals(certReqInfo, certReq.getInfo()); + assertEquals(signatureAlgId, certReq.getAlgId()); + assertTrue(Arrays.equals(signature, certReq.getSignature())); + + // decode the encoded CSR + byte[] encoding = certReq.getEncoded(); + CertificationRequest decoded = (CertificationRequest) CertificationRequest.ASN1 + .decode(encoding); + + // check what was decoded + CertificationRequestInfo decodedCRinfo = certReq.getInfo(); + + assertEquals(certReqInfo.getSubject(), decodedCRinfo.getSubject()); + assertEquals(certReqInfo.getSubjectPublicKeyInfo(), decodedCRinfo + .getSubjectPublicKeyInfo()); + assertEquals(certReqInfo.getVersion(), decodedCRinfo.getVersion()); + assertEquals(certReqInfo.getAttributes(), decodedCRinfo.getAttributes()); + + assertEquals(certReq.getAlgId(), decoded.getAlgId()); + assertTrue(Arrays.equals(certReq.getSignature(), decoded.getSignature())); + } +} +