summaryrefslogtreecommitdiff
path: root/src/rexmpp_tls.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/rexmpp_tls.c')
-rw-r--r--src/rexmpp_tls.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/src/rexmpp_tls.c b/src/rexmpp_tls.c
index 3d77927..c8decc0 100644
--- a/src/rexmpp_tls.c
+++ b/src/rexmpp_tls.c
@@ -9,7 +9,6 @@
#include <syslog.h>
#include <string.h>
#include <stdlib.h>
-#include <gcrypt.h>
#include "config.h"
@@ -26,6 +25,7 @@
#endif
#include "rexmpp.h"
+#include "rexmpp_digest.h"
#include "rexmpp_tls.h"
rexmpp_tls_t *rexmpp_jingle_component_dtls(void *p);
@@ -814,11 +814,9 @@ int rexmpp_tls_my_fp (rexmpp_t *s,
char *fp_str,
size_t *fp_size)
{
- gcry_md_hd_t hd;
- gcry_error_t err = gcry_md_open(&hd, GCRY_MD_SHA256, 0);
- if (err != GPG_ERR_NO_ERROR) {
- rexmpp_log(s, LOG_ERR, "Failed to create an MD object: %s",
- gcry_strerror(err));
+ rexmpp_digest_t digest_ctx;
+ if (rexmpp_digest_init(&digest_ctx, REXMPP_DIGEST_SHA256)) {
+ rexmpp_log(s, LOG_ERR, "Failed to initialize a digest object");
return -1;
}
@@ -834,22 +832,19 @@ int rexmpp_tls_my_fp (rexmpp_t *s,
unsigned char *buf[4096];
size_t len = fread(buf, 1, 4096, fh);
while (len > 0) {
- gcry_md_write(hd, buf, len);
+ rexmpp_digest_update(&digest_ctx, buf, len);
len = fread(buf, 1, 4096, fh);
}
- gcry_md_final(hd);
fclose(fh);
- *fp_size = gcry_md_get_algo_dlen(GCRY_MD_SHA256);
-
- memcpy(raw_fp, gcry_md_read(hd, GCRY_MD_SHA256), *fp_size);
+ *fp_size = rexmpp_digest_len(REXMPP_DIGEST_SHA256);
+ rexmpp_digest_finish(&digest_ctx, raw_fp, *fp_size);
size_t i;
for (i = 0; i < (*fp_size); i++) {
snprintf(fp_str + i * 3, 4, "%02X:", raw_fp[i] & 0xFF);
}
fp_str[(*fp_size) * 3 - 1] = 0;
- gcry_md_close(hd);
return 0;
}