encryptPinWithIv function

String encryptPinWithIv(
  1. String pin,
  2. String pinTokenBase64,
  3. String privateKey,
  4. int iterator,
  5. int nowSec,
  6. Uint8List iv,
)

Implementation

String encryptPinWithIv(
  String pin,
  String pinTokenBase64,
  String privateKey,
  int iterator,
  int nowSec,
  Uint8List iv,
) {
  final curvePrivKey = privateKeyToCurve25519(decodeBase64(privateKey));
  final public = decodeBase64(pinTokenBase64);
  final keyBytes = X25519(curvePrivKey, public);

  final pinBytes = Uint8List.fromList(utf8.encode(pin));
  final timeBytes = Int64(nowSec).toBytes();
  final iteratorBytes = Int64(iterator).toBytes();

  // pin+time+iterator
  final plaintext = Uint8List.fromList(pinBytes + timeBytes + iteratorBytes);
  final ciphertext = aesCbcEncrypt(keyBytes, iv, plaintext);
  return (iv + ciphertext).base64RawUrlEncode();
}