Example usage for org.bouncycastle.util.io.pem PemReader PemReader

List of usage examples for org.bouncycastle.util.io.pem PemReader PemReader

Introduction

In this page you can find the example usage for org.bouncycastle.util.io.pem PemReader PemReader.

Prototype

public PemReader(Reader reader) 

Source Link

Usage

From source file:org.neo4j.bolt.security.ssl.Certificates.java

License:Open Source License

public PrivateKey loadPrivateKey(File privateKeyFile)
        throws IOException, NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException,
        InvalidKeyException, InvalidAlgorithmParameterException {
    try (PemReader r = new PemReader(new FileReader(privateKeyFile))) {
        PemObject pemObject = r.readPemObject();
        if (pemObject != null) {
            byte[] encodedKey = pemObject.getContent();
            KeySpec keySpec = new PKCS8EncodedKeySpec(encodedKey);
            try {
                return KeyFactory.getInstance("RSA").generatePrivate(keySpec);
            } catch (InvalidKeySpecException ignore) {
                try {
                    return KeyFactory.getInstance("DSA").generatePrivate(keySpec);
                } catch (InvalidKeySpecException ignore2) {
                    try {
                        return KeyFactory.getInstance("EC").generatePrivate(keySpec);
                    } catch (InvalidKeySpecException e) {
                        throw new InvalidKeySpecException("Neither RSA, DSA nor EC worked", e);
                    }//from   ww w.  java  2  s .  co  m
                }
            }
        }
    }

    // Ok, failed to read as PEM file, try and read it as a raw binary private key
    try (DataInputStream in = new DataInputStream(new FileInputStream(privateKeyFile))) {
        byte[] keyBytes = new byte[(int) privateKeyFile.length()];
        in.readFully(keyBytes);

        KeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);

        return KeyFactory.getInstance(DEFAULT_ENCRYPTION).generatePrivate(keySpec);
    }
}

From source file:org.opencps.pki.PdfSignerTest.java

License:Open Source License

public void testSign() throws IOException, OperatorCreationException, PKCSException, GeneralSecurityException,
        DocumentException {/*from w  ww.  ja va2 s  . co  m*/
    signer.setSignatureGraphic(signImagePath);
    byte[] hash = signer.computeHash();
    assertTrue(hash.length > 0);

    PemReader pemReader = new PemReader(new InputStreamReader(new FileInputStream(keyPath)));
    PemObject pemObject = pemReader.readPemObject();
    PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(pemObject.getContent());
    KeyFactory factory = KeyFactory.getInstance("RSA", "BC");
    PrivateKey privateKey = factory.generatePrivate(privKeySpec);
    pemReader.close();

    PrivateKeySignature signature = new PrivateKeySignature(privateKey, signer.getHashAlgorithm().toString(),
            "BC");

    byte[] extSignature = signature.sign(hash);
    assertTrue(signer.sign(extSignature));
}

From source file:org.opencps.pki.PdfVerifierTest.java

License:Open Source License

protected void setUp() throws IOException, OperatorCreationException, PKCSException, GeneralSecurityException {
    cf = CertificateFactory.getInstance("X.509");
    cert = (X509Certificate) cf.generateCertificate(new FileInputStream(new File(certPath)));
    signer = new PdfSigner(pdfPath, cert);
    verifier = new PdfVerifier();
    signer.setSignatureGraphic(signImagePath);
    signer.setHashAlgorithm(HashAlgorithm.SHA1);
    byte[] hash = signer.computeHash();

    Security.addProvider(new BouncyCastleProvider());
    PemReader pemReader = new PemReader(new InputStreamReader(new FileInputStream(keyPath)));
    PemObject pemObject = pemReader.readPemObject();
    PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(pemObject.getContent());
    KeyFactory factory = KeyFactory.getInstance("RSA", "BC");
    PrivateKey privateKey = factory.generatePrivate(privKeySpec);
    pemReader.close();//from  w  w w . ja  v  a  2 s .com

    PrivateKeySignature signature = new PrivateKeySignature(privateKey, signer.getHashAlgorithm().toString(),
            "BC");
    byte[] extSignature = signature.sign(hash);
    signer.sign(extSignature);
}

From source file:org.opencps.pki.Pkcs7GenerateSignatureContainerTest.java

License:Open Source License

public void testSignatureContainer() throws GeneralSecurityException, IOException {
    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    X509Certificate cert = (X509Certificate) cf.generateCertificate(new FileInputStream(new File(certPath)));
    PdfSigner signer = new PdfSigner(pdfPath, cert);

    PemReader pemReader = new PemReader(new InputStreamReader(new FileInputStream(keyPath)));
    PemObject pemObject = pemReader.readPemObject();
    PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(pemObject.getContent());
    KeyFactory factory = KeyFactory.getInstance("RSA", "BC");
    PrivateKey privateKey = factory.generatePrivate(privKeySpec);
    pemReader.close();//from  w  w w.jav  a  2 s .  co m
    PrivateKeySignature signature = new PrivateKeySignature(privateKey, signer.getHashAlgorithm().toString(),
            "BC");
    byte[] extSignature = signature.sign(signer.computeHash());

    PdfReader reader = new PdfReader(signer.getTempFilePath());
    AcroFields af = reader.getAcroFields();
    PdfDictionary v = af.getSignatureDictionary(signer.getSignatureFieldName());
    PdfArray b = v.getAsArray(PdfName.BYTERANGE);
    long[] gaps = b.asLongArray();

    RandomAccessSource readerSource = reader.getSafeFile().createSourceView();
    @SuppressWarnings("resource")
    InputStream rg = new RASInputStream(new RandomAccessSourceFactory().createRanged(readerSource, gaps));

    ExternalSignatureContainer container = new Pkcs7GenerateSignatureContainer(signer, extSignature);
    assertTrue(container.sign(rg).length > 0);
}

From source file:org.opencps.pki.Pkcs7GenerateSignatureContainerTest.java

License:Open Source License

public void testSignatureContainerWithInvalidSignature()
        throws IOException, SignatureException, GeneralSecurityException {
    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    X509Certificate cert = (X509Certificate) cf.generateCertificate(new FileInputStream(new File(certPath)));
    PdfSigner signer = new PdfSigner(pdfPath, cert);

    PemReader pemReader = new PemReader(new InputStreamReader(new FileInputStream(keyPath)));
    PemObject pemObject = pemReader.readPemObject();
    PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(pemObject.getContent());
    KeyFactory factory = KeyFactory.getInstance("RSA", "BC");
    PrivateKey privateKey = factory.generatePrivate(privKeySpec);
    pemReader.close();/*from w  ww.j  av a2s.  c  o  m*/
    PrivateKeySignature signature = new PrivateKeySignature(privateKey, signer.getHashAlgorithm().toString(),
            "BC");
    byte[] extSignature = signature.sign(signer.computeHash());
    ExternalSignatureContainer container = new Pkcs7GenerateSignatureContainer(signer, extSignature);
    try {
        container.sign(mock(InputStream.class));
        fail("Missing exception");
    } catch (Exception ex) {
        assertEquals("Signature is not correct", ex.getMessage());
    }
}

From source file:org.opendaylight.capwap.dtls.DtlsUtils.java

License:Open Source License

static PemObject loadPemResource(String resource) throws IOException {
    // InputStream s = TlsTestUtils.class.getResourceAsStream(resource);
    InputStream s = new FileInputStream(resource);
    PemReader p = new PemReader(new InputStreamReader(s));
    PemObject o = p.readPemObject();/*from   ww  w. j a v  a2  s  .co  m*/
    p.close();
    return o;
}

From source file:org.restcomm.media.rtp.crypto.TlsUtils.java

License:Open Source License

static PemObject loadPemResource(String resource) throws IOException {
    InputStream s = new FileInputStream(resource);
    try (PemReader p = new PemReader(new InputStreamReader(s))) {
        PemObject o = p.readPemObject();
        return o;
    }/*from   w  w w . j  av  a 2 s .  c o  m*/
}

From source file:org.soulwing.credo.service.pem.bc.BcPemObjectBuilderTest.java

License:Apache License

@Test
public void testConfigureAndBuild() throws Exception {
    byte[] content = { 0, 1, 2, 3 };
    BcPemObjectBuilder builder = new BcPemObjectBuilder();
    builder.setType("SOME TYPE");
    builder.setHeader("Some-Header", "Some-Value");
    builder.append(content);/*  w w  w. ja v  a 2 s .co  m*/
    PemObjectWrapper wrapper = builder.build();
    StringReader reader = new StringReader(wrapper.getEncoded());
    PemReader pemReader = new PemReader(reader);
    PemObject obj = pemReader.readPemObject();
    assertThat(pemReader.readPemObject(), is(nullValue()));
    pemReader.close();
    assertThat(obj.getHeaders().size(), is(equalTo(1)));
    PemHeader header = (PemHeader) obj.getHeaders().get(0);
    assertThat(header.getName(), is(equalTo("Some-Header")));
    assertThat(header.getValue(), is(equalTo("Some-Value")));
    assertThat(obj.getContent(), is(equalTo(content)));
}

From source file:org.soulwing.credo.service.pem.bc.BcPemObjectFactory.java

License:Apache License

/**
 * {@inheritDoc}//from   ww  w .j a  v  a 2s . co m
 */
@Override
public PemObjectWrapper newPemObject(String encoded) {
    try (PemReader reader = new PemReader(new StringReader(encoded))) {
        PemObject obj = reader.readPemObject();
        if (obj == null) {
            throw new IllegalArgumentException("not a PEM object");
        }
        return new BcPemObjectWrapper(obj);
    } catch (PEMException ex) {
        throw new IllegalArgumentException("illegal PEM object", ex);
    } catch (IOException ex) {
        throw new RuntimeException(ex);
    }
}

From source file:org.soulwing.credo.service.pem.bc.BcPemObjectWrapperTest.java

License:Apache License

@Test
public void testWriteContent() throws Exception {
    StringWriter writer = new StringWriter();
    wrapper.writeContent(writer);/*w  w  w.j av  a2s .c  om*/
    PemReader reader = new PemReader(new StringReader(writer.toString()));
    PemObject obj = reader.readPemObject();
    assertThat(obj, is(not(nullValue())));
    assertThat(reader.readPemObject(), is(nullValue()));
    reader.close();
    assertThat(obj.getType(), is(equalTo(type)));
    assertThat(obj.getContent(), is(equalTo(content)));
}