--- a/test/crypto.c Sun Sep 07 15:36:24 2025 +0200 +++ b/test/crypto.c Sun Sep 07 15:57:36 2025 +0200 @@ -192,146 +192,138 @@ } } -UCX_TEST(test_util_decrypt_str_k) { +CX_TEST(test_util_decrypt_str_k) { create_keys(); DavContext *ctx = dav_context_new(); DavSession *sn = dav_session_new(ctx, "http://localhost/"); - UCX_TEST_BEGIN; - - for(int k=0;k<2;k++) { - for(int i=0;i<20;i++) { - char *c1; - char *c2; - if(k == 0) { - c1 = cryptkey0aes128strings[i]; - c2 = cryptkey0aes256strings[i]; - } else { - c1 = cryptkey1aes128strings[i]; - c2 = cryptkey1aes256strings[i]; + CX_TEST_DO { + for(int k=0;k<2;k++) { + for(int i=0;i<20;i++) { + char *c1; + char *c2; + if(k == 0) { + c1 = cryptkey0aes128strings[i]; + c2 = cryptkey0aes256strings[i]; + } else { + c1 = cryptkey1aes128strings[i]; + c2 = cryptkey1aes256strings[i]; + } + + char *s128 = util_decrypt_str_k(sn, c1, &keys128[k]); + char *s256 = util_decrypt_str_k(sn, c2, &keys256[k]); + + CX_TEST_ASSERT(!strcmp(s128, strings[i])); + CX_TEST_ASSERT(!strcmp(s256, strings[i])); } - - char *s128 = util_decrypt_str_k(sn, c1, &keys128[k]); - char *s256 = util_decrypt_str_k(sn, c2, &keys256[k]); - - UCX_TEST_ASSERT(!strcmp(s128, strings[i]), "s128 wrong"); - UCX_TEST_ASSERT(!strcmp(s256, strings[i]), "s256 wrong"); } } - UCX_TEST_END; - dav_context_destroy(ctx); } -UCX_TEST(test_util_encrypt_str_k) { +CX_TEST(test_util_encrypt_str_k) { DavContext *ctx = dav_context_new(); DavSession *sn = dav_session_new(ctx, "http://localhost/"); - UCX_TEST_BEGIN; - - for(int k=0;k<16;k++) { - for(int i=0;i<20;i++) { - char *aes128 = util_encrypt_str_k(sn, strings[i], &keys128[k]); - char *aes256 = util_encrypt_str_k(sn, strings[i], &keys256[k]); - - char *dec1 = util_decrypt_str_k(sn, aes128, &keys128[k]); - char *dec2 = util_decrypt_str_k(sn, aes256, &keys256[k]); - - UCX_TEST_ASSERT(!strcmp(dec1, strings[i]), "aes128 encrypt failed"); - UCX_TEST_ASSERT(!strcmp(dec2, strings[i]), "aes256 encrypt failed"); + CX_TEST_DO { + for(int k=0;k<16;k++) { + for(int i=0;i<20;i++) { + char *aes128 = util_encrypt_str_k(sn, strings[i], &keys128[k]); + char *aes256 = util_encrypt_str_k(sn, strings[i], &keys256[k]); + + char *dec1 = util_decrypt_str_k(sn, aes128, &keys128[k]); + char *dec2 = util_decrypt_str_k(sn, aes256, &keys256[k]); + + CX_TEST_ASSERT(!strcmp(dec1, strings[i])); + CX_TEST_ASSERT(!strcmp(dec2, strings[i])); + } } } - - UCX_TEST_END; } -UCX_TEST(test_crypto_buffer) { - UCX_TEST_BEGIN; - - for(int i=0;i<32;i++) { - DavKey *key = i < 16 ? &keys256[i] : &keys128[i%16]; - - for(int j=0;j<20;j++) { - CxBuffer *content = cxBufferCreate(NULL, 256, cxDefaultAllocator, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); - cxBufferPutString(content, strings[j]); - content->pos = 0; - - CxBuffer *enc = aes_encrypt_buffer(content, key); - UCX_TEST_ASSERT(enc->size >= content->size + 16, "aes_encrypt_buffer failed"); - - char *base64 = util_base64encode(enc->space, enc->size); - size_t plainlen = 0; - char *plain = aes_decrypt(base64, &plainlen, key); - - UCX_TEST_ASSERT(plain, "aes_decrypt failed"); - UCX_TEST_ASSERT(plainlen == content->size, "aes_decrypt: wrong length"); - UCX_TEST_ASSERT(!memcmp(plain, content->space, plainlen), "aes_decrypt: wrong content"); - - CxBuffer *dec = aes_decrypt_buffer(enc, key); - UCX_TEST_ASSERT(dec->size == content->size, "aes_decrypt_buffer failed"); - - UCX_TEST_ASSERT(!memcmp(content->space, dec->space, dec->size), "decrypted buffer has wrong content"); - - cxBufferFree(content); - cxBufferFree(enc); - cxBufferFree(dec); - free(base64); - free(plain); +CX_TEST(test_crypto_buffer) { + CX_TEST_DO { + for(int i=0;i<32;i++) { + DavKey *key = i < 16 ? &keys256[i] : &keys128[i%16]; + + for(int j=0;j<20;j++) { + CxBuffer *content = cxBufferCreate(NULL, 256, cxDefaultAllocator, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); + cxBufferPutString(content, strings[j]); + content->pos = 0; + + CxBuffer *enc = aes_encrypt_buffer(content, key); + CX_TEST_ASSERT(enc->size >= content->size + 16); + + char *base64 = util_base64encode(enc->space, enc->size); + size_t plainlen = 0; + char *plain = aes_decrypt(base64, &plainlen, key); + + CX_TEST_ASSERT(plain); + CX_TEST_ASSERT(plainlen == content->size); + CX_TEST_ASSERT(!memcmp(plain, content->space, plainlen)); + + CxBuffer *dec = aes_decrypt_buffer(enc, key); + CX_TEST_ASSERT(dec->size == content->size); + + CX_TEST_ASSERT(!memcmp(content->space, dec->space, dec->size)); + + cxBufferFree(content); + cxBufferFree(enc); + cxBufferFree(dec); + free(base64); + free(plain); + } } } - - UCX_TEST_END; } -UCX_TEST(test_crypto_stream) { +CX_TEST(test_crypto_stream) { CxBuffer *data = cxBufferCreate(NULL, 1024, cxDefaultAllocator, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); CxBuffer *cbuf = cxBufferCreate(NULL, 1024, cxDefaultAllocator, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); CxBuffer *pbuf = cxBufferCreate(NULL, 1024, cxDefaultAllocator, CX_BUFFER_FREE_CONTENTS|CX_BUFFER_AUTO_EXTEND); - UCX_TEST_BEGIN; - - for(int i=0;i<32;i++) { - DavKey *key = i < 16 ? &keys256[i] : &keys128[i%16]; - for(int j=0;j<20;j++) { - data->pos = 0; - data->size = 0; - size_t slen = strlen(strings[j]); - cxBufferWrite(strings[j], 1, slen, data); - cxBufferSeek(data, 0, SEEK_SET); + CX_TEST_DO { + for(int i=0;i<32;i++) { + DavKey *key = i < 16 ? &keys256[i] : &keys128[i%16]; + for(int j=0;j<20;j++) { + data->pos = 0; + data->size = 0; + size_t slen = strlen(strings[j]); + cxBufferWrite(strings[j], 1, slen, data); + cxBufferSeek(data, 0, SEEK_SET); - cbuf->pos = 0; - cbuf->size = 0; - pbuf->pos = 0; - pbuf->size = 0; + cbuf->pos = 0; + cbuf->size = 0; + pbuf->pos = 0; + pbuf->size = 0; - AESEncrypter *enc = aes_encrypter_new(key, data, (dav_read_func)cxBufferRead, NULL); - char buf[1024]; - size_t r = 0; - while((r = aes_read(buf, 1, 1024, enc)) != 0) { - cxBufferWrite(buf, 1, r, cbuf); - } - aes_encrypter_close(enc); + AESEncrypter *enc = aes_encrypter_new(key, data, (dav_read_func)cxBufferRead, NULL); + char buf[1024]; + size_t r = 0; + while((r = aes_read(buf, 1, 1024, enc)) != 0) { + cxBufferWrite(buf, 1, r, cbuf); + } + aes_encrypter_close(enc); - AESDecrypter *dec = aes_decrypter_new(key, pbuf, (dav_write_func)cxBufferWrite); - aes_write(cbuf->space, 1, cbuf->pos, dec); - aes_decrypter_shutdown(dec); - aes_decrypter_close(dec); + AESDecrypter *dec = aes_decrypter_new(key, pbuf, (dav_write_func)cxBufferWrite); + aes_write(cbuf->space, 1, cbuf->pos, dec); + aes_decrypter_shutdown(dec); + aes_decrypter_close(dec); + + CX_TEST_ASSERT(slen == pbuf->pos); + CX_TEST_ASSERT(!memcmp(strings[j], pbuf->space, slen)); - UCX_TEST_ASSERT(slen == pbuf->pos, "wrong length after enc-dec"); - UCX_TEST_ASSERT(!memcmp(strings[j], pbuf->space, slen), "wrong content after enc-dec"); - - data->pos = 0; - CxBuffer *enc2 = aes_encrypt_buffer(data, key); - CxBuffer *dec2 = aes_decrypt_buffer(enc2, key); - - UCX_TEST_ASSERT(dec2->size == data->size, "dec2 has wrong size"); - UCX_TEST_ASSERT(!memcmp(strings[j], dec2->space, dec2->size), "dec2 has wrong content"); + data->pos = 0; + CxBuffer *enc2 = aes_encrypt_buffer(data, key); + CxBuffer *dec2 = aes_decrypt_buffer(enc2, key); + + CX_TEST_ASSERT(dec2->size == data->size); + CX_TEST_ASSERT(!memcmp(strings[j], dec2->space, dec2->size)); + } } } - - UCX_TEST_END; } static char *pws[] = { @@ -418,51 +410,50 @@ }; -UCX_TEST(test_dav_pw2key) { +CX_TEST(test_dav_pw2key) { - - UCX_TEST_BEGIN; + CX_TEST_DO { - for(int p=0;p<4;p++) { - for(int s=0;s<4;s++) { - DavKey *keys[4]; - keys[0] = dav_pw2key( - pws[p], - salt[s], - saltlen[s], - DAV_PWFUNC_PBKDF2_SHA256, - DAV_KEY_AES128); - keys[1] = dav_pw2key( - pws[p], - salt[s], - saltlen[s], - DAV_PWFUNC_PBKDF2_SHA256, - DAV_KEY_AES256); - keys[2] = dav_pw2key( - pws[p], - salt[s], - saltlen[s], - DAV_PWFUNC_PBKDF2_SHA512, - DAV_KEY_AES128); - keys[3] = dav_pw2key( - pws[p], - salt[s], - saltlen[s], - DAV_PWFUNC_PBKDF2_SHA512, - DAV_KEY_AES256); - - for(int i=0;i<4;i++) { - DavKey *key = keys[i]; - - int index = 16*p + 4*s + i; - int keylen = index % 2 == 0 ? 16 : 32; - - UCX_TEST_ASSERT(key, "no key"); - UCX_TEST_ASSERT(keylen == key->length, "wrong key length"); - UCX_TEST_ASSERT(!memcmp(key->data, pwgenkeys[index], keylen), "wrong key data"); + for(int p=0;p<4;p++) { + for(int s=0;s<4;s++) { + DavKey *keys[4]; + keys[0] = dav_pw2key( + pws[p], + salt[s], + saltlen[s], + DAV_PWFUNC_PBKDF2_SHA256, + DAV_KEY_AES128); + keys[1] = dav_pw2key( + pws[p], + salt[s], + saltlen[s], + DAV_PWFUNC_PBKDF2_SHA256, + DAV_KEY_AES256); + keys[2] = dav_pw2key( + pws[p], + salt[s], + saltlen[s], + DAV_PWFUNC_PBKDF2_SHA512, + DAV_KEY_AES128); + keys[3] = dav_pw2key( + pws[p], + salt[s], + saltlen[s], + DAV_PWFUNC_PBKDF2_SHA512, + DAV_KEY_AES256); + + for(int i=0;i<4;i++) { + DavKey *key = keys[i]; + + int index = 16*p + 4*s + i; + int keylen = index % 2 == 0 ? 16 : 32; + + CX_TEST_ASSERT(key); + CX_TEST_ASSERT(keylen == key->length); + CX_TEST_ASSERT(!memcmp(key->data, pwgenkeys[index], keylen)); + } } } + } - - UCX_TEST_END; }