Retrieve and save new fingerprints from libstrophe.
This also reads the certificate SHA256 and pubkey fingerprint from libstrophe, but doesn't store it persistently yet. Related-to: https://github.com/profanity-im/profanity/issues/2068 Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
This commit is contained in:
@@ -138,7 +138,7 @@ tlscerts_list(void)
|
||||
auto_gchar gchar* signaturealg = g_key_file_get_string(tlscerts, fingerprint, "signaturealg", NULL);
|
||||
|
||||
TLSCertificate* cert = tlscerts_new(fingerprint, version, serialnumber, subjectname, issuername, notbefore,
|
||||
notafter, keyalg, signaturealg, NULL);
|
||||
notafter, keyalg, signaturealg, NULL, NULL, NULL);
|
||||
|
||||
res = g_list_append(res, cert);
|
||||
}
|
||||
@@ -149,13 +149,17 @@ tlscerts_list(void)
|
||||
TLSCertificate*
|
||||
tlscerts_new(const char* fingerprint_sha1, int version, const char* serialnumber, const char* subjectname,
|
||||
const char* issuername, const char* notbefore, const char* notafter,
|
||||
const char* key_alg, const char* signature_alg, const char* pem)
|
||||
const char* key_alg, const char* signature_alg, const char* pem,
|
||||
const char* fingerprint_sha256, const char* pubkey_fingerprint)
|
||||
{
|
||||
TLSCertificate* cert = calloc(1, sizeof(TLSCertificate));
|
||||
|
||||
if (fingerprint_sha1) {
|
||||
cert->fingerprint_sha1 = strdup(fingerprint_sha1);
|
||||
}
|
||||
if (fingerprint_sha256) {
|
||||
cert->fingerprint_sha256 = strdup(fingerprint_sha256);
|
||||
}
|
||||
cert->version = version;
|
||||
if (serialnumber) {
|
||||
cert->serialnumber = strdup(serialnumber);
|
||||
@@ -181,6 +185,9 @@ tlscerts_new(const char* fingerprint_sha1, int version, const char* serialnumber
|
||||
if (pem) {
|
||||
cert->pem = strdup(pem);
|
||||
}
|
||||
if (pubkey_fingerprint) {
|
||||
cert->pubkey_fingerprint = strdup(pubkey_fingerprint);
|
||||
}
|
||||
|
||||
auto_gcharv gchar** fields = g_strsplit(subjectname, "/", 0);
|
||||
for (int i = 0; i < g_strv_length(fields); i++) {
|
||||
@@ -315,9 +322,8 @@ tlscerts_get_trusted(const char* fingerprint)
|
||||
auto_gchar gchar* keyalg = g_key_file_get_string(tlscerts, fingerprint, "keyalg", NULL);
|
||||
auto_gchar gchar* signaturealg = g_key_file_get_string(tlscerts, fingerprint, "signaturealg", NULL);
|
||||
|
||||
TLSCertificate* cert = tlscerts_new(fingerprint, version, serialnumber, subjectname, issuername, notbefore,
|
||||
notafter, keyalg, signaturealg, NULL);
|
||||
return cert;
|
||||
return tlscerts_new(fingerprint, version, serialnumber, subjectname, issuername, notbefore,
|
||||
notafter, keyalg, signaturealg, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
char*
|
||||
@@ -361,6 +367,8 @@ tlscerts_free(TLSCertificate* cert)
|
||||
free(cert->notbefore);
|
||||
free(cert->notafter);
|
||||
free(cert->fingerprint_sha1);
|
||||
free(cert->fingerprint_sha256);
|
||||
free(cert->pubkey_fingerprint);
|
||||
|
||||
free(cert->key_alg);
|
||||
free(cert->signature_alg);
|
||||
|
||||
@@ -63,16 +63,19 @@ typedef struct tls_cert_t
|
||||
char* notbefore;
|
||||
char* notafter;
|
||||
char* fingerprint_sha1;
|
||||
char* fingerprint_sha256;
|
||||
char* key_alg;
|
||||
char* signature_alg;
|
||||
char* pem;
|
||||
char* pubkey_fingerprint;
|
||||
} TLSCertificate;
|
||||
|
||||
void tlscerts_init(void);
|
||||
|
||||
TLSCertificate* tlscerts_new(const char* fingerprint_sha1, int version, const char* serialnumber, const char* subjectname,
|
||||
const char* issuername, const char* notbefore, const char* notafter,
|
||||
const char* key_alg, const char* signature_alg, const char* pem);
|
||||
const char* key_alg, const char* signature_alg, const char* pem,
|
||||
const char* fingerprint_sha256, const char* pubkey_fingerprint);
|
||||
|
||||
void tlscerts_set_current(const TLSCertificate* cert);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user