List of usage examples for org.bouncycastle.jce.provider BouncyCastleProvider BouncyCastleProvider
public BouncyCastleProvider()
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); } }