cryptoKxServerSessionKeys static method

SessionKeys cryptoKxServerSessionKeys(
  1. Uint8List serverPk,
  2. Uint8List serverSk,
  3. Uint8List clientPk
)

Implementation

static SessionKeys cryptoKxServerSessionKeys(
    Uint8List serverPk, Uint8List serverSk, Uint8List clientPk) {
  RangeError.checkValueInInterval(serverPk.length, cryptoKxPublickeybytes,
      cryptoKxPublickeybytes, 'serverPk', 'Invalid length');
  RangeError.checkValueInInterval(serverSk.length, cryptoKxSecretkeybytes,
      cryptoKxSecretkeybytes, 'serverSk', 'Invalid length');
  RangeError.checkValueInInterval(clientPk.length, cryptoKxPublickeybytes,
      cryptoKxPublickeybytes, 'clientPk', 'Invalid length');

  final _rx = calloc<Uint8>(cryptoKxSessionkeybytes);
  final _tx = calloc<Uint8>(cryptoKxSessionkeybytes);
  final _serverPk = serverPk.toPointer();
  final _serverSk = serverSk.toPointer();
  final _clientPk = clientPk.toPointer();

  try {
    _cryptoKx
        .crypto_kx_server_session_keys(
            _rx, _tx, _serverPk, _serverSk, _clientPk)
        .mustSucceed('crypto_kx_server_session_keys');

    return SessionKeys(
        rx: _rx.toList(cryptoKxSessionkeybytes),
        tx: _tx.toList(cryptoKxSessionkeybytes));
  } finally {
    calloc.free(_rx);
    calloc.free(_tx);
    calloc.free(_serverPk);
    calloc.free(_serverSk);
    calloc.free(_clientPk);
  }
}