Added /tls revoke

This commit is contained in:
James Booth
2015-09-24 01:06:53 +01:00
parent 8d2c7f1ac0
commit bd42185389
4 changed files with 72 additions and 1 deletions

View File

@@ -41,6 +41,7 @@
#include "config/tlscerts.h"
#include "log.h"
#include "common.h"
#include "tools/autocomplete.h"
static gchar *tlscerts_loc;
static GKeyFile *tlscerts;
@@ -48,6 +49,8 @@ static GKeyFile *tlscerts;
static gchar* _get_tlscerts_file(void);
static void _save_tlscerts(void);
static Autocomplete certs_ac;
void
tlscerts_init(void)
{
@@ -60,6 +63,16 @@ tlscerts_init(void)
tlscerts = g_key_file_new();
g_key_file_load_from_file(tlscerts, tlscerts_loc, G_KEY_FILE_KEEP_COMMENTS, NULL);
certs_ac = autocomplete_new();
gsize len = 0;
gchar **groups = g_key_file_get_groups(tlscerts, &len);
int i = 0;
for (i = 0; i < g_strv_length(groups); i++) {
autocomplete_add(certs_ac, groups[i]);
}
g_strfreev(groups);
}
gboolean
@@ -146,6 +159,8 @@ tlscerts_add(TLSCertificate *cert)
return;
}
autocomplete_add(certs_ac, cert->fingerprint);
if (cert->domain) {
g_key_file_set_string(tlscerts, cert->fingerprint, "domain", cert->domain);
}
@@ -165,6 +180,31 @@ tlscerts_add(TLSCertificate *cert)
_save_tlscerts();
}
gboolean
tlscerts_revoke(const char * const fingerprint)
{
gboolean result = g_key_file_remove_group(tlscerts, fingerprint, NULL);
if (result) {
autocomplete_remove(certs_ac, fingerprint);
}
_save_tlscerts();
return result;
}
char *
tlscerts_complete(const char * const prefix)
{
return autocomplete_complete(certs_ac, prefix, TRUE);
}
void
tlscerts_reset_ac(void)
{
autocomplete_reset(certs_ac);
}
void
tlscerts_free(TLSCertificate *cert)
{
@@ -183,6 +223,7 @@ tlscerts_close(void)
{
g_key_file_free(tlscerts);
tlscerts = NULL;
autocomplete_free(certs_ac);
}
static gchar *

View File

@@ -54,10 +54,16 @@ gboolean tlscerts_exists(const char * const fingerprint);
void tlscerts_add(TLSCertificate *cert);
gboolean tlscerts_revoke(const char * const fingerprint);
void tlscerts_free(TLSCertificate *cert);
GList* tlscerts_list(void);
char* tlscerts_complete(const char * const prefix);
void tlscerts_reset_ac(void);
void tlscerts_close(void);
#endif