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:ch.lamacrypt.Main.java

License:Open Source License

public static void main(String args[]) throws Exception {
    if (Settings.getMaxRAM() + 256 * (int) Math.pow(2, 20) < 6 * (int) Math.pow(2, 30)) {
        ErrorHandler.showError("your system doesn't have enough memory (min. 6GiB).");
    } else {// w  w  w .ja  v  a 2 s  .c  om
        // adding Bouncy Castle as provider
        Security.addProvider(new BouncyCastleProvider());

        // overriding the default TrustStore
        System.setProperty("javax.net.ssl.trustStore", "LamaCryptTrustStore");
        System.setProperty("javax.net.ssl.trustStorePassword", "LCTSPW");

        // try to remove restrictions on cryptographic key lengths
        removeCryptographyRestrictions();

        // getting the config file and checking if the TOS have been agreed to
        File config = new File("desktop-client.conf");
        if (config.exists()) {
            Scanner in = new Scanner(new FileReader(config));
            while (in.hasNext()) {
                String tmpStr = in.next();
                if (tmpStr.startsWith("scryptfactor")) {
                    int N = Integer.parseInt(tmpStr.substring(13, 15));
                    DefaultCipher.setScryptFactor(N);
                    Settings.setStartupScryptN(N);
                } else if (tmpStr.startsWith("agreedTOS")) {
                    Settings.setTOSAgreed(tmpStr.contains("yes"));
                }
            }
            in.close();
            Settings.setIsNew(false);
        } else {
            config.createNewFile();
            Settings.setIsNew(true);
        }

        if (Settings.isTOSAgreed()) {
            // starting GUI
            LoginForm.main(null);
        } else {
            TOSDisclaimer.main(null);
        }
    }
}

From source file:ch.thomasmueller.saltyfiles.transformer.Transformer.java

License:Open Source License

/**
 * Creates an new instance using the given password.
 * /*from  w  w  w. j a va 2s.c  o  m*/
 * @param pwd
 *            the password to be used
 * @param salt
 *            random byte array
 */
public Transformer(char[] aPassoword, byte[] someSalt) {

    password = aPassoword;
    salt = someSalt;
    Security.addProvider(new BouncyCastleProvider());

}

From source file:chat.menu.CryptMenu.java

License:Open Source License

public CryptMenu(final chat.Gui mainFrame) {
    super("Crypt");

    addProvider(new BouncyCastleProvider());
    this.mainFrame = mainFrame;

    secureChannel.setEnabled(false);//from   w  ww  .j a  v a  2  s  . c  o  m
    add(secureChannel);
    secureChannel.addActionListener(mainFrame);

    add(keyStorePassword);
    keyStorePassword.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            new PwdDialog(mainFrame);
        }

        class PwdDialog extends PasswordDialog {
            public PwdDialog(JFrame parent) {
                super(parent);
            }

            @Override
            public void doClose() {
                if (pwdField.getPassword().length > 0) {
                    State.password = pwdField.getPassword();
                    keyStorePassword.setEnabled(false);
                    generateKeyStore.setEnabled(true);
                    loadKeyStore.setEnabled(true);
                }
                super.doClose();
            }
        }
    });

    generateKeyStore.setEnabled(false);
    add(generateKeyStore);
    generateKeyStore.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try {
                System.out.println("Initializing the KeyPairGenerator...");
                KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC");
                kpg.initialize(asymmetricStrength, new SecureRandom());
                System.out.println("Generating the key pair...");
                KeyPair pair = kpg.genKeyPair();
                Map<String, Key> keyStore = new HashMap<String, Key>();
                keyStore.put("myPrivateKey", pair.getPrivate());
                keyStore.put("myPublicKey", pair.getPublic());

                saveKeyStore(keyStore);
            } catch (Exception exc) {
                exc.printStackTrace();
            }
        }
    });

    loadKeyStore.setEnabled(false);
    add(loadKeyStore);
    loadKeyStore.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try {

                Cipher cipher = CryptMenu.getBlockCiphers()[1];
                cipher.init(Cipher.DECRYPT_MODE, State.getKeyFromPassword());
                CipherInputStream cis = new CipherInputStream(new FileInputStream("jschat.keyStore"), cipher);

                ObjectInput in = new ObjectInputStream(cis);
                State.keyStore = (Map<String, Key>) in.readObject();
                in.close();
                privateKey = State.keyStore.get("myPrivateKey");
                exportPublicKey.setEnabled(true);
                importPublicKey.setEnabled(true);
                loadPublicKeyFromKS.setEnabled(true);
            } catch (Exception exc) {
                exc.printStackTrace();
            }
        }
    });

    loadPublicKeyFromKS.setEnabled(false);
    add(loadPublicKeyFromKS);
    loadPublicKeyFromKS.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            new SelKeyDialog(mainFrame, State.keyStore.keySet().toArray(new String[] {}));
        }

        class SelKeyDialog extends SelectKeyDialog {
            public SelKeyDialog(JFrame parent, String[] list) {
                super(parent, list);
            }

            @Override
            public void doClose() {
                String selectedItem = (String) jComboBox.getSelectedItem();
                if (selectedItem != null) {
                    publicKey = State.keyStore.get(selectedItem);
                    if (privateKey != null) {
                        mainFrame.localKeysLoaded();
                        secureChannel.setEnabled(true);
                    }
                    encryptPubFile.setEnabled(true);
                    decryptPubFile.setEnabled(true);
                }
                super.doClose();
            }
        }
    });

    exportPublicKey.setEnabled(false);
    add(exportPublicKey);
    exportPublicKey.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try {
                ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("public.key"));
                out.writeObject(State.keyStore.get("myPublicKey"));
                out.close();
            } catch (Exception exc) {
                exc.printStackTrace();
            }
        }
    });

    importPublicKey.setEnabled(false);
    add(importPublicKey);
    importPublicKey.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try {
                JFileChooser fc = new JFileChooser(System.getProperty("user.dir"));
                fc.setDialogTitle("Load Public Key");
                int returnValue = fc.showOpenDialog(mainFrame.getContentPane());
                if (returnValue == JFileChooser.APPROVE_OPTION) {
                    try {
                        ObjectInputStream in = new ObjectInputStream(new FileInputStream(fc.getSelectedFile()));
                        publicKey = (Key) in.readObject();
                        in.close();

                        State.keyStore.put(fc.getSelectedFile().getName(), publicKey);
                        saveKeyStore(State.keyStore);
                    } catch (Exception exc) {
                        exc.printStackTrace();
                    }
                }
            } catch (Exception exc) {
                exc.printStackTrace();
            }
        }
    });

    addSeparator();

    encryptPrivFile.setEnabled(false);
    add(encryptPrivFile);
    encryptPrivFile.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            enCodeIt("RSA", true, privateKey);
        }
    });

    decryptPrivFile.setEnabled(false);
    add(decryptPrivFile);
    decryptPrivFile.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            enCodeIt("RSA", false, privateKey);
        }
    });

    encryptPubFile.setEnabled(false);
    add(encryptPubFile);
    encryptPubFile.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            enCodeIt("RSA", true, publicKey);
        }
    });

    decryptPubFile.setEnabled(false);
    add(decryptPubFile);
    decryptPubFile.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            enCodeIt("RSA", false, publicKey);
        }
    });

    addSeparator();

    add(generateSKey);
    generateSKey.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            JFileChooser fc = new JFileChooser(System.getProperty("user.dir"));
            fc.setDialogTitle("Save symmetric key as");
            int returnValue = fc.showSaveDialog(mainFrame.getContentPane());
            if (returnValue == JFileChooser.APPROVE_OPTION) {
                try {
                    KeyGenerator generator = KeyGenerator.getInstance("AES", "BC");
                    generator.init(symmetricStrength, new SecureRandom());
                    symmetricKey = generator.generateKey();
                    FileOutputStream fos = new FileOutputStream(fc.getSelectedFile());
                    fos.write(symmetricKey.getEncoded());
                    fos.close();
                } catch (Exception exc) {
                    exc.printStackTrace();
                }
            }
        }
    });

    add(loadSymmetricKey);

    loadSymmetricKey.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            JFileChooser fc = new JFileChooser(System.getProperty("user.dir"));
            fc.setDialogTitle("Load Symmetric Key");
            int returnValue = fc.showOpenDialog(mainFrame.getContentPane());
            if (returnValue == JFileChooser.APPROVE_OPTION) {
                try {
                    FileInputStream fis = new FileInputStream(fc.getSelectedFile());
                    byte[] keyBytes = new byte[(int) fc.getSelectedFile().length()];
                    int offSet = 0;
                    int numRead;
                    while (offSet != keyBytes.length
                            && (numRead = fis.read(keyBytes, offSet, keyBytes.length - offSet)) != -1) {
                        offSet += numRead;
                        System.out.println("Read " + numRead);
                    }
                    fis.close();
                    System.out.println("Read in key");
                    SecretKeyFactory skf = SecretKeyFactory.getInstance("AES", "BC");
                    symmetricKey = skf.generateSecret(new SecretKeySpec(keyBytes, "AES"));
                    System.out.println("Converted to AESKey");
                    encryptSFile.setEnabled(true);
                    decryptSFile.setEnabled(true);
                } catch (Exception exc) {
                    exc.printStackTrace();
                }
            }
        }
    });

    encryptSFile.setEnabled(false);
    add(encryptSFile);
    encryptSFile.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            enCodeIt("AES/CBC/PKCS5Padding", true, symmetricKey, ivSpec);
            /*
                           JFileChooser fc = new JFileChooser(System.getProperty("user.dir"));
                           fc.setDialogTitle("Choose file to encrypt");
                           int returnValue = fc.showOpenDialog(mainFrame.getContentPane());
                           if (returnValue==JFileChooser.APPROVE_OPTION) {
                              try {
             Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding","BC");
             IvParameterSpec spec = new IvParameterSpec(iv);
             cipher.init(Cipher.ENCRYPT_MODE, symmetricKey, spec);
             FileInputStream fis = new FileInputStream(fc.getSelectedFile());
             FileOutputStream fos = new FileOutputStream(fc.getSelectedFile()+".enc");
             CipherOutputStream cos = new CipherOutputStream(fos, cipher);
             byte[] buf = new byte[bufSize];
             int numRead;
             while ((numRead=fis.read(buf))!=-1)
                cos.write(buf,0,numRead);
             fis.close();
             cos.close();
                              } catch (Exception exc) {
             exc.printStackTrace();
                              }
                           }
            */
        }
    });

    decryptSFile.setEnabled(false);
    add(decryptSFile);
    decryptSFile.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            enCodeIt("AES/CBC/PKCS5Padding", false, symmetricKey, ivSpec);
            /*
                           JFileChooser fc = new JFileChooser(System.getProperty("user.dir"));
                           fc.setDialogTitle("Choose file to decrypt");
                           int returnValue = fc.showOpenDialog(mainFrame.getContentPane());
                           if (returnValue==JFileChooser.APPROVE_OPTION) {
                              try {
             Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding","BC");
             IvParameterSpec spec = new IvParameterSpec(iv);
             cipher.init(Cipher.DECRYPT_MODE, symmetricKey, spec);
             FileInputStream fis = new FileInputStream(fc.getSelectedFile());
             FileOutputStream fos = new FileOutputStream(fc.getSelectedFile()+".dec");
             CipherOutputStream cos = new CipherOutputStream(fos, cipher);
             byte[] buf = new byte[bufSize];
             int numRead;
             while ((numRead=fis.read(buf))!=-1)
                cos.write(buf,0,numRead);
             fis.close();
             cos.close();
                              } catch (Exception exc) {
             exc.printStackTrace();
                              }
                           }
            */
        }
    });

    addSeparator();

    add(getSHA);
    getSHA.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            JFileChooser fc = new JFileChooser(System.getProperty("user.dir"));
            fc.setDialogTitle("Choose file");
            int returnValue = fc.showOpenDialog(mainFrame.getContentPane());
            if (returnValue == JFileChooser.APPROVE_OPTION) {
                try {
                    MessageDigest md = MessageDigest.getInstance("SHA-1", "BC");
                    FileInputStream fis = new FileInputStream(fc.getSelectedFile());
                    DigestInputStream dis = new DigestInputStream(fis, md);
                    byte[] buf = new byte[bufSize];
                    while (dis.read(buf) != -1)
                        ;
                    byte[] raw = md.digest();
                    fis.close();

                    new SelectDialog(mainFrame, "SHA-1", false, "SHA-1", fc.getSelectedFile(), "sha", raw);
                } catch (Exception exc) {
                    exc.printStackTrace();
                }
            }
        }
    });

    add(getMD5);
    getMD5.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            JFileChooser fc = new JFileChooser(System.getProperty("user.dir"));
            fc.setDialogTitle("Choose file");
            int returnValue = fc.showOpenDialog(mainFrame.getContentPane());
            if (returnValue == JFileChooser.APPROVE_OPTION) {
                try {
                    MessageDigest md = MessageDigest.getInstance("MD5", "BC");
                    FileInputStream fis = new FileInputStream(fc.getSelectedFile());
                    DigestInputStream dis = new DigestInputStream(fis, md);
                    byte[] buf = new byte[bufSize];
                    while (dis.read(buf) != -1)
                        ;
                    byte[] raw = md.digest();
                    fis.close();

                    new SelectDialog(mainFrame, "MD5", false, "MD5", fc.getSelectedFile(), "md5", raw);
                } catch (Exception exc) {
                    exc.printStackTrace();
                }
            }
        }
    });

    add(getBase64);
    getBase64.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            JFileChooser fc = new JFileChooser(System.getProperty("user.dir"));
            fc.setDialogTitle("Choose file");
            int returnValue = fc.showOpenDialog(mainFrame.getContentPane());
            if (returnValue == JFileChooser.APPROVE_OPTION) {
                try {
                    FileInputStream fis = new FileInputStream(fc.getSelectedFile());
                    OutputStreamWriter osw = new OutputStreamWriter(
                            new FileOutputStream(fc.getSelectedFile() + ".b64"), "UTF8");
                    BASE64Encoder enc = new BASE64Encoder();
                    String base64;
                    byte[] bufRead;
                    byte[] buf = new byte[bufSize];
                    int numRead;
                    while ((numRead = fis.read(buf)) != -1) {
                        bufRead = new byte[numRead];
                        System.arraycopy(buf, 0, bufRead, 0, numRead);
                        base64 = enc.encode(bufRead);
                        osw.write(base64);
                    }
                    fis.close();
                    osw.close();
                } catch (Exception exc) {
                    exc.printStackTrace();
                }
            }
        }
    });
}

From source file:chatapplication.genrateRSAkeys.java

public static void main(String args[]) throws NoSuchAlgorithmException, Exception {

    KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
    KeyFactory fact = KeyFactory.getInstance("RSA");
    kpg.initialize(2048);//from  w  w  w.j a  v  a2 s . c o m
    KeyPair kp = kpg.genKeyPair();
    PublicKey publicKey = kp.getPublic();
    PrivateKey privateKey = kp.getPrivate();

    byte[] data = publicKey.getEncoded();
    String d1 = new String(data);
    String dl = Arrays.toString(data);
    String message = "HI";
    // String encKey = new String(publicKey);
    // byte[] publicK = Base64.getDecoder().decode(data);
    //byte[] publicBytes = Base64.getDecoder().decode(convertedPublic);
    X509EncodedKeySpec keySpec = new X509EncodedKeySpec(data);
    KeyFactory keyFactory = KeyFactory.getInstance("RSA");
    PublicKey pubKey = keyFactory.generatePublic(keySpec);
    Provider bcProvider = new BouncyCastleProvider();
    byte encryptedMessage[] = RSAencrypt(message, pubKey);
    byte decryptedMessage[] = RSAdecrypt(encryptedMessage, privateKey);
    System.out.println("Message" + new String(decryptedMessage));
}

From source file:chatapplication.genrateRSAkeys.java

public static byte[] RSAencrypt(String plainText, PublicKey pKey) throws Exception {

    Provider bcProvider = new BouncyCastleProvider();
    Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding", bcProvider);

    cipher.init(Cipher.ENCRYPT_MODE, pKey);
    byte[] c = cipher.doFinal(plainText.getBytes("UTF-8"));
    return c;/*from  www .j ava  2 s.  c om*/
}

From source file:chatapplication.genrateRSAkeys.java

public static byte[] RSAdecrypt(byte[] res1, PrivateKey pk) throws NoSuchAlgorithmException,
        NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
    Provider bcProvider = new BouncyCastleProvider();
    Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding", bcProvider);
    cipher.init(Cipher.DECRYPT_MODE, pk);
    byte[] key = cipher.doFinal(res1);
    return key;/*from w  ww.  ja va 2 s. c  om*/

}

From source file:chatapplication.Securechat.java

public static byte[] RSAencrypt(String plainText, PublicKey pKey) throws Exception {

    Provider bcProvider = new BouncyCastleProvider();
    Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding", bcProvider);
    cipher.init(Cipher.ENCRYPT_MODE, pKey);
    byte[] c = cipher.doFinal(plainText.getBytes("UTF-8"));
    return c;/*from w  ww .  j  a  va 2s  .  c  om*/
}

From source file:chatapplication.Securechat.java

public static byte[] RSAdecrypt(byte[] res1, PrivateKey pk) throws NoSuchAlgorithmException,
        NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
    Provider bcProvider = new BouncyCastleProvider();
    final Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding", bcProvider);
    cipher.init(Cipher.DECRYPT_MODE, pk);
    byte[] key = cipher.doFinal(res1);
    return key;//  w ww  .j  av a 2 s .co  m

}

From source file:cliente.Signatures.java

static public boolean verifySignature(PublicKey pubKey, byte[] data, byte[] signature) {
    boolean res = false;
    try {//  w  w  w .j  a  v  a 2 s.c  o  m
        Security.addProvider(new BouncyCastleProvider());
        Signature sig = Signature.getInstance("SHA1withRSA", "BC");
        sig.initVerify(pubKey);
        sig.update(data);

        res = sig.verify(signature);
    } catch (Exception ex) {
        Logger.getLogger(DH_KeyAgreement.class.getName()).log(Level.SEVERE, null, ex);
    }

    return res;
}

From source file:cliente.Signatures.java

static public byte[] generatingSignature(PrivateKey priv, byte[] data) {
    byte[] realSig = null;

    try {//  w w  w .ja va  2s.  c  o m
        Security.addProvider(new BouncyCastleProvider());
        Signature dsa = Signature.getInstance("SHA1withRSA", "BC");
        dsa.initSign(priv);

        dsa.update(data);

        realSig = dsa.sign();

    } catch (Exception e) {
        System.err.println("Caught exception " + e.toString());
    }

    return realSig;
}