Code cleanup & more tests

This commit is contained in:
heiko.reese
2021-09-13 02:40:12 +02:00
parent 1062248787
commit 781c716d8e
4 changed files with 102 additions and 46 deletions

View File

@ -4,36 +4,38 @@
#include <ctype.h>
#include <sodium.h>
bool key_contains_zero(unsigned char *key, unsigned int keylen)
{
bool has_zero = false;
for (unsigned int i = 0; i < keylen; i++) {
if (key[i] == 0) {
has_zero = true;
}
}
return has_zero;
}
//void
//dump_key_as_c_code(FILE * f, const char *name, unsigned char *key,
// unsigned int keylen)
//{
// fprintf(f, "const unsigned char %s[] = { ", name);
// for (unsigned int i = 0; i < keylen; i++) {
// fprintf(f, "0x%02x", key[i]);
// if (i < keylen - 1) {
// fprintf(f, ", ");
// }
// }
// fprintf(f, " };\n");
// fprintf(f, "const unsigned int %s_length = %d;\n", name, keylen);
//}
//void create_secretbox_key(const char *filebase, const char *varname) {
// unsigned char key[crypto_secretbox_KEYBYTES];
//
// crypto_secretbox_keygen(key);
//
// char key_filename[4096];
// char key_varname[4096];
//
// sprintf(key_filename, "%s_secretbox", filebase);
// sprintf(key_varname, "%s_key", varname);
//
// write_key_files(key_filename, key_varname, key, crypto_secretbox_KEYBYTES);
//}
void
dump_key_as_c_code(FILE * f, const char *name, unsigned char *key,
unsigned int keylen)
{
fprintf(f, "const unsigned char %s[] = { ", name);
for (unsigned int i = 0; i < keylen; i++) {
fprintf(f, "0x%02x", key[i]);
if (i < keylen - 1) {
fprintf(f, ", ");
}
}
fprintf(f, " };\n");
fprintf(f, "const unsigned int %s_length = %d;\n", name, keylen);
}
void
dump_key_as_exim_config(FILE * f, const char *name, unsigned char *key,
unsigned int keylen)
{
dump_key_as_exim_config(FILE *f, const char *name, unsigned char *key,
unsigned int keylen) {
// write a comment with C variable declaration
fprintf(f, "# const unsigned char %s[%d] = { ", name, keylen);
for (unsigned int i = 0; i < keylen; i++) {
@ -127,20 +129,6 @@ void create_cryptobox_keys(const char *filebase, const char *varname)
}
void create_secretbox_key(const char *filebase, const char *varname) {
unsigned char key[crypto_secretbox_KEYBYTES];
crypto_secretbox_keygen(key);
char key_filename[4096];
char key_varname[4096];
sprintf(key_filename, "%s_secretbox", filebase);
sprintf(key_varname, "%s_key", varname);
write_key_files(key_filename, key_varname, key, crypto_secretbox_KEYBYTES);
}
int main(void) {
if (sodium_init() < 0) {
fputs("Unable to initialize libsodium", stderr);