hex2Bin method
Implementation
Uint8List hex2Bin(String hexString) {
final hexPointer = hexString.toNativeUtf8().cast<ffi.Char>();
// Allocate memory for the binary data
final binMaxLen = hexString.length ~/ 2;
final binPointer = calloc<ffi.Uint8>(binMaxLen);
final binLen = calloc<ffi.Size>();
try {
// Call sodium_hex2bin to perform the conversion
final result = sodium_hex2bin(
binPointer.cast<ffi.UnsignedChar>(),
binMaxLen,
hexPointer,
hexString.length,
ffi.nullptr,
binLen,
ffi.nullptr,
);
if (result == 0) {
final binData = binPointer.asTypedList(binLen.value);
// Clone the original list
return Uint8List.fromList(List.from(binData));
} else {
f.debugPrint('[Lazysodium] Conversion hex2Bin failed.');
}
return Uint8List(0);
} finally {
// Free allocated memory
calloc.free(binPointer);
calloc.free(binLen);
calloc.free(hexPointer);
}
}