X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fprotocol_auth.c;h=e667baf0bc43281888dd21f8a03ebcb0136f45a9;hb=70b9e071d137c4c9c9edc4e916fcddfed39aea7d;hp=1255ff0862b68ebd286d482fc51d1329ab656d46;hpb=980d8c0ec42ca45fad1b01444d2bb27bbb29dd68;p=meshlink diff --git a/src/protocol_auth.c b/src/protocol_auth.c index 1255ff08..e667baf0 100644 --- a/src/protocol_auth.c +++ b/src/protocol_auth.c @@ -37,6 +37,7 @@ #include "sptps.h" #include "utils.h" #include "xalloc.h" +#include "ed25519/sha512.h" ecdsa_t *invitation_key = NULL; @@ -182,17 +183,14 @@ static bool receive_invitation_sptps(void *handle, uint8_t type, const char *dat return false; // Recover the filename from the cookie and the key - digest_t *digest = digest_open_by_name("sha256", 18); - if(!digest) - abort(); char *fingerprint = ecdsa_get_base64_public_key(invitation_key); + char hash[64]; char hashbuf[18 + strlen(fingerprint)]; char cookie[25]; memcpy(hashbuf, data, 18); memcpy(hashbuf + 18, fingerprint, sizeof hashbuf - 18); - digest_create(digest, hashbuf, sizeof hashbuf, cookie); - b64encode_urlsafe(cookie, cookie, 18); - digest_close(digest); + sha512(hashbuf, sizeof hashbuf, hash); + b64encode_urlsafe(hash, cookie, 18); free(fingerprint); char filename[PATH_MAX], usedname[PATH_MAX];