cppcheck/test/cfg/openssl.c

68 lines
1.7 KiB
C

// Test library configuration for openssl.cfg
//
// Usage:
// $ cppcheck --check-library --library=openssl --enable=information --error-exitcode=1 --inline-suppr --suppress=missingIncludeSystem test/cfg/openssl.c
// =>
// No warnings about bad library configuration, unmatched suppressions, etc. exitcode=0
//
#include <openssl/ssl.h>
#include <openssl/bio.h>
#include <string.h>
void valid_code(BIO * bio)
{
BIO_printf(bio, "%d\n", 1);
}
// Example for encrypting a string using IDEA (from https://www.openssl.org/docs/man1.1.1/man3/EVP_CIPHER_CTX_new.html)
int valid_code_do_crypt(char *outfile)
{
unsigned char outbuf[1024];
int outlen, tmplen;
unsigned char key[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
unsigned char iv[] = {1,2,3,4,5,6,7,8};
char intext[] = "Some Crypto Text";
EVP_CIPHER_CTX *ctx;
FILE *out;
ctx = EVP_CIPHER_CTX_new();
EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv);
if (!EVP_EncryptUpdate(ctx, outbuf, &outlen, intext, strlen(intext))) {
/* Error */
EVP_CIPHER_CTX_free(ctx);
return 0;
}
if (!EVP_EncryptFinal_ex(ctx, outbuf + outlen, &tmplen)) {
/* Error */
EVP_CIPHER_CTX_free(ctx);
return 0;
}
outlen += tmplen;
EVP_CIPHER_CTX_free(ctx);
out = fopen(outfile, "wb");
if (out == NULL) {
/* Error */
return 0;
}
fwrite(outbuf, 1, outlen, out);
fclose(out);
return 1;
}
void invalidPrintfArgType_test(BIO * bio)
{
// cppcheck-suppress invalidPrintfArgType_sint
BIO_printf(bio, "%d\n", 5U);
}
void EVP_CIPHER_CTX_new_test()
{
EVP_CIPHER_CTX * ctx = EVP_CIPHER_CTX_new();
printf("%p", ctx);
// cppcheck-suppress resourceLeak
}