Search in sources :

Example 56 with CipherParameters

use of org.bouncycastle.crypto.CipherParameters in project openremote by openremote.

the class SecureUtils method calculateCMAC.

public static byte[] calculateCMAC(final byte[] data, final byte[] key) {
    final byte[] cmac = new byte[16];
    CipherParameters cipherParameters = new KeyParameter(key);
    BlockCipher blockCipher = new AESEngine();
    CMac mac = new CMac(blockCipher);
    mac.init(cipherParameters);
    mac.update(data, 0, data.length);
    mac.doFinal(cmac, 0);
    return cmac;
}
Also used : CipherParameters(org.bouncycastle.crypto.CipherParameters) AESEngine(org.bouncycastle.crypto.engines.AESEngine) CMac(org.bouncycastle.crypto.macs.CMac) BlockCipher(org.bouncycastle.crypto.BlockCipher) CCMBlockCipher(org.bouncycastle.crypto.modes.CCMBlockCipher) KeyParameter(org.bouncycastle.crypto.params.KeyParameter)

Example 57 with CipherParameters

use of org.bouncycastle.crypto.CipherParameters in project openremote by openremote.

the class SecureUtils method encryptWithAES.

public static byte[] encryptWithAES(final byte[] data, final byte[] key) {
    final byte[] encrypted = new byte[data.length];
    final CipherParameters cipherParameters = new KeyParameter(key);
    final AESLightEngine engine = new AESLightEngine();
    engine.init(true, cipherParameters);
    engine.processBlock(data, 0, encrypted, 0);
    return encrypted;
}
Also used : CipherParameters(org.bouncycastle.crypto.CipherParameters) KeyParameter(org.bouncycastle.crypto.params.KeyParameter) AESLightEngine(org.bouncycastle.crypto.engines.AESLightEngine)

Example 58 with CipherParameters

use of org.bouncycastle.crypto.CipherParameters in project elastic-core-maven by OrdinaryDude.

the class Crypto method aesGCMDecrypt.

public static byte[] aesGCMDecrypt(byte[] ivCiphertext, byte[] key) {
    try {
        if (ivCiphertext.length < 16) {
            throw new InvalidCipherTextException("invalid ivCiphertext length");
        }
        byte[] iv = Arrays.copyOfRange(ivCiphertext, 0, 16);
        byte[] ciphertext = Arrays.copyOfRange(ivCiphertext, 16, ivCiphertext.length);
        GCMBlockCipher aes = new GCMBlockCipher(new AESEngine());
        CipherParameters ivAndKey = new ParametersWithIV(new KeyParameter(key), iv);
        aes.init(false, ivAndKey);
        byte[] output = new byte[aes.getOutputSize(ciphertext.length)];
        int plaintextLength = aes.processBytes(ciphertext, 0, ciphertext.length, output, 0);
        plaintextLength += aes.doFinal(output, plaintextLength);
        byte[] result = new byte[plaintextLength];
        System.arraycopy(output, 0, result, 0, result.length);
        return result;
    } catch (InvalidCipherTextException e) {
        throw new RuntimeException(e.getMessage(), e);
    }
}
Also used : CipherParameters(org.bouncycastle.crypto.CipherParameters) ParametersWithIV(org.bouncycastle.crypto.params.ParametersWithIV) InvalidCipherTextException(org.bouncycastle.crypto.InvalidCipherTextException) AESEngine(org.bouncycastle.crypto.engines.AESEngine) KeyParameter(org.bouncycastle.crypto.params.KeyParameter) GCMBlockCipher(org.bouncycastle.crypto.modes.GCMBlockCipher)

Example 59 with CipherParameters

use of org.bouncycastle.crypto.CipherParameters in project elastic-core-maven by OrdinaryDude.

the class Crypto method aesEncrypt.

public static byte[] aesEncrypt(byte[] plaintext, byte[] key) {
    try {
        byte[] iv = new byte[16];
        secureRandom.get().nextBytes(iv);
        PaddedBufferedBlockCipher aes = new PaddedBufferedBlockCipher(new CBCBlockCipher(new AESEngine()));
        CipherParameters ivAndKey = new ParametersWithIV(new KeyParameter(key), iv);
        aes.init(true, ivAndKey);
        byte[] output = new byte[aes.getOutputSize(plaintext.length)];
        int ciphertextLength = aes.processBytes(plaintext, 0, plaintext.length, output, 0);
        ciphertextLength += aes.doFinal(output, ciphertextLength);
        byte[] result = new byte[iv.length + ciphertextLength];
        System.arraycopy(iv, 0, result, 0, iv.length);
        System.arraycopy(output, 0, result, iv.length, ciphertextLength);
        return result;
    } catch (InvalidCipherTextException e) {
        throw new RuntimeException(e.getMessage(), e);
    }
}
Also used : CipherParameters(org.bouncycastle.crypto.CipherParameters) ParametersWithIV(org.bouncycastle.crypto.params.ParametersWithIV) PaddedBufferedBlockCipher(org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher) AESEngine(org.bouncycastle.crypto.engines.AESEngine) InvalidCipherTextException(org.bouncycastle.crypto.InvalidCipherTextException) KeyParameter(org.bouncycastle.crypto.params.KeyParameter) CBCBlockCipher(org.bouncycastle.crypto.modes.CBCBlockCipher)

Example 60 with CipherParameters

use of org.bouncycastle.crypto.CipherParameters in project elastic-core-maven by OrdinaryDude.

the class Crypto method aesGCMEncrypt.

public static byte[] aesGCMEncrypt(byte[] plaintext, byte[] key) {
    try {
        byte[] iv = new byte[16];
        secureRandom.get().nextBytes(iv);
        GCMBlockCipher aes = new GCMBlockCipher(new AESEngine());
        CipherParameters ivAndKey = new ParametersWithIV(new KeyParameter(key), iv);
        aes.init(true, ivAndKey);
        byte[] output = new byte[aes.getOutputSize(plaintext.length)];
        int ciphertextLength = aes.processBytes(plaintext, 0, plaintext.length, output, 0);
        ciphertextLength += aes.doFinal(output, ciphertextLength);
        byte[] result = new byte[iv.length + ciphertextLength];
        System.arraycopy(iv, 0, result, 0, iv.length);
        System.arraycopy(output, 0, result, iv.length, ciphertextLength);
        return result;
    } catch (InvalidCipherTextException e) {
        throw new RuntimeException(e.getMessage(), e);
    }
}
Also used : CipherParameters(org.bouncycastle.crypto.CipherParameters) ParametersWithIV(org.bouncycastle.crypto.params.ParametersWithIV) AESEngine(org.bouncycastle.crypto.engines.AESEngine) InvalidCipherTextException(org.bouncycastle.crypto.InvalidCipherTextException) KeyParameter(org.bouncycastle.crypto.params.KeyParameter) GCMBlockCipher(org.bouncycastle.crypto.modes.GCMBlockCipher)

Aggregations

CipherParameters (org.bouncycastle.crypto.CipherParameters)60 KeyParameter (org.bouncycastle.crypto.params.KeyParameter)35 ParametersWithIV (org.bouncycastle.crypto.params.ParametersWithIV)24 InvalidKeyException (java.security.InvalidKeyException)21 AESEngine (org.bouncycastle.crypto.engines.AESEngine)16 InvalidAlgorithmParameterException (java.security.InvalidAlgorithmParameterException)14 IvParameterSpec (javax.crypto.spec.IvParameterSpec)14 InvalidCipherTextException (org.bouncycastle.crypto.InvalidCipherTextException)14 PBEParameterSpec (javax.crypto.spec.PBEParameterSpec)12 ParametersWithRandom (org.bouncycastle.crypto.params.ParametersWithRandom)12 SecureRandom (java.security.SecureRandom)11 PaddedBufferedBlockCipher (org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher)11 CBCBlockCipher (org.bouncycastle.crypto.modes.CBCBlockCipher)9 BlockCipher (org.bouncycastle.crypto.BlockCipher)8 SecretKey (javax.crypto.SecretKey)7 BufferedBlockCipher (org.bouncycastle.crypto.BufferedBlockCipher)7 PBEParametersGenerator (org.bouncycastle.crypto.PBEParametersGenerator)7 GCMBlockCipher (org.bouncycastle.crypto.modes.GCMBlockCipher)7 IOException (java.io.IOException)5 UnsupportedEncodingException (java.io.UnsupportedEncodingException)5