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

📄 pkcs7signeddatatest.java

📁 kmlnjlkj nlkjlkjkljl okopokipoipo oipipipo i
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    {        //        // a sample key pair.        //        RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(            new BigInteger("b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", 16),            new BigInteger("11", 16));        RSAPrivateCrtKeySpec privKeySpec = 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));        //        // set up the keys        //        PrivateKey          privKey;        PublicKey           pubKey;        try        {            KeyFactory  fact = KeyFactory.getInstance("RSA", "BC");            privKey = fact.generatePrivate(privKeySpec);            pubKey = fact.generatePublic(pubKeySpec);        }        catch (Exception e)        {            return new SimpleTestResult(false, getName() + ": error setting up keys - " + e.toString());        }        //        // distinguished name table.        //        Hashtable                   attrs = new Hashtable();        attrs.put(X509Principal.C, "AU");        attrs.put(X509Principal.O, "The Legion of the Bouncy Castle");        attrs.put(X509Principal.L, "Melbourne");        attrs.put(X509Principal.ST, "Victoria");        attrs.put(X509Principal.E, "feedback-crypto@bouncycastle.org");        Vector                      ord = new Vector();        Vector                      values = new Vector();        ord.addElement(X509Principal.C);        ord.addElement(X509Principal.O);        ord.addElement(X509Principal.L);        ord.addElement(X509Principal.ST);        ord.addElement(X509Principal.E);        values.addElement("AU");        values.addElement("The Legion of the Bouncy Castle");        values.addElement("Melbourne");        values.addElement("Victoria");        values.addElement("feedback-crypto@bouncycastle.org");        //        // extensions        //        //        // create the certificate - version 3        //        X509V3CertificateGenerator certGen = new X509V3CertificateGenerator();        certGen.setSerialNumber(BigInteger.valueOf(1));        certGen.setIssuerDN(new X509Principal(attrs));        certGen.setNotBefore(new Date(System.currentTimeMillis() - 50000));        certGen.setNotAfter(new Date(System.currentTimeMillis() + 50000));        certGen.setSubjectDN(new X509Principal(attrs));        certGen.setPublicKey(pubKey);        certGen.setSignatureAlgorithm("MD5WithRSAEncryption");        try        {            X509Certificate cert = certGen.generateX509Certificate(privKey);            cert.checkValidity(new Date());            cert.verify(pubKey);            ByteArrayInputStream   sbIn = new ByteArrayInputStream(cert.getEncoded());            ASN1InputStream        sdIn = new ASN1InputStream(sbIn);            ByteArrayInputStream   bIn = new ByteArrayInputStream(cert.getEncoded());            CertificateFactory     fact = CertificateFactory.getInstance("X.509", "BC");            cert = (X509Certificate)fact.generateCertificate(bIn);            Certificate[]   certs = new Certificate[1];            certs[0] = cert;            PKCS7SignedData         pkcs7sd = new PKCS7SignedData(                                            privKey, certs, "MD5");            byte[]  bytes = Hex.decode("0102030405060708091011121314");            pkcs7sd.update(bytes, 0, bytes.length);            byte[]  p = pkcs7sd.getEncoded();            pkcs7sd = new PKCS7SignedData(p);            pkcs7sd.update(bytes, 0, bytes.length);            if (!pkcs7sd.verify())            {                return new SimpleTestResult(false, "PKCS7 verification failed");            }        }        catch (Exception e)        {            return new SimpleTestResult(false, getName() + ": error setting generating cert - " + e.toString());        }        //        // create the certificate - version 1        //        X509V1CertificateGenerator  certGen1 = new X509V1CertificateGenerator();        certGen1.setSerialNumber(BigInteger.valueOf(1));        certGen1.setIssuerDN(new X509Principal(ord, attrs));        certGen1.setNotBefore(new Date(System.currentTimeMillis() - 50000));        certGen1.setNotAfter(new Date(System.currentTimeMillis() + 50000));        certGen1.setSubjectDN(new X509Principal(ord, values));        certGen1.setPublicKey(pubKey);        certGen1.setSignatureAlgorithm("MD5WithRSAEncryption");        try        {            X509Certificate cert = certGen1.generateX509Certificate(privKey);            cert.checkValidity(new Date());            cert.verify(pubKey);            ByteArrayInputStream    bIn = new ByteArrayInputStream(cert.getEncoded());            CertificateFactory      fact = CertificateFactory.getInstance("X.509", "BC");            cert = (X509Certificate)fact.generateCertificate(bIn);            // System.out.println(cert);            if (!cert.getIssuerDN().equals(cert.getSubjectDN()))            {                return new SimpleTestResult(false, getName() + ": name comparison fails");            }        }        catch (Exception e)        {            return new SimpleTestResult(false, getName() + ": error setting generating cert - " + e.toString());        }        return new SimpleTestResult(true, getName() + ": Okay");    }    public TestResult perform()    {        TestResult  res = parseTest(sample1);        if (!res.isSuccessful())        {            return res;        }        res = parseTest(sample2);        if (!res.isSuccessful())        {            return res;        }        return checkCreation();    }    public static void main(        String[]    args)    {        Security.addProvider(new BouncyCastleProvider());        Test            test = new PKCS7SignedDataTest();        TestResult      result = test.perform();        System.out.println(result.toString());    }}

⌨️ 快捷键说明

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