Files
cryptography/crypto/shamirs_secret_sharing/test_shamir.c

55 lines
1.6 KiB
C

/* before being able to run please provide python/c abi with where to find numpy
set PYTHONHOME=C:\Users\wm\AppData\Local\Programs\Python\Python312
set PYTHONPATH=%PYTHONHOME%\Lib;%PYTHONHOME%\Lib\site-packages*/
// compiled w clang -o test_shamir.exe test_shamir.c -L.
// FULL REWORK NEEDED, CAN'T COMPILE NUMPY INTO CABI
#include <stdio.h>
#include <windows.h>
int main() {
HMODULE dll = LoadLibraryA("C:\\Users\\wm\\Documents\\projekt_payments.org.im\\crypto\\shamirs_secret_sharing\\shamir_bridge.dll");
if (!dll) {
printf("Failed to load DLL\n");
return 1;
}
typedef char* (*split_func_t)(char** secret, int len, int shares, int threshold);
typedef char* (*combine_func_t)(char** shares, int len);
split_func_t split_secret = (split_func_t)GetProcAddress(dll, "split_secret");
combine_func_t combine_shares = (combine_func_t)GetProcAddress(dll, "combine_shares");
if (!split_secret || !combine_shares) {
printf("Failed to get function addresses\n");
return 1;
}
char* secret_arr[1];
secret_arr[0] = "test";
char* split_result = split_secret(secret_arr, 1, 3, 3);
if (split_result) {
printf("Split result: %s\n", split_result);
} else {
printf("split_secret returned NULL\n");
}
char* shares_arr[3];
shares_arr[0] = split_result;
shares_arr[1] = split_result;
shares_arr[2] = split_result;
char* combined = combine_shares(shares_arr, 3);
if (combined) {
printf("Combined result: %s\n", combined);
} else {
printf("combine_shares returned NULL\n");
}
FreeLibrary(dll);
return 0;
}