rsaEncrypt function
Implementation
Future<Uint8List> rsaEncrypt(
RSAPublicKey myPublic, Uint8List dataToEncrypt) async {
var k = 256;
if (dataToEncrypt.length > k - 2 * 32 - 2) {
throw "wrong msg size";
}
List<int> label = [];
var lHash = sha256.convert(label);
List<int> em = List.filled(k, 0);
var seedOffset = 1;
var seedSize = 32;
var dbOffset = 1 + 32;
var dbSize = em.length - dbOffset;
for (int i = 0; i < 32; i++) {
em[dbOffset + i] = lHash.bytes[i];
}
var msgSize = dataToEncrypt.length;
em[dbOffset + (dbSize - msgSize - 1)] = 1;
var msgOffset = dbSize - msgSize;
for (int i = 0; i < msgSize; i++) {
em[dbOffset + msgOffset + i] = dataToEncrypt[i];
}
var rng = Random();
for (int i = 0; i < 32; i++) {
em[1 + i] = rng.nextInt(255);
}
mgf1XOR(em, dbOffset, dbSize, em, seedOffset, seedSize);
mgf1XOR(em, seedOffset, seedSize, em, dbOffset, dbSize);
var m = bytesToBigInt(em);
var c = encrypt(myPublic, m);
var result = fillBytes(c, k);
return Uint8List.fromList(result);
}