mirror of
https://github.com/pi-hole/FTL.git
synced 2025-12-20 07:18:23 +00:00
Merge pull request #2465 from nathansmeal/development
Adjust write_to_file function to include the CA certificate
This commit is contained in:
@@ -188,7 +188,7 @@ static int generate_private_key_ec(mbedtls_pk_context *key,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Write a key and/or certificate to a file
|
// Write a key and/or certificate to a file
|
||||||
static bool write_to_file(const char *filename, const char *type, const char *suffix, const char *cert, const char *key)
|
static bool write_to_file(const char *filename, const char *type, const char *suffix, const char *cert, const char *key, const char *cacert)
|
||||||
{
|
{
|
||||||
// Create file with CA certificate only
|
// Create file with CA certificate only
|
||||||
char *targetname = calloc(strlen(filename) + (suffix != NULL ? strlen(suffix) : 0) + 1, sizeof(char));
|
char *targetname = calloc(strlen(filename) + (suffix != NULL ? strlen(suffix) : 0) + 1, sizeof(char));
|
||||||
@@ -241,6 +241,18 @@ static bool write_to_file(const char *filename, const char *type, const char *su
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Write CA certificate (if provided)
|
||||||
|
if(cacert != NULL)
|
||||||
|
{
|
||||||
|
const size_t olen = strlen((char *) cacert);
|
||||||
|
if (fwrite(cacert, 1, olen, f) != olen)
|
||||||
|
{
|
||||||
|
printf("ERROR: Could not write CA certificate to %s\n", targetname);
|
||||||
|
fclose(f);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Close cert file
|
// Close cert file
|
||||||
fclose(f);
|
fclose(f);
|
||||||
free(targetname);
|
free(targetname);
|
||||||
@@ -420,13 +432,13 @@ bool generate_certificate(const char* certfile, bool rsa, const char *domain)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create file with CA certificate only
|
// Create file with CA certificate only
|
||||||
write_to_file(certfile, "CA certificate", "_ca.crt", (char*)ca_buffer, NULL);
|
write_to_file(certfile, "CA certificate", "_ca.crt", (char*)ca_buffer, NULL, NULL);
|
||||||
|
|
||||||
// Create file with server certificate only
|
// Create file with server certificate only
|
||||||
write_to_file(certfile, "server certificate", ".crt", (char*)cert_buffer, NULL);
|
write_to_file(certfile, "server certificate", ".crt", (char*)cert_buffer, NULL, NULL);
|
||||||
|
|
||||||
// Write server's private key and certificate to file
|
// Write server's private key and certificate to file
|
||||||
write_to_file(certfile, "server key + certificate", NULL, (char*)cert_buffer, (char*)key_buffer);
|
write_to_file(certfile, "server key + certificate", NULL, (char*)cert_buffer, (char*)key_buffer, (char*)ca_buffer);
|
||||||
|
|
||||||
// Free resources
|
// Free resources
|
||||||
mbedtls_x509write_crt_free(&ca_cert);
|
mbedtls_x509write_crt_free(&ca_cert);
|
||||||
|
|||||||
Reference in New Issue
Block a user