encryptPinWithIv function
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 base64Url.encode(iv + ciphertext);
}