X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fkernel%2FPkiUtils.java;h=050b7d4d7b3cdcf123cee983452404e4f8b0c876;hb=277bb126a4b8523b93c2cd9abd345833a8387eba;hp=f36fc89f5710b29f323354540ae964a4494a33f5;hpb=e7934b53bd71a084dc069f6500f7a168a28efdaf;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/PkiUtils.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/PkiUtils.java index f36fc89f5..050b7d4d7 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/PkiUtils.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/PkiUtils.java @@ -15,7 +15,7 @@ import java.util.Date; import javax.security.auth.x500.X500Principal; -import org.argeo.ArgeoException; +import org.argeo.cms.CmsException; import org.bouncycastle.cert.X509v3CertificateBuilder; import org.bouncycastle.cert.jcajce.JcaX509CertificateConverter; import org.bouncycastle.cert.jcajce.JcaX509v3CertificateBuilder; @@ -35,10 +35,10 @@ class PkiUtils { } public static X509Certificate generateSelfSignedCertificate(KeyStore keyStore, X500Principal x500Principal, - char[] keyPassword) { + int keySize, char[] keyPassword) { try { KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", SECURITY_PROVIDER); - kpGen.initialize(1024, new SecureRandom()); + kpGen.initialize(keySize, new SecureRandom()); KeyPair pair = kpGen.generateKeyPair(); Date notBefore = new Date(System.currentTimeMillis() - 10000); Date notAfter = new Date(System.currentTimeMillis() + 24L * 3600 * 1000); @@ -55,7 +55,7 @@ class PkiUtils { keyStore.setKeyEntry(x500Principal.getName(), pair.getPrivate(), keyPassword, new Certificate[] { cert }); return cert; } catch (Exception e) { - throw new ArgeoException("Cannot generate self-signed certificate", e); + throw new CmsException("Cannot generate self-signed certificate", e); } } @@ -71,7 +71,7 @@ class PkiUtils { } return store; } catch (Exception e) { - throw new ArgeoException("Cannot load keystore " + keyStoreFile, e); + throw new CmsException("Cannot load keystore " + keyStoreFile, e); } } @@ -81,8 +81,79 @@ class PkiUtils { keyStore.store(fis, keyStorePassword); } } catch (Exception e) { - throw new ArgeoException("Cannot save keystore " + keyStoreFile, e); + throw new CmsException("Cannot save keystore " + keyStoreFile, e); } } + public static void main(String[] args) { + final String ALGORITHM = "RSA"; + final String provider = "BC"; + SecureRandom secureRandom = new SecureRandom(); + long begin = System.currentTimeMillis(); + for (int i = 512; i < 1024; i = i + 2) { + try { + KeyPairGenerator keyGen = KeyPairGenerator.getInstance(ALGORITHM,provider); + keyGen.initialize(i, secureRandom); + keyGen.generateKeyPair(); + } catch (Exception e) { + System.err.println(i + " : " + e.getMessage()); + } + } + System.out.println( (System.currentTimeMillis() - begin) + " ms"); + +// // String text = "a"; +// String text = "testtesttesttesttesttesttesttesttesttesttesttesttesttesttest"; +// try { +// System.out.println(text); +// PrivateKey privateKey; +// PublicKey publicKey; +// char[] password = "changeit".toCharArray(); +// String alias = "CN=test"; +// KeyStore keyStore = KeyStore.getInstance("pkcs12"); +// File p12file = new File("test.p12"); +// p12file.delete(); +// if (!p12file.exists()) { +// keyStore.load(null); +// generateSelfSignedCertificate(keyStore, new X500Principal(alias), 513, password); +// try (OutputStream out = new FileOutputStream(p12file)) { +// keyStore.store(out, password); +// } +// } +// try (InputStream in = new FileInputStream(p12file)) { +// keyStore.load(in, password); +// privateKey = (PrivateKey) keyStore.getKey(alias, password); +// publicKey = keyStore.getCertificateChain(alias)[0].getPublicKey(); +// } +// // KeyPair key; +// // final KeyPairGenerator keyGen = +// // KeyPairGenerator.getInstance(ALGORITHM); +// // keyGen.initialize(4096, new SecureRandom()); +// // long begin = System.currentTimeMillis(); +// // key = keyGen.generateKeyPair(); +// // System.out.println((System.currentTimeMillis() - begin) + " ms"); +// // keyStore.load(null); +// // keyStore.setKeyEntry("test", key.getPrivate(), password, null); +// // try(OutputStream out=new FileOutputStream(p12file)) { +// // keyStore.store(out, password); +// // } +// // privateKey = key.getPrivate(); +// // publicKey = key.getPublic(); +// +// Cipher encrypt = Cipher.getInstance(ALGORITHM); +// encrypt.init(Cipher.ENCRYPT_MODE, publicKey); +// byte[] encrypted = encrypt.doFinal(text.getBytes()); +// String encryptedBase64 = Base64.getEncoder().encodeToString(encrypted); +// System.out.println(encryptedBase64); +// byte[] encryptedFromBase64 = Base64.getDecoder().decode(encryptedBase64); +// +// Cipher decrypt = Cipher.getInstance(ALGORITHM); +// decrypt.init(Cipher.DECRYPT_MODE, privateKey); +// byte[] decrypted = decrypt.doFinal(encryptedFromBase64); +// System.out.println(new String(decrypted)); +// } catch (Exception e) { +// e.printStackTrace(); +// } + + } + }