use of org.gudy.bouncycastle.jce.spec.IEKeySpec in project BiglyBT by BiglySoftware.
the class CryptoHandlerECC method decrypt.
@Override
public byte[] decrypt(byte[] other_public_key, byte[] data, String reason) throws CryptoManagerException {
try {
IEKeySpec key_spec = new IEKeySpec(getMyPrivateKey(reason), CryptoECCUtils.rawdataToPubkey(other_public_key));
byte[] d = new byte[16];
byte[] e = new byte[16];
System.arraycopy(data, 0, d, 0, 16);
System.arraycopy(data, 16, e, 0, 16);
IESParameterSpec param = new IESParameterSpec(d, e, 128);
InternalECIES cipher = new InternalECIES();
cipher.internalEngineInit(Cipher.DECRYPT_MODE, key_spec, param, null);
return (cipher.internalEngineDoFinal(data, 32, data.length - 32));
} catch (CryptoManagerException e) {
throw (e);
} catch (Throwable e) {
throw (new CryptoManagerException("Decrypt failed", e));
}
}
use of org.gudy.bouncycastle.jce.spec.IEKeySpec in project BiglyBT by BiglySoftware.
the class CryptoHandlerECC method encrypt.
@Override
public byte[] encrypt(byte[] other_public_key, byte[] data, String reason) throws CryptoManagerException {
try {
IEKeySpec key_spec = new IEKeySpec(getMyPrivateKey(reason), CryptoECCUtils.rawdataToPubkey(other_public_key));
byte[] d = new byte[16];
byte[] e = new byte[16];
RandomUtils.nextSecureBytes(d);
RandomUtils.nextSecureBytes(e);
IESParameterSpec param = new IESParameterSpec(d, e, 128);
InternalECIES cipher = new InternalECIES();
cipher.internalEngineInit(Cipher.ENCRYPT_MODE, key_spec, param, null);
byte[] encrypted = cipher.internalEngineDoFinal(data, 0, data.length);
byte[] result = new byte[32 + encrypted.length];
System.arraycopy(d, 0, result, 0, 16);
System.arraycopy(e, 0, result, 16, 16);
System.arraycopy(encrypted, 0, result, 32, encrypted.length);
return (result);
} catch (CryptoManagerException e) {
throw (e);
} catch (Throwable e) {
throw (new CryptoManagerException("Encrypt failed", e));
}
}
Aggregations