📄 x509nametest.java
字号:
package org.bouncycastle.asn1.test;import org.bouncycastle.asn1.ASN1EncodableVector;import org.bouncycastle.asn1.ASN1InputStream;import org.bouncycastle.asn1.ASN1OutputStream;import org.bouncycastle.asn1.ASN1Sequence;import org.bouncycastle.asn1.ASN1Set;import org.bouncycastle.asn1.DEREncodable;import org.bouncycastle.asn1.DERGeneralizedTime;import org.bouncycastle.asn1.DERIA5String;import org.bouncycastle.asn1.DERObjectIdentifier;import org.bouncycastle.asn1.DERPrintableString;import org.bouncycastle.asn1.DERSequence;import org.bouncycastle.asn1.DERSet;import org.bouncycastle.asn1.DERUTF8String;import org.bouncycastle.asn1.x509.X509DefaultEntryConverter;import org.bouncycastle.asn1.x509.X509Name;import org.bouncycastle.util.Arrays;import org.bouncycastle.util.encoders.Hex;import org.bouncycastle.util.test.SimpleTest;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.Hashtable;import java.util.Vector;public class X509NameTest extends SimpleTest{ String[] subjects = { "C=AU,ST=Victoria,L=South Melbourne,O=Connect 4 Pty Ltd,OU=Webserver Team,CN=www2.connect4.com.au,E=webmaster@connect4.com.au", "C=AU,ST=Victoria,L=South Melbourne,O=Connect 4 Pty Ltd,OU=Certificate Authority,CN=Connect 4 CA,E=webmaster@connect4.com.au", "C=AU,ST=QLD,CN=SSLeay/rsa test cert", "C=US,O=National Aeronautics and Space Administration,SN=16+CN=Steve Schoch", "E=cooke@issl.atl.hp.com,C=US,OU=Hewlett Packard Company (ISSL),CN=Paul A. Cooke", "O=Sun Microsystems Inc,CN=store.sun.com", "unstructuredAddress=192.168.1.33,unstructuredName=pixfirewall.ciscopix.com,CN=pixfirewall.ciscopix.com" }; public String getName() { return "X509Name"; } private static X509Name fromBytes( byte[] bytes) throws IOException { return X509Name.getInstance(new ASN1InputStream(new ByteArrayInputStream(bytes)).readObject()); } private DEREncodable createEntryValue(DERObjectIdentifier oid, String value) { Hashtable attrs = new Hashtable(); attrs.put(oid, value); X509Name name = new X509Name(attrs); ASN1Sequence seq = (ASN1Sequence)name.getDERObject(); ASN1Set set = (ASN1Set)seq.getObjectAt(0); seq = (ASN1Sequence)set.getObjectAt(0); return seq.getObjectAt(1); } private DEREncodable createEntryValueFromString(DERObjectIdentifier oid, String value) { Hashtable attrs = new Hashtable(); attrs.put(oid, value); X509Name name = new X509Name(new X509Name(attrs).toString()); ASN1Sequence seq = (ASN1Sequence)name.getDERObject(); ASN1Set set = (ASN1Set)seq.getObjectAt(0); seq = (ASN1Sequence)set.getObjectAt(0); return seq.getObjectAt(1); } private void testEncodingPrintableString(DERObjectIdentifier oid, String value) { DEREncodable converted = createEntryValue(oid, value); if (!(converted instanceof DERPrintableString)) { fail("encoding for " + oid + " not printable string"); } } private void testEncodingIA5String(DERObjectIdentifier oid, String value) { DEREncodable converted = createEntryValue(oid, value); if (!(converted instanceof DERIA5String)) { fail("encoding for " + oid + " not IA5String"); } } private void testEncodingGeneralizedTime(DERObjectIdentifier oid, String value) { DEREncodable converted = createEntryValue(oid, value); if (!(converted instanceof DERGeneralizedTime)) { fail("encoding for " + oid + " not GeneralizedTime"); } converted = createEntryValueFromString(oid, value); if (!(converted instanceof DERGeneralizedTime)) { fail("encoding for " + oid + " not GeneralizedTime"); } } public void performTest() throws Exception { testEncodingPrintableString(X509Name.C, "AU"); testEncodingPrintableString(X509Name.SERIALNUMBER, "123456"); testEncodingPrintableString(X509Name.DN_QUALIFIER, "123456"); testEncodingIA5String(X509Name.EmailAddress, "test@test.com"); testEncodingIA5String(X509Name.DC, "test"); // correct encoding testEncodingGeneralizedTime(X509Name.DATE_OF_BIRTH, "#180F32303032303132323132323232305A"); // compatability encoding testEncodingGeneralizedTime(X509Name.DATE_OF_BIRTH, "20020122122220Z"); // // composite // Hashtable attrs = new Hashtable(); attrs.put(X509Name.C, "AU"); attrs.put(X509Name.O, "The Legion of the Bouncy Castle"); attrs.put(X509Name.L, "Melbourne"); attrs.put(X509Name.ST, "Victoria"); attrs.put(X509Name.E, "feedback-crypto@bouncycastle.org"); X509Name name1 = new X509Name(attrs); if (!name1.equals(name1)) { fail("Failed same object test"); } if (!name1.equals(name1, true)) { fail("Failed same object test - in Order"); } X509Name name2 = new X509Name(attrs); if (!name1.equals(name2)) { fail("Failed same name test"); } if (!name1.equals(name2, true)) { fail("Failed same name test - in Order"); } if (name1.hashCode() != name2.hashCode()) { fail("Failed same name test - in Order"); } Vector ord1 = new Vector(); ord1.addElement(X509Name.C); ord1.addElement(X509Name.O); ord1.addElement(X509Name.L); ord1.addElement(X509Name.ST); ord1.addElement(X509Name.E); Vector ord2 = new Vector(); ord2.addElement(X509Name.E); ord2.addElement(X509Name.ST); ord2.addElement(X509Name.L); ord2.addElement(X509Name.O); ord2.addElement(X509Name.C); name1 = new X509Name(ord1, attrs); name2 = new X509Name(ord2, attrs); if (!name1.equals(name2)) { fail("Failed reverse name test"); } if (name1.equals(name2, true)) { fail("Failed reverse name test - in Order"); } if (!name1.equals(name2, false)) { fail("Failed reverse name test - in Order false"); } Vector oids = name1.getOIDs(); if (!compareVectors(oids, ord1)) { fail("oid comparison test"); } Vector val1 = new Vector(); val1.addElement("AU"); val1.addElement("The Legion of the Bouncy Castle"); val1.addElement("Melbourne"); val1.addElement("Victoria"); val1.addElement("feedback-crypto@bouncycastle.org"); name1 = new X509Name(ord1, val1); Vector values = name1.getValues(); if (!compareVectors(values, val1)) { fail("value comparison test"); } ord2 = new Vector(); ord2.addElement(X509Name.ST); ord2.addElement(X509Name.ST); ord2.addElement(X509Name.L); ord2.addElement(X509Name.O); ord2.addElement(X509Name.C); name1 = new X509Name(ord1, attrs); name2 = new X509Name(ord2, attrs); if (name1.equals(name2)) { fail("Failed different name test"); } ord2 = new Vector(); ord2.addElement(X509Name.ST); ord2.addElement(X509Name.L); ord2.addElement(X509Name.O); ord2.addElement(X509Name.C); name1 = new X509Name(ord1, attrs); name2 = new X509Name(ord2, attrs); if (name1.equals(name2)) { fail("Failed subset name test"); } compositeTest(); ByteArrayOutputStream bOut; ASN1OutputStream aOut; ASN1InputStream aIn; //
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -