cryptoBoxDetached static method

DetachedCipher cryptoBoxDetached(
  1. Uint8List m,
  2. Uint8List n,
  3. Uint8List pk,
  4. Uint8List sk,
)

Implementation

static DetachedCipher cryptoBoxDetached(
    Uint8List m, Uint8List n, Uint8List pk, Uint8List sk) {
  RangeError.checkValueInInterval(n.length, cryptoBoxNoncebytes,
      cryptoBoxNoncebytes, 'n', 'Invalid length');
  RangeError.checkValueInInterval(pk.length, cryptoBoxPublickeybytes,
      cryptoBoxPublickeybytes, 'pk', 'Invalid length');
  RangeError.checkValueInInterval(sk.length, cryptoBoxSecretkeybytes,
      cryptoBoxSecretkeybytes, 'sk', 'Invalid length');

  final _c = calloc<Uint8>(m.length);
  final _mac = calloc<Uint8>(cryptoBoxMacbytes);
  final _m = m.toPointer();
  final _n = n.toPointer();
  final _pk = pk.toPointer();
  final _sk = sk.toPointer();

  try {
    _cryptoBox
        .crypto_box_detached(_c, _mac, _m, m.length, _n, _pk, _sk)
        .mustSucceed('crypto_box_detached');

    return DetachedCipher(
        c: _c.toList(m.length), mac: _mac.toList(cryptoBoxMacbytes));
  } finally {
    calloc.free(_c);
    calloc.free(_mac);
    calloc.free(_m);
    calloc.free(_n);
    calloc.free(_pk);
    calloc.free(_sk);
  }
}