add argument for data chunk size

pull/494/head
JacobBarthelmeh 2025-04-04 14:25:09 -06:00
parent ea23d8d916
commit 83cccaf3a4
1 changed files with 30 additions and 9 deletions

View File

@ -34,7 +34,7 @@
#define CONTENT_FILE_NAME "benchmark-content.bin" #define CONTENT_FILE_NAME "benchmark-content.bin"
#define ENCODED_FILE_NAME "test-stream-dec.p7b" #define ENCODED_FILE_NAME "test-stream-dec.p7b"
#define DECODED_FILE_NAME "benchmark-decrypted.bin" #define DECODED_FILE_NAME "benchmark-decrypted.bin"
#define TEST_STREAM_CHUNK_SIZE 1000 static int chunkSz = 1000;
struct timeval startTime; struct timeval startTime;
@ -104,7 +104,7 @@ int CreateContentFile(double contentSz)
typedef struct BENCHMARK_IO { typedef struct BENCHMARK_IO {
FILE* in; FILE* in;
FILE* out; FILE* out;
byte buf[TEST_STREAM_CHUNK_SIZE]; byte* buf;
} BENCHMARK_IO; } BENCHMARK_IO;
@ -120,7 +120,7 @@ static int GetContentCB(PKCS7* pkcs7, byte** content, void* ctx)
BENCHMARK_IO* io = (BENCHMARK_IO*)ctx; BENCHMARK_IO* io = (BENCHMARK_IO*)ctx;
if (io != NULL) { if (io != NULL) {
ret = fread(io->buf, 1, TEST_STREAM_CHUNK_SIZE, io->in); ret = fread(io->buf, 1, chunkSz, io->in);
if (ret > 0) { if (ret > 0) {
*content = io->buf; *content = io->buf;
} }
@ -203,7 +203,8 @@ static int EncodePKCS7Bundle(double contentSz, WC_RNG* rng)
if (ret == 0) { if (ret == 0) {
io.in = fopen(CONTENT_FILE_NAME, "rb"); io.in = fopen(CONTENT_FILE_NAME, "rb");
io.out = fopen(ENCODED_FILE_NAME, "wb"); io.out = fopen(ENCODED_FILE_NAME, "wb");
if (io.in == NULL || io.out == NULL) { io.buf = (byte*)malloc(chunkSz);
if (io.in == NULL || io.out == NULL || io.buf == NULL) {
printf("Failed to open the IO files\n"); printf("Failed to open the IO files\n");
ret = -1; ret = -1;
} }
@ -240,6 +241,9 @@ static int EncodePKCS7Bundle(double contentSz, WC_RNG* rng)
if (io.in != NULL) { if (io.in != NULL) {
fclose(io.in); fclose(io.in);
} }
if (io.buf != NULL) {
free(io.buf);
}
wc_PKCS7_Free(pkcs7); wc_PKCS7_Free(pkcs7);
return 0; return 0;
@ -275,9 +279,15 @@ static int DecodePKCS7Bundle(void)
FILE* f = NULL; FILE* f = NULL;
FILE* out = NULL; FILE* out = NULL;
double totalSz = 0; double totalSz = 0;
byte testStreamBuffer[TEST_STREAM_CHUNK_SIZE]; byte *testStreamBuffer;
int testStreamBufferSz = 0; int testStreamBufferSz = 0;
testStreamBuffer = (byte*)malloc(chunkSz);
if (testStreamBuffer == NULL) {
printf("Failed to malloc temporary buffer to hold data to process\n");
ret = -1;
}
if (ret == 0) { if (ret == 0) {
f = fopen(ENCODED_FILE_NAME, "rb"); f = fopen(ENCODED_FILE_NAME, "rb");
if (f == NULL) { if (f == NULL) {
@ -323,8 +333,7 @@ static int DecodePKCS7Bundle(void)
if (ret == 0) { if (ret == 0) {
rewind(f); /* start from the beginning of the file */ rewind(f); /* start from the beginning of the file */
do { do {
testStreamBufferSz = (int)XFREAD(testStreamBuffer, 1, testStreamBufferSz = (int)XFREAD(testStreamBuffer, 1, chunkSz, f);
sizeof(testStreamBuffer), f);
if (testStreamBufferSz == 0) { if (testStreamBufferSz == 0) {
printf("Read 0 bytes from file..."); printf("Read 0 bytes from file...");
if (feof(f)) { if (feof(f)) {
@ -354,6 +363,10 @@ static int DecodePKCS7Bundle(void)
fclose(out); fclose(out);
} }
if (testStreamBuffer != NULL) {
free(testStreamBuffer);
}
wc_PKCS7_Free(pkcs7); wc_PKCS7_Free(pkcs7);
if (ret == 0) { if (ret == 0) {
@ -373,7 +386,16 @@ int main(int argc, char** argv)
int ret; int ret;
if (argc > 1) { if (argc > 1) {
if (strcmp(argv[1], "-h") == 0) {
printf("USAGE: %s <content data size> <chunk to read at once>\n",
argv[0]);
return 1;
}
contentSz = atof(argv[1]); contentSz = atof(argv[1]);
if (argc > 2) {
chunkSz = atoi(argv[2]);
}
} }
ret = wolfCrypt_Init(); ret = wolfCrypt_Init();
@ -388,8 +410,7 @@ int main(int argc, char** argv)
if (ret == 0) { if (ret == 0) {
printf("Benchmarking with content size of %.0f bytes\n", contentSz); printf("Benchmarking with content size of %.0f bytes\n", contentSz);
printf("Reading and writing files in chuncks of %d bytes\n", printf("Reading and writing files in chunks of %d bytes\n", chunkSz);
TEST_STREAM_CHUNK_SIZE);
printf("Using AES-256 CBC encryption\n"); printf("Using AES-256 CBC encryption\n");
printf("Using RSA-2048 key\n\n"); printf("Using RSA-2048 key\n\n");