⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 attrcertselectortest.java

📁 kmlnjlkj nlkjlkjkljl okopokipoipo oipipipo i
💻 JAVA
字号:
package org.bouncycastle.jce.provider.test;import java.io.ByteArrayInputStream;import java.math.BigInteger;import java.security.KeyFactory;import java.security.PrivateKey;import java.security.Security;import java.security.cert.CertificateFactory;import java.security.cert.X509Certificate;import java.security.spec.RSAPrivateCrtKeySpec;import java.util.Date;import org.bouncycastle.asn1.ASN1EncodableVector;import org.bouncycastle.asn1.DERSequence;import org.bouncycastle.asn1.x509.GeneralName;import org.bouncycastle.asn1.x509.Target;import org.bouncycastle.asn1.x509.TargetInformation;import org.bouncycastle.asn1.x509.X509Extensions;import org.bouncycastle.jce.X509Principal;import org.bouncycastle.jce.PrincipalUtil;import org.bouncycastle.jce.provider.BouncyCastleProvider;import org.bouncycastle.util.encoders.Base64;import org.bouncycastle.util.test.SimpleTest;import org.bouncycastle.util.test.Test;import org.bouncycastle.util.test.TestResult;import org.bouncycastle.x509.AttributeCertificateHolder;import org.bouncycastle.x509.AttributeCertificateIssuer;import org.bouncycastle.x509.X509Attribute;import org.bouncycastle.x509.X509AttributeCertStoreSelector;import org.bouncycastle.x509.X509AttributeCertificate;import org.bouncycastle.x509.X509V2AttributeCertificateGenerator;public class AttrCertSelectorTest    extends SimpleTest{    static final RSAPrivateCrtKeySpec RSA_PRIVATE_KEY_SPEC = new RSAPrivateCrtKeySpec(        new BigInteger(            "b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7",            16),        new BigInteger("11", 16),        new BigInteger(            "9f66f6b05410cd503b2709e88115d55daced94d1a34d4e32bf824d0dde6028ae79c5f07b580f5dce240d7111f7ddb130a7945cd7d957d1920994da389f490c89",            16), new BigInteger(            "c0a0758cdf14256f78d4708c86becdead1b50ad4ad6c5c703e2168fbf37884cb",            16), new BigInteger(            "f01734d7960ea60070f1b06f2bb81bfac48ff192ae18451d5e56c734a5aab8a5",            16), new BigInteger(            "b54bb9edff22051d9ee60f9351a48591b6500a319429c069a3e335a1d6171391",            16), new BigInteger(            "d3d83daf2a0cecd3367ae6f8ae1aeb82e9ac2f816c6fc483533d8297dd7884cd",            16), new BigInteger(            "b8f52fc6f38593dabb661d3f50f8897f8106eee68b1bce78a95b132b4e5b5d19",            16));    static final byte[] holderCert = Base64        .decode("MIIGjTCCBXWgAwIBAgICAPswDQYJKoZIhvcNAQEEBQAwaTEdMBsGCSqGSIb3DQEJ"            + "ARYOaXJtaGVscEB2dC5lZHUxLjAsBgNVBAMTJVZpcmdpbmlhIFRlY2ggQ2VydGlm"            + "aWNhdGlvbiBBdXRob3JpdHkxCzAJBgNVBAoTAnZ0MQswCQYDVQQGEwJVUzAeFw0w"            + "MzAxMzExMzUyMTRaFw0wNDAxMzExMzUyMTRaMIGDMRswGQYJKoZIhvcNAQkBFgxz"            + "c2hhaEB2dC5lZHUxGzAZBgNVBAMTElN1bWl0IFNoYWggKHNzaGFoKTEbMBkGA1UE"            + "CxMSVmlyZ2luaWEgVGVjaCBVc2VyMRAwDgYDVQQLEwdDbGFzcyAxMQswCQYDVQQK"            + "EwJ2dDELMAkGA1UEBhMCVVMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAPDc"            + "scgSKmsEp0VegFkuitD5j5PUkDuzLjlfaYONt2SN8WeqU4j2qtlCnsipa128cyKS"            + "JzYe9duUdNxquh5BPIkMkHBw4jHoQA33tk0J/sydWdN74/AHPpPieK5GHwhU7GTG"            + "rCCS1PJRxjXqse79ExAlul+gjQwHeldAC+d4A6oZAgMBAAGjggOmMIIDojAMBgNV"            + "HRMBAf8EAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDAOBgNVHQ8BAf8EBAMCA/gwHQYD"            + "VR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdDgQWBBRUIoWAzlXbzBYE"            + "yVTjQFWyMMKo1jCBkwYDVR0jBIGLMIGIgBTgc3Fm+TGqKDhen+oKfbl+xVbj2KFt"            + "pGswaTEdMBsGCSqGSIb3DQEJARYOaXJtaGVscEB2dC5lZHUxLjAsBgNVBAMTJVZp"            + "cmdpbmlhIFRlY2ggQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxCzAJBgNVBAoTAnZ0"            + "MQswCQYDVQQGEwJVU4IBADCBiwYJYIZIAYb4QgENBH4WfFZpcmdpbmlhIFRlY2gg"            + "Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgZGlnaXRhbCBjZXJ0aWZpY2F0ZXMgYXJl"            + "IHN1YmplY3QgdG8gcG9saWNpZXMgbG9jYXRlZCBhdCBodHRwOi8vd3d3LnBraS52"            + "dC5lZHUvY2EvY3BzLy4wFwYDVR0RBBAwDoEMc3NoYWhAdnQuZWR1MBkGA1UdEgQS"            + "MBCBDmlybWhlbHBAdnQuZWR1MEMGCCsGAQUFBwEBBDcwNTAzBggrBgEFBQcwAoYn"            + "aHR0cDovL2JveDE3Ny5jYy52dC5lZHUvY2EvaXNzdWVycy5odG1sMEQGA1UdHwQ9"            + "MDswOaA3oDWGM2h0dHA6Ly9ib3gxNzcuY2MudnQuZWR1L2h0ZG9jcy1wdWJsaWMv"            + "Y3JsL2NhY3JsLmNybDBUBgNVHSAETTBLMA0GCysGAQQBtGgFAQEBMDoGCysGAQQB"            + "tGgFAQEBMCswKQYIKwYBBQUHAgEWHWh0dHA6Ly93d3cucGtpLnZ0LmVkdS9jYS9j"            + "cHMvMD8GCWCGSAGG+EIBBAQyFjBodHRwOi8vYm94MTc3LmNjLnZ0LmVkdS9jZ2kt"            + "cHVibGljL2NoZWNrX3Jldl9jYT8wPAYJYIZIAYb4QgEDBC8WLWh0dHA6Ly9ib3gx"            + "NzcuY2MudnQuZWR1L2NnaS1wdWJsaWMvY2hlY2tfcmV2PzBLBglghkgBhvhCAQcE"            + "PhY8aHR0cHM6Ly9ib3gxNzcuY2MudnQuZWR1L35PcGVuQ0E4LjAxMDYzMC9jZ2kt"            + "cHVibGljL3JlbmV3YWw/MCwGCWCGSAGG+EIBCAQfFh1odHRwOi8vd3d3LnBraS52"            + "dC5lZHUvY2EvY3BzLzANBgkqhkiG9w0BAQQFAAOCAQEAHJ2ls9yjpZVcu5DqiE67"            + "r7BfkdMnm7IOj2v8cd4EAlPp6OPBmjwDMwvKRBb/P733kLBqFNWXWKTpT008R0KB"            + "8kehbx4h0UPz9vp31zhGv169+5iReQUUQSIwTGNWGLzrT8kPdvxiSAvdAJxcbRBm"            + "KzDic5I8PoGe48kSCkPpT1oNmnivmcu5j1SMvlx0IS2BkFMksr0OHiAW1elSnE/N"            + "RuX2k73b3FucwVxB3NRo3vgoHPCTnh9r4qItAHdxFlF+pPtbw2oHESKRfMRfOIHz"            + "CLQWSIa6Tvg4NIV3RRJ0sbCObesyg08lymalQMdkXwtRn5eGE00SHWwEUjSXP2gR"            + "3g==");    public String getName()    {        return "AttrCertSelector";    }    private X509AttributeCertificate createAttrCert() throws Exception    {        CertificateFactory fact = CertificateFactory.getInstance("X.509", "BC");        X509Certificate iCert = (X509Certificate) fact            .generateCertificate(new ByteArrayInputStream(holderCert));        //        // a sample key pair.        //        // RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(        // new BigInteger(        // "b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7",        // 16), new BigInteger("11", 16));        //        // set up the keys        //        PrivateKey privKey;        KeyFactory kFact = KeyFactory.getInstance("RSA", "BC");        privKey = kFact.generatePrivate(RSA_PRIVATE_KEY_SPEC);        X509V2AttributeCertificateGenerator gen = new X509V2AttributeCertificateGenerator();        // the actual attributes        GeneralName roleName = new GeneralName(GeneralName.rfc822Name,            "DAU123456789@test.com");        ASN1EncodableVector roleSyntax = new ASN1EncodableVector();        roleSyntax.add(roleName);        // roleSyntax OID: 2.5.24.72        X509Attribute attributes = new X509Attribute("2.5.24.72",            new DERSequence(roleSyntax));        gen.addAttribute(attributes);        gen.setHolder(new AttributeCertificateHolder(PrincipalUtil.getSubjectX509Principal(iCert)));        gen.setIssuer(new AttributeCertificateIssuer(new X509Principal(            "cn=test")));        gen.setNotBefore(new Date(System.currentTimeMillis() - 50000));        gen.setNotAfter(new Date(System.currentTimeMillis() + 50000));        gen.setSerialNumber(BigInteger.ONE);        gen.setSignatureAlgorithm("SHA1WithRSAEncryption");        Target targetName = new Target(Target.targetName, new GeneralName(GeneralName.dNSName,            "www.test.com"));        Target targetGroup = new Target(Target.targetGroup, new GeneralName(            GeneralName.directoryName, "o=Test, ou=Test"));        Target[] targets = new Target[2];        targets[0] = targetName;        targets[1] = targetGroup;        TargetInformation targetInformation = new TargetInformation(targets);        gen.addExtension(X509Extensions.TargetInformation.getId(), true,            targetInformation);        return gen.generate(privKey, "BC");    }    public void testSelector() throws Exception    {        X509AttributeCertificate aCert = createAttrCert();        X509AttributeCertStoreSelector sel = new X509AttributeCertStoreSelector();        sel.setAttributeCert(aCert);        boolean match = sel.match(aCert);        if (!match)        {            fail("Selector does not match attribute certificate.");        }        sel.setAttributeCert(null);        match = sel.match(aCert);        if (!match)        {            fail("Selector does not match attribute certificate.");        }        sel.setHolder(aCert.getHolder());        match = sel.match(aCert);        if (!match)        {            fail("Selector does not match attribute certificate holder.");        }        sel.setHolder(null);        sel.setIssuer(aCert.getIssuer());        match = sel.match(aCert);        if (!match)        {            fail("Selector does not match attribute certificate issuer.");        }        sel.setIssuer(null);        CertificateFactory fact = CertificateFactory.getInstance("X.509", "BC");        X509Certificate iCert = (X509Certificate) fact            .generateCertificate(new ByteArrayInputStream(holderCert));        match = aCert.getHolder().match(iCert);        if (!match)        {            fail("Issuer holder does not match signing certificate of attribute certificate.");        }        sel.setSerialNumber(aCert.getSerialNumber());        match = sel.match(aCert);        if (!match)        {            fail("Selector does not match attribute certificate serial number.");        }        sel.setAttributeCertificateValid(new Date());        match = sel.match(aCert);        if (!match)        {            fail("Selector does not match attribute certificate time.");        }        sel.addTargetName(new GeneralName(2, "www.test.com"));        match = sel.match(aCert);        if (!match)        {            fail("Selector does not match attribute certificate target name.");        }        sel.setTargetNames(null);        sel.addTargetGroup(new GeneralName(4, "o=Test, ou=Test"));        match = sel.match(aCert);        if (!match)        {            fail("Selector does not match attribute certificate target group.");        }        sel.setTargetGroups(null);    }    public void performTest() throws Exception    {        Security.addProvider(new BouncyCastleProvider());        testSelector();    }    public static void main(String[] args)    {        Test test = new AttrCertSelectorTest();        TestResult result = test.perform();        System.out.println(result);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -