decrypt static method
ECDHResult
decrypt(
- Uint8List value,
- PrivateKey privateKey, {
- Uint8List? publicKey,
- int? origMsgLength = 0,
Decrypts the given data.
Implementation
static ECDHResult decrypt(Uint8List value, pdp.PrivateKey privateKey,
{Uint8List? publicKey, int? origMsgLength = 0}) {
publicKey = publicKey == null ? Uint8List(1) : publicKey;
ECDomainParameters domainParams = ECDomainParameters(privateKey.curve.name!);
ECPoint Q = domainParams.curve.decodePoint(publicKey)!;
BigInt d = PDUtil.decodeBigInt(privateKey.ec(), endian: Endian.big);
Uint8List sharedSecret =
PDUtil.encodeBigInt((Q * d)!.x!.toBigInteger()!, endian: Endian.big);
Uint8List secretKey = Sha.sha512([sharedSecret]);
Uint8List decryptedData = AesCbcZeroPadding.decrypt(value,
key: secretKey.sublist(0, 32), iv: Uint8List(16));
Uint8List decryptedDataWithPaddingRemoved =
decryptedData.sublist(0, origMsgLength);
return ECDHResult(
isEncrypted: false,
data: decryptedDataWithPaddingRemoved,
key: secretKey.sublist(32, 64));
}