encrypt method

PkEncryptResult encrypt(
  1. String plaintext
)

Implementation

PkEncryptResult encrypt(String plaintext) {
  final units = utf8.encode(plaintext);
  final rndLen = olm_pk_encrypt_random_length(_inst);
  final outLen = olm_pk_ciphertext_length(_inst, units.length);
  final macLen = olm_pk_mac_length(_inst);
  final ephLen = olm_pk_key_length();
  final mem =
      malloc.call<Uint8>(units.length + rndLen + outLen + macLen + ephLen);
  final rndMem = mem.elementAt(units.length);
  final outMem = rndMem.elementAt(rndLen);
  final macMem = outMem.elementAt(outLen);
  final ephMem = macMem.elementAt(macLen);
  try {
    mem.asTypedList(units.length).setAll(0, units);
    _fillRandom(rndMem.asTypedList(rndLen));
    olm_pk_encrypt(_inst, mem, units.length, outMem, outLen, macMem, macLen,
        ephMem, ephLen, rndMem, rndLen);
    return PkEncryptResult._(
        utf8.decode(outMem.asTypedList(outLen)),
        utf8.decode(macMem.asTypedList(macLen)),
        utf8.decode(ephMem.asTypedList(ephLen)));
  } finally {
    malloc.free(mem);
  }
}