68 lines
1.7 KiB
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_idea_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
|
||
|
}
|