decrypt static method

ECDHResult decrypt(
  1. Uint8List value,
  2. PrivateKey privateKey, {
  3. Uint8List? publicKey,
  4. 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));
}