Example usage for org.bouncycastle.jce.provider BouncyCastleProvider BouncyCastleProvider

List of usage examples for org.bouncycastle.jce.provider BouncyCastleProvider BouncyCastleProvider

Introduction

In this page you can find the example usage for org.bouncycastle.jce.provider BouncyCastleProvider BouncyCastleProvider.

Prototype

public BouncyCastleProvider() 

Source Link

Document

Construct a new provider.

Usage

From source file:cz.muni.ics.remsig.impl.SignerImplIT.java

/**
 * Test of signPKCS7 method, of class SignerImpl.
 *//*from ww w .j a  v  a2  s .co  m*/
@Test
public void testSignPKCS7_4args() throws Exception {
    docInit();
    ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    SignerImpl signer = new SignerImpl(configuration);
    signer.setJdbcTemplate((JdbcTemplate) ac.getBean("jdbcTemplate"));
    Security.addProvider(new BouncyCastleProvider());
    String data = "data";
    String dataToSign = "ok";
    String profile = "ceskaposta_01";
    try {
        testDocument1 = signer.signPKCS7(null, andersonDefPass, data, profile);
        testDocument2 = signer.signPKCS7(anderson, null, data, profile);
        testDocument3 = signer.signPKCS7(anderson, andersonDefPass, null, profile);
        testDocument4 = signer.signPKCS7(anderson, andersonDefPass, data, null);
        testDocument5 = signer.signPKCS7(null, null, data, profile);
        testDocument6 = signer.signPKCS7(null, andersonDefPass, null, profile);
        testDocument7 = signer.signPKCS7(null, andersonDefPass, data, null);
        testDocument8 = signer.signPKCS7(anderson, null, null, profile);
        testDocument9 = signer.signPKCS7(anderson, null, data, null);
        testDocument10 = signer.signPKCS7(anderson, andersonDefPass, null, null);
        testDocument11 = signer.signPKCS7(null, null, null, profile);
        testDocument12 = signer.signPKCS7(null, null, data, null);
        testDocument13 = signer.signPKCS7(anderson, null, null, null);
        testDocument14 = signer.signPKCS7(null, null, null, null);

    } catch (NullPointerException e) {
        fail("Uncaught NullPointerException");
    }
    Document[] testSubjects = new Document[] { testDocument1, testDocument2, testDocument3, testDocument4,
            testDocument5, testDocument6, testDocument7, testDocument8, testDocument9, testDocument10,
            testDocument11, testDocument12, testDocument13, testDocument14 };

    if (0 != testManager.chceckDocuments(testSubjects, 0, 0)) {
        fail("some documents were signed with null data");
    }

    try {
        testDocument1 = signer.signPKCS7(anderson, bobaFetDefPass, dataToSign, profile);
        testDocument2 = signer.signPKCS7(bobaFet, bobaFetDefPass, dataToSign, profile);
        testDocument3 = signer.signPKCS7(cyril, andersonDefPass, dataToSign, profile);
        testDocument4 = signer.signPKCS7(bobaFet, bobaFetDefPass, dataToSign, "unknown");

        assertNull(testManager.extractElementFromXmlDoc(testDocument1, "pkcs7"));
        assertNull(testManager.extractElementFromXmlDoc(testDocument2, "pkcs7"));
        assertNull(testManager.extractElementFromXmlDoc(testDocument3, "pkcs7"));
        assertNull(testManager.extractElementFromXmlDoc(testDocument4, "pkcs7"));

    } catch (Exception e) {

    }
    try {
        testDocument1 = signer.signPKCS7(anderson, andersonDefPass, dataToSign, "cnb_01");
        testDocument2 = signer.signPKCS7(bobaFet, bobaFetDefPass, dataToSign, "ceskaposta_01");
        testDocument3 = signer.signPKCS7(anderson, cyrilDefPass, dataToSign, "cnb_01");

        String outputAnderson = testManager.extractElementFromXmlDoc(testDocument1, "pkcs7");
        String outputBobaFet = testManager.extractElementFromXmlDoc(testDocument2, "pkcs7");
        String outputCyril = testManager.extractElementFromXmlDoc(testDocument3, "pkcs7");

        assertEquals(defaultSignatureAnderson7, outputAnderson);
        assertEquals(defaultSignatureBobaFet7, outputBobaFet);
        assertEquals(defaultSignatureCyril7, outputCyril);

        assertThat(defaultSignatureAnderson7, not(outputCyril));
        assertThat(defaultSignatureAnderson7, not(outputBobaFet));
        assertThat(defaultSignatureCyril7, not(outputBobaFet));

    } catch (Exception e) {
        fail(e.getMessage());
    }

}

From source file:cz.muni.ics.remsig.impl.SignerImplIT.java

/**
 * Test of signPdf method, of class SignerImpl.
 *///from w w  w .  ja v  a 2 s . c o m
@Test
public void testSignPdf_4args() throws Exception {
    docInit();
    ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    SignerImpl signer = new SignerImpl(configuration);
    signer.setJdbcTemplate((JdbcTemplate) ac.getBean("jdbcTemplate"));
    Security.addProvider(new BouncyCastleProvider());

    signer.prepareWaterMark();
    String emptyFileName = "test/testFiles/empty.pdf";
    String testDataFileName = "test/testFiles/testdata.pdf";
    byte[] emptypdf = testManager.loadFileBytes(emptyFileName);
    byte[] testData = testManager.loadFileBytes(testDataFileName);
    byte[] notPdf = testManager.loadFileBytes("test/testFiles/other.pdf");

    try {
        testDocument1 = signer.signPdf(null, andersonDefPass, emptypdf, andersonCerId);
        testDocument2 = signer.signPdf(anderson, null, emptypdf, andersonCerId);
        testDocument3 = signer.signPdf(anderson, andersonDefPass, null, andersonCerId);
        testDocument4 = signer.signPdf(null, null, emptypdf, andersonCerId);
        testDocument5 = signer.signPdf(anderson, null, null, andersonCerId);
        testDocument6 = signer.signPdf(null, null, null, andersonCerId);
    } catch (NullPointerException e) {
        fail("uncaught nullpointerexception was thrown");

    }
    Document[] testSubjects = new Document[] { testDocument1, testDocument2, testDocument3, testDocument4,
            testDocument5, testDocument6 };

    if (0 != testManager.chceckDocuments(testSubjects, 0, 0)) {
        fail("some documents were signed with null data");
    }

    try {
        testDocument1 = signer.signPdf(anderson, bobaFetDefPass, emptypdf, andersonCerId);
        testDocument2 = signer.signPdf(anderson, andersonDefPass, emptypdf, bobaFetCerId);
        testDocument3 = signer.signPdf(bobaFet, andersonDefPass, emptypdf, andersonCerId);
        testDocument4 = signer.signPdf(anderson, bobaFetDefPass, emptypdf, bobaFetCerId);
        testDocument5 = signer.signPdf(anderson, andersonDefPass, notPdf, andersonCerId);
        assertNull(testManager.extractElementFromXmlDoc(testDocument1, "signature"));
        assertNull(testManager.extractElementFromXmlDoc(testDocument2, "signature"));
        assertNull(testManager.extractElementFromXmlDoc(testDocument3, "signature"));
        assertNull(testManager.extractElementFromXmlDoc(testDocument4, "signature"));
        assertNull(testManager.extractElementFromXmlDoc(testDocument5, "signature"));
    } catch (Exception e) {
    }

    testDocument1 = signer.signPdf(anderson, andersonDefPass, testData, andersonCerId);
    String signatureA = testManager.extractElementFromXmlDoc(testDocument1, "signature");

    testDocument2 = signer.signPdf(bobaFet, bobaFetDefPass, emptypdf, bobaFetCerId);
    String signatureB = testManager.extractElementFromXmlDoc(testDocument2, "signature");

    testDocument3 = signer.signPdf(cyril, cyrilDefPass, testData, cyrilCerId);
    String signatureC = testManager.extractElementFromXmlDoc(testDocument2, "signature");

    if (signatureA == null) {
        fail("Signature wasn't created with anderson cer on " + testDataFileName);
    }
    if (signatureB == null) {
        fail("Signature wasn't created with bobaFet cer on " + emptyFileName);
    }
    if (signatureC == null) {
        fail("Signature wasn't created with Cyril cer on " + testDataFileName);
    }

}

From source file:cz.muni.ics.remsig.impl.SignerImplIT.java

/**
 * Test of signPdf method, of class SignerImpl.
 *//*from www. j  ava  2s  .co  m*/
@Test
public void testSignPdf_3args() throws Exception {
    docInit();
    ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    SignerImpl signer = new SignerImpl(configuration);
    signer.setJdbcTemplate((JdbcTemplate) ac.getBean("jdbcTemplate"));
    Security.addProvider(new BouncyCastleProvider());

    signer.prepareWaterMark();

    String emptyFileName = "test/testFiles/empty.pdf";
    String testDataFileName = "test/testFiles/testdata.pdf";
    byte[] emptypdf = testManager.loadFileBytes("test/testFiles/empty.pdf");
    byte[] testData = testManager.loadFileBytes("test/testFiles/testdata.pdf");
    byte[] notPdf = testManager.loadFileBytes("test/testFiles/other.pdf");

    try {
        testDocument1 = signer.signPdf(null, andersonDefPass, emptypdf);
        testDocument2 = signer.signPdf(anderson, null, emptypdf);
        testDocument3 = signer.signPdf(anderson, andersonDefPass, null);
        testDocument4 = signer.signPdf(null, null, emptypdf);
        testDocument5 = signer.signPdf(anderson, null, null);
        testDocument6 = signer.signPdf(null, andersonDefPass, null);
        testDocument7 = signer.signPdf(null, null, null);

    } catch (NullPointerException e) {
        fail("Uncaught nullpointerException");
    }
    Document[] testSubjects = new Document[] { testDocument1, testDocument2, testDocument3, testDocument4,
            testDocument5, testDocument6, testDocument7 };
    if (0 != testManager.chceckDocuments(testSubjects, 0, 0)) {
        fail("some documents were signed with null data");
    }

    try {
        docInit();
        testDocument1 = signer.signPdf(cyril, andersonDefPass, testData);
        testDocument2 = signer.signPdf(anderson, bobaFetDefPass, testData);
        testDocument3 = signer.signPdf(anderson, andersonDefPass, notPdf);
        testDocument4 = signer.signPdf(anderson, bobaFetDefPass, notPdf);
        assertNull(testManager.extractElementFromXmlDoc(testDocument1, "signature"));
        assertNull(testManager.extractElementFromXmlDoc(testDocument2, "signature"));
        assertNull(testManager.extractElementFromXmlDoc(testDocument3, "signature"));
        assertNull(testManager.extractElementFromXmlDoc(testDocument4, "signature"));

    } catch (Exception e) {
    }
    testDocument1 = signer.signPdf(anderson, andersonDefPass, testData);
    String signatureA = testManager.extractElementFromXmlDoc(testDocument1, "signature");

    testDocument2 = signer.signPdf(bobaFet, bobaFetDefPass, emptypdf);
    String signatureB = testManager.extractElementFromXmlDoc(testDocument2, "signature");

    testDocument3 = signer.signPdf(cyril, cyrilDefPass, testData);
    String signatureC = testManager.extractElementFromXmlDoc(testDocument2, "signature");

    if (signatureA == null) {
        fail("Signature wasn't created with anderson cer on " + testDataFileName);
    }
    if (signatureB == null) {
        fail("Signature wasn't created with bobaFet cer on " + emptyFileName);
    }
    if (signatureC == null) {
        fail("Signature wasn't created with Cyril cer on " + testDataFileName);
    }

}

From source file:cz.muni.ics.remsig.impl.SignerImplIT.java

/**
 * Test of createSignature method, of class SignerImpl.
 *//*  w ww .  j a v  a  2 s .  co  m*/
@Test
public void testCreateSignature() throws Exception {
    docInit();
    ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    SignerImpl signer = new SignerImpl(configuration);
    signer.setJdbcTemplate((JdbcTemplate) ac.getBean("jdbcTemplate"));
    Security.addProvider(new BouncyCastleProvider());

    PrivateKey privateKey = testManager.loadPrivateKey("test/testFiles/private_key.der");

    try {
        byte[] sig1 = signer.createSignature(privateKey, null);
        byte[] sig2 = signer.createSignature(null, "something");
        byte[] sig3 = signer.createSignature(null, null);
        if ((sig1 != sig2) != (sig3 != null)) {
            fail("values with null passed");
        }
    } catch (NullPointerException e) {
        fail("Uncaught NullPointerException was thrown");
    }

    byte[] a = signer.createSignature(privateKey, "abcde");
    byte[] b = signer.createSignature(privateKey, "abcde");
    if (a == null || b == null) {
        fail("signature wasnt created");
    }

}

From source file:cz.muni.ics.remsig.impl.TestManager.java

/**
 * Setting up database for first use it is expected to have database in this 
 * format 2 different p12 certificates are necessary 
 * @throws RemSigException//from w  ww. j  a v a  2s .com
 * @throws Exception 
 */
public void generateXmlForSetUp() throws RemSigException, Exception {
    ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    manager = new CertificateManagerImpl(configuration);
    manager.setJdbcTemplate((JdbcTemplate) ac.getBean("jdbcTemplate"));
    Security.addProvider(new BouncyCastleProvider());
    databaseTester.setSetUpOperation(DatabaseOperation.DELETE_ALL);
    databaseTester.onSetup();

    manager.generateRequest(anderson, andersonDefPass);
    manager.generateRequest(bobaFet, bobaFetDefPass);
    manager.generateRequest(cyril, cyrilDefPass);
    manager.generateRequest(daryl, darylDefPass);
    manager.generateRequest(eva, evaDefPass);
    manager.generateRequest(frank, frankDefPass);
    manager.generateRequest(gregor, gregorDefPass);
    manager.generateRequest(helena, helenaDefPass);
    manager.generateRequest(igor, igorDefPass);

    String p12Certificate1 = loadPKCS12("test/testFiles/sub1-cert.p12");
    String p12Certificate2 = loadPKCS12("test/testFiles/sub2-cert.p12");
    String p12Certificate3 = loadPKCS12("test/testFiles/sub3-cert.p12");

    String p12passToCer1 = "123456";
    String p12passToCer2 = "123456";
    String p12passToCer3 = "123456";

    manager.importPKCS12(anderson, p12Certificate1, andersonDefPass, p12passToCer1);
    manager.importPKCS12(bobaFet, p12Certificate2, bobaFetDefPass, p12passToCer2);
    manager.importPKCS12(cyril, p12Certificate1, cyrilDefPass, p12passToCer1);

    try {
        exportsDatabaseIntoXml("NewInitDatabase.xml");
    } catch (Exception ex) {
    }

}

From source file:czlab.twisty.SSLTrustMgrFactory.java

License:Open Source License

public static void main(String[] args) {
    try {//w w w.ja v  a 2 s  . c  o m
        Security.addProvider(new BouncyCastleProvider());
        KeyStore s = KeyStore.getInstance("PKCS12", "BC");
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        s.load(null, null);
        try (InputStream inp = new FileInputStream("servercert.pem")) {
            CertificateFactory fac = CertificateFactory.getInstance("X.509");
            Object cp = fac.generateCertificates(inp);
            Object obj = fac.getCertPathEncodings().next();

            //        s.setCertificateEntry("aaa", c);
            //        s.store(baos, "sesame".toCharArray());
            //        //Object e= s.aliases();
            System.out.println(s.toString());
        }
        byte[] out = baos.toByteArray();
        ByteArrayInputStream inp = new ByteArrayInputStream(out);
        s = KeyStore.getInstance("PKCS12", "BC");
        s.load(inp, "sesame".toCharArray());
        Certificate c = s.getCertificate("aaa");
        System.out.println(c.toString());
        out = null;
    } catch (Throwable t) {
        t.printStackTrace();
    }
}

From source file:dam.asimetrico.Cert.java

public static void main(String[] args) {

    try {//from   w  ww .  j a  va2  s  . com
        // Anadir provider JCE (provider por defecto no soporta RSA)
        Security.addProvider(new BouncyCastleProvider()); // Cargar el provider BC
        CertAndKeyGen certGen = new CertAndKeyGen("RSA", "SHA256WithRSA", null);
        // generate it with 2048 bits
        certGen.generate(2048);
        // prepare the validity of the certificate
        long validSecs = (long) 365 * 24 * 60 * 60; // valid for one year
        // add the certificate information, currently only valid for one year.

        X509Certificate cert = certGen.getSelfCertificate(
                // enter your details according to your application
                new X500Name("CN=Pedro Salazar,O=My Organisation,L=My City,C=DE"), validSecs);

        PrivateKey pk = certGen.getPrivateKey();
        PublicKey publicKey = certGen.getPublicKeyAnyway();
        System.out.println(cert.getIssuerX500Principal());

        String dn = cert.getSubjectX500Principal().getName();
        LdapName ldapDN = new LdapName(dn);
        for (Rdn rdn : ldapDN.getRdns()) {
            if (rdn.getType().equals("CN")) {
                System.out.println(rdn.getValue());
            }
        }

        //KeyPairGenerator generadorRSA = KeyPairGenerator.getInstance("RSA", "BC"); // Hace uso del provider BC
        //generadorRSA.initialize(1024);
        KeyPair clavesRSA = null;
        PrivateKey clavePrivada = null;
        PublicKey clavePublica = null;

        KeyStore ks = KeyStore.getInstance("PKCS12", "BC");
        char[] password = "abc".toCharArray();
        ks.load(null, null);
        ks.setCertificateEntry("publica", cert);
        ks.setKeyEntry("privada", pk, null, new Certificate[] { cert });
        FileOutputStream fos = new FileOutputStream("keystore.pfx");
        ks.store(fos, password);
        fos.close();

        //leer fichero
        KeyStore ksLoad = KeyStore.getInstance("PKCS12", "BC");
        ksLoad.load(new FileInputStream("keystore.pfx"), password);

        X509Certificate certLoad = (X509Certificate) ksLoad.getCertificate("publica");
        KeyStore.PasswordProtection pt = new KeyStore.PasswordProtection(password);
        PrivateKeyEntry privateKeyEntry = (PrivateKeyEntry) ksLoad.getEntry("privada", pt);
        RSAPrivateKey keyLoad = (RSAPrivateKey) privateKeyEntry.getPrivateKey();

        System.out.println(cert.getIssuerX500Principal());
        System.out.println(cert.getSubjectX500Principal());
        //certLoad.verify(clavePublica);

        dn = certLoad.getSubjectX500Principal().getName();
        ldapDN = new LdapName(dn);
        for (Rdn rdn : ldapDN.getRdns()) {
            if (rdn.getType().equals("CN")) {
                System.out.println(rdn.getValue());
            }
        }

        clavesRSA = new KeyPair(certLoad.getPublicKey(), keyLoad);

        Cipher cifrador = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");
        cifrador.init(Cipher.ENCRYPT_MODE, clavesRSA.getPrivate());
        cifrador.doFinal("hola".getBytes());

        Signature sign = Signature.getInstance("SHA256WithRSA");

        sign.initSign(clavesRSA.getPrivate());

        MessageDigest hash = MessageDigest.getInstance("SHA512");

        sign.update(hash.digest("hola".getBytes()));
        byte[] firma = sign.sign();

        sign.initVerify(certLoad.getPublicKey());
        sign.update(hash.digest("hola".getBytes()));
        System.out.println(sign.verify(firma));

        try {
            CertificateFactory cf = CertificateFactory.getInstance("X.509");
            Certificate cert2 = cf.generateCertificate(new ByteArrayInputStream(certLoad.getEncoded()));

            System.out.println(cert2);
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        KeyStore ksMX = KeyStore.getInstance("WINDOWS-MY", "SunMSCAPI");
        ksLoad.load(null, null);

    } catch (Exception ex) {
        Logger.getLogger(Cert.class.getName()).log(Level.SEVERE, null, ex);
    }

}

From source file:dam.asimetrico.CifrarRSAFicheros.java

public static void main(String[] args) throws FileNotFoundException {

    String nombre = "albertoastudillo";
    try {//from w ww.ja  v a 2 s.  c o m
        // Anadir provider JCE (provider por defecto no soporta RSA)
        Security.addProvider(new BouncyCastleProvider()); // Cargar el provider BC
        //Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
        Cipher cifrador = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");

        // Crear KeyFactory (depende del provider) usado para las transformaciones de claves*/
        KeyFactory keyFactoryRSA = KeyFactory.getInstance("RSA", "BC"); // Hace uso del provider BC
        //*** 4 Recuperar clave PUBLICA del fichero */
        // 4.1 Leer datos binarios x809
        byte[] bufferPub = new byte[5000];
        FileInputStream in = new FileInputStream(nombre + ".publica");
        DataInputStream d = new DataInputStream(in);

        int charsPub = in.read(bufferPub, 0, 5000);
        in.close();

        byte[] bufferPub2 = new byte[charsPub];
        System.arraycopy(bufferPub, 0, bufferPub2, 0, charsPub);

        // 4.2 Recuperar clave publica desde datos codificados en formato X509
        X509EncodedKeySpec clavePublicaSpec = new X509EncodedKeySpec(bufferPub2);
        PublicKey clavePublica2 = keyFactoryRSA.generatePublic(clavePublicaSpec);

        // PASO 3a: Poner cifrador en modo CIFRADO
        cifrador.init(Cipher.ENCRYPT_MODE, clavePublica2); // Cifra con la clave publica

        System.out.println("3a. Cifrar con clave publica");

        String sinCifrar = "123456";

        System.out.println(sinCifrar.getBytes("UTF-8").length);

        byte[] bufferCifrado = null;
        byte[] bufferCode64 = null;
        byte[] buffer = sinCifrar.getBytes("UTF-8");
        System.out.println("TEXTO CIFRADO" + buffer.length);

        bufferCifrado = cifrador.doFinal(buffer);

        System.out.println("TEXTO CIFRADO" + bufferCifrado.length);
        mostrarBytes(bufferCifrado);
        bufferCode64 = Base64.encodeBase64(bufferCifrado);
        System.out.println("\n------------CODE 64 --------- ");
        mostrarBytes(bufferCode64);

        // PASO 3b: Poner cifrador en modo DESCIFRADO
        // 2 Recuperar clave Privada del fichero */
        // 2.1 Leer datos binarios PKCS8
        byte[] bufferPriv = new byte[5000];
        in = new FileInputStream(nombre + ".privada");
        int chars = in.read(bufferPriv, 0, 5000);
        in.close();

        byte[] bufferPriv2 = new byte[chars];
        System.arraycopy(bufferPriv, 0, bufferPriv2, 0, chars);

        // 2.2 Recuperar clave privada desde datos codificados en formato PKCS8
        PKCS8EncodedKeySpec clavePrivadaSpec = new PKCS8EncodedKeySpec(bufferPriv2);

        PrivateKey clavePrivada2 = keyFactoryRSA.generatePrivate(clavePrivadaSpec);

        cifrador.init(Cipher.DECRYPT_MODE, clavePrivada2); // Descrifra con la clave privada

        System.out.println("3b. Descifrar con clave privada");
        byte[] bufferPlano2 = cifrador.doFinal(bufferCifrado);

        System.out.println("TEXTO DESCIFRADO");
        mostrarBytes(bufferPlano2);
        System.out.println("TEXTO DESCIFRADO despues de codificar");
        mostrarBytes(cifrador.doFinal(Base64.decodeBase64(bufferCode64)));

        System.out.println("\n-------------------------------");
    } catch (NoSuchAlgorithmException ex) {
        Logger.getLogger(CifrarRSAFicheros.class.getName()).log(Level.SEVERE, null, ex);
    } catch (NoSuchPaddingException ex) {
        Logger.getLogger(CifrarRSAFicheros.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(CifrarRSAFicheros.class.getName()).log(Level.SEVERE, null, ex);
    } catch (InvalidKeyException ex) {
        Logger.getLogger(CifrarRSAFicheros.class.getName()).log(Level.SEVERE, null, ex);
    } catch (InvalidKeySpecException ex) {
        Logger.getLogger(CifrarRSAFicheros.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IllegalBlockSizeException ex) {
        Logger.getLogger(CifrarRSAFicheros.class.getName()).log(Level.SEVERE, null, ex);
    } catch (BadPaddingException ex) {
        Logger.getLogger(CifrarRSAFicheros.class.getName()).log(Level.SEVERE, null, ex);
    } catch (NoSuchProviderException ex) {
        Logger.getLogger(CifrarRSAFicheros.class.getName()).log(Level.SEVERE, null, ex);
    }
}

From source file:dam.asimetrico.ClienteWeb.java

public static void main(String[] args) {
    CloseableHttpClient httpclient;//from  ww  w .  j  a v a2s .co m
    httpclient = HttpClients.createDefault();
    //pedir clave publica
    try {
        HttpPost httpPost = new HttpPost("http://localhost:8080/encriptacionServidor/rsa");
        List<NameValuePair> nvps = new ArrayList<NameValuePair>();

        nvps.add(new BasicNameValuePair("op", "PUBLICA"));
        httpPost.setEntity(new UrlEncodedFormEntity(nvps));
        CloseableHttpResponse response2 = httpclient.execute(httpPost);
        HttpEntity entity = response2.getEntity();

        String base64Publica = EntityUtils.toString(entity, "UTF-8");

        // Anadir provider JCE (provider por defecto no soporta RSA)
        Security.addProvider(new BouncyCastleProvider()); // Cargar el provider BC
        //Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
        Cipher cifrador = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");

        // Crear KeyFactory (depende del provider) usado para las transformaciones de claves*/
        KeyFactory keyFactoryRSA = KeyFactory.getInstance("RSA", "BC"); // Hace uso del provider BC

        // 4.2 Recuperar clave publica desde datos codificados en formato X509
        X509EncodedKeySpec clavePublicaSpec = new X509EncodedKeySpec(Base64.decode(base64Publica));
        PublicKey clavePublica2 = keyFactoryRSA.generatePublic(clavePublicaSpec);

        //descifrar mensaje
        httpPost = new HttpPost("http://localhost:8080/encriptacionServidor/rsa");
        nvps = new ArrayList<NameValuePair>();

        nvps.add(new BasicNameValuePair("op", "CIFRADO"));
        httpPost.setEntity(new UrlEncodedFormEntity(nvps));
        response2 = httpclient.execute(httpPost);
        entity = response2.getEntity();

        base64Publica = EntityUtils.toString(entity, "UTF-8");

        cifrador.init(Cipher.DECRYPT_MODE, clavePublica2); // Cifra con la clave publica

        System.out.println(new String(cifrador.doFinal(Base64.decode(base64Publica))));

    } catch (Exception ex) {
        Logger.getLogger(ClienteWeb.class.getName()).log(Level.SEVERE, null, ex);
    }

}

From source file:dam.asimetrico.ClienteWebCert.java

public static void main(String[] args) {
    CloseableHttpClient httpclient;/*from  w  ww .j a v a 2 s.  com*/
    httpclient = HttpClients.createDefault();
    //pedir clave publica
    try {
        HttpPost httpPost = new HttpPost("http://localhost:8080/encriptacionServidor/pfx");
        List<NameValuePair> nvps = new ArrayList<NameValuePair>();

        nvps.add(new BasicNameValuePair("op", "NUEVO"));
        httpPost.setEntity(new UrlEncodedFormEntity(nvps));
        CloseableHttpResponse response2 = httpclient.execute(httpPost);
        HttpEntity entity = response2.getEntity();

        String base64Publica = EntityUtils.toString(entity, "UTF-8");

        Security.addProvider(new BouncyCastleProvider()); // Cargar el provider BC
        char[] password = "abc".toCharArray();
        ByteArrayInputStream input = new ByteArrayInputStream(Base64.decode(base64Publica));
        KeyStore ksLoad = KeyStore.getInstance("PKCS12", "BC");
        ksLoad.load(input, password);

        X509Certificate certLoad = (X509Certificate) ksLoad.getCertificate("publica");
        KeyStore.PasswordProtection pt = new KeyStore.PasswordProtection(password);
        KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry) ksLoad.getEntry("privada", pt);
        RSAPrivateKey keyLoad = (RSAPrivateKey) privateKeyEntry.getPrivateKey();

        System.out.println(certLoad.getIssuerX500Principal());

        //descifrar mensaje
        httpPost = new HttpPost("http://localhost:8080/encriptacionServidor/pfx");
        nvps = new ArrayList<NameValuePair>();

        nvps.add(new BasicNameValuePair("op", "MANDAR"));
        //mandar certificado
        nvps.add(new BasicNameValuePair("cert", Base64.encode(certLoad.getEncoded())));

        //mandar texto
        nvps.add(new BasicNameValuePair("texto", "firmado"));

        //mandar firma
        Signature sign = Signature.getInstance("SHA256WithRSA");
        sign.initSign(keyLoad);
        sign.update("firmado".getBytes());
        byte[] firma = sign.sign();
        nvps.add(new BasicNameValuePair("firma", Base64.encode(firma)));

        httpPost.setEntity(new UrlEncodedFormEntity(nvps));
        response2 = httpclient.execute(httpPost);
        entity = response2.getEntity();

    } catch (Exception ex) {
        Logger.getLogger(ClienteWebCert.class.getName()).log(Level.SEVERE, null, ex);
    }

}