askarKeyFromSeed function

AskarResult<LocalKeyHandle> askarKeyFromSeed(
  1. KeyAlgorithm alg,
  2. Uint8List seed,
  3. KeyMethod method
)

Implementation

AskarResult<LocalKeyHandle> askarKeyFromSeed(
  KeyAlgorithm alg,
  Uint8List seed,
  KeyMethod method,
) {
  Pointer<NativeLocalKeyHandle> localKeyHandlePtr = calloc<NativeLocalKeyHandle>();
  Pointer<Utf8> algPointer = nullptr;
  Pointer<NativeByteBuffer> byteBufferPointer = nullptr;
  Pointer<Utf8> methodPointer = nullptr;

  try {
    algPointer = alg.value.toNativeUtf8();
    byteBufferPointer = bytesListToByteBuffer(seed);
    methodPointer = method.value.toNativeUtf8();

    final result = nativeAskarKeyFromSeed(
      algPointer,
      byteBufferPointer.ref,
      methodPointer,
      localKeyHandlePtr,
    );

    final errorCode = ErrorCode.fromInt(result);
    final localKeyHandle = LocalKeyHandle.fromPointer(errorCode, localKeyHandlePtr);
    return AskarResult<LocalKeyHandle>(errorCode, localKeyHandle);
  } finally {
    freePointer(algPointer);
    freePointer(methodPointer);
    freeByteBufferPointer(byteBufferPointer);
    freePointer(localKeyHandlePtr);
  }
}