From 2bba78bf87b2d3d3558f862b8e204b3c889ffbd6 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 7 Oct 2016 13:41:25 +0200 Subject: [PATCH] fix pbkdf2.key() method --- extmod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/extmod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h b/extmod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h index d9525b736..fbf383b71 100644 --- a/extmod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h +++ b/extmod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h @@ -87,12 +87,18 @@ STATIC mp_obj_t mod_TrezorCrypto_Pbkdf2_key(mp_obj_t self) { mp_obj_Pbkdf2_t *o = MP_OBJ_TO_PTR(self); vstr_t vstr; if (o->prf == 256) { + PBKDF2_HMAC_SHA256_CTX ctx; + memcpy(&ctx, &(o->ctx256), sizeof(PBKDF2_HMAC_SHA256_CTX)); vstr_init_len(&vstr, SHA256_DIGEST_LENGTH); - memcpy(vstr.buf, o->ctx256.f, SHA256_DIGEST_LENGTH); + pbkdf2_hmac_sha256_Final(&ctx, (uint8_t *)vstr.buf); + memset(&ctx, 0, sizeof(PBKDF2_HMAC_SHA256_CTX)); } if (o->prf == 512) { + PBKDF2_HMAC_SHA512_CTX ctx; + memcpy(&ctx, &(o->ctx512), sizeof(PBKDF2_HMAC_SHA512_CTX)); vstr_init_len(&vstr, SHA512_DIGEST_LENGTH); - memcpy(vstr.buf, o->ctx512.f, SHA512_DIGEST_LENGTH); + pbkdf2_hmac_sha512_Final(&ctx, (uint8_t *)vstr.buf); + memset(&ctx, 0, sizeof(PBKDF2_HMAC_SHA512_CTX)); } return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr); }