diff options
Diffstat (limited to 'src/userpref.c')
| -rw-r--r-- | src/userpref.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/src/userpref.c b/src/userpref.c index 5f227b0..3e5eb06 100644 --- a/src/userpref.c +++ b/src/userpref.c | |||
| @@ -111,10 +111,10 @@ int is_device_known(char *uid) | |||
| 111 | * @return 1 on success and 0 if no public key is given or if it has already | 111 | * @return 1 on success and 0 if no public key is given or if it has already |
| 112 | * been marked as connected previously. | 112 | * been marked as connected previously. |
| 113 | */ | 113 | */ |
| 114 | int store_device_public_key(char *uid, char *public_key) | 114 | int store_device_public_key(char *uid, gnutls_datum_t public_key) |
| 115 | { | 115 | { |
| 116 | 116 | ||
| 117 | if (NULL == public_key || is_device_known(uid)) | 117 | if (NULL == public_key.data || is_device_known(uid)) |
| 118 | return 0; | 118 | return 0; |
| 119 | 119 | ||
| 120 | /* ensure config directory exists */ | 120 | /* ensure config directory exists */ |
| @@ -124,15 +124,11 @@ int store_device_public_key(char *uid, char *public_key) | |||
| 124 | gchar *device_file = g_strconcat(uid, ".pem", NULL); | 124 | gchar *device_file = g_strconcat(uid, ".pem", NULL); |
| 125 | gchar *pem = g_build_path(G_DIR_SEPARATOR_S, g_get_user_config_dir(), LIBIPHONE_CONF_DIR, device_file, NULL); | 125 | gchar *pem = g_build_path(G_DIR_SEPARATOR_S, g_get_user_config_dir(), LIBIPHONE_CONF_DIR, device_file, NULL); |
| 126 | 126 | ||
| 127 | /* decode public key for storing */ | ||
| 128 | gsize decoded_size; | ||
| 129 | gchar *data = g_base64_decode(public_key, &decoded_size); | ||
| 130 | /* store file */ | 127 | /* store file */ |
| 131 | FILE *pFile = fopen(pem, "wb"); | 128 | FILE *pFile = fopen(pem, "wb"); |
| 132 | fwrite(data, 1, decoded_size, pFile); | 129 | fwrite(public_key.data, 1, public_key.size, pFile); |
| 133 | fclose(pFile); | 130 | fclose(pFile); |
| 134 | g_free(pem); | 131 | g_free(pem); |
| 135 | g_free(data); | ||
| 136 | g_free(device_file); | 132 | g_free(device_file); |
| 137 | return 1; | 133 | return 1; |
| 138 | } | 134 | } |
