В расширении для postgresql я шифрую char*
, получаю буфер BYTE
, записываю его в файл и возвращаю как bytea*
через PG_RETURN_BYTEA_P
. Когда я пытаюсь прочитать то же самое через bytea* b = PG_GETARG_BYTEA_P
, чтение не совпадает с тем, что я записал в файл. Как правильно прочитать bytea
, получить BYTE
и снова расшифровать? Все в C.
Часть кода:
FILE* log = AllocateFile("C:\\pg\\log.txt", PG_BINARY_A);
//get data to decrypt
bytea* dataToDecrypt = PG_GETARG_BYTEA_P(0);
FILE* tempFile = AllocateFile("C:\\pg\\file1.txt", PG_BINARY_A);
fwrite(dataToDecrypt, sizeof(dataToDecrypt), 1, tempFile);
FreeFile(tempFile);
Я поместил данные в file1
, чтобы использовать пример от Microsoft. Далее все как в примере https://docs.microsoft.com/en-us/windows/win32/seccrypto/example-c-program-decrypting-a-file В конце концов:
FreeFile(log);
PG_RETURN_BYTEA_P(pbBuffer);