askarKeyFromKeyExchange function

AskarResult<LocalKeyHandle> askarKeyFromKeyExchange(
  1. KeyAlgorithm alg,
  2. LocalKeyHandle skHandle,
  3. LocalKeyHandle pkHandle
)

Implementation

AskarResult<LocalKeyHandle> askarKeyFromKeyExchange(
  KeyAlgorithm alg,
  LocalKeyHandle skHandle,
  LocalKeyHandle pkHandle,
) {
  Pointer<NativeLocalKeyHandle> localKeyHandlePtr = calloc<NativeLocalKeyHandle>();

  Pointer<Utf8> algPointer = nullptr;

  try {
    algPointer = alg.value.toNativeUtf8();

    final result = nativeAskarKeyFromKeyExchange(
      algPointer,
      skHandle.toInt(),
      pkHandle.toInt(),
      localKeyHandlePtr,
    );

    final errorCode = ErrorCode.fromInt(result);

    final localKeyHandle = LocalKeyHandle.fromPointer(errorCode, localKeyHandlePtr);

    return AskarResult<LocalKeyHandle>(errorCode, localKeyHandle);
  } finally {
    freePointer(localKeyHandlePtr);
    freePointer(algPointer);
  }
}