mgf1XOR function

void mgf1XOR(
  1. List<int> data,
  2. int outOffset,
  3. int outSize,
  4. List<int> seed,
  5. int seedOffset,
  6. int seedSize,
)

Implementation

void mgf1XOR(List<int> data, int outOffset, int outSize, List<int> seed,
    int seedOffset, int seedSize) {
  Uint8List counter = Uint8List(4);

  int done = 0;
  while (done < outSize) {
    List<int> tempData = [];
    tempData.addAll(seed.sublist(seedOffset, seedOffset + seedSize));
    tempData.addAll(counter);
    var digest = sha256.convert(tempData);

    for (int i = 0; i < digest.bytes.length && done < outSize; i++) {
      data[outOffset + done] ^= digest.bytes[i];
      done++;
    }
    incCounter(counter);
  }
}