Skip to content

Commit e14ddde

Browse files
committed
refactor computations of digest and hexdigest
1 parent 7bc2fd6 commit e14ddde

File tree

1 file changed

+25
-44
lines changed

1 file changed

+25
-44
lines changed

Modules/blake2module.c

Lines changed: 25 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -835,40 +835,42 @@ _blake2_blake2b_update_impl(Blake2Object *self, PyObject *data)
835835
Py_RETURN_NONE;
836836
}
837837

838-
/*[clinic input]
839-
_blake2.blake2b.digest
840-
841-
Return the digest value as a bytes object.
842-
[clinic start generated code]*/
843-
844-
static PyObject *
845-
_blake2_blake2b_digest_impl(Blake2Object *self)
846-
/*[clinic end generated code: output=31ab8ad477f4a2f7 input=7d21659e9c5fff02]*/
838+
static uint8_t
839+
blake2_blake2b_compute_digest(Blake2Object *self, uint8_t *digest)
847840
{
848-
uint8_t digest[HACL_HASH_BLAKE2B_OUT_BYTES];
849-
850-
ENTER_HASHLIB(self);
851-
uint8_t digest_length = 0;
852841
switch (self->impl) {
853842
#if HACL_CAN_COMPILE_SIMD256
854843
case Blake2b_256:
855-
digest_length = Hacl_Hash_Blake2b_Simd256_digest(self->blake2b_256_state, digest);
856-
break;
844+
return Hacl_Hash_Blake2b_Simd256_digest(
845+
self->blake2b_256_state, digest);
857846
#endif
858847
#if HACL_CAN_COMPILE_SIMD128
859848
case Blake2s_128:
860-
digest_length = Hacl_Hash_Blake2s_Simd128_digest(self->blake2s_128_state, digest);
861-
break;
849+
return Hacl_Hash_Blake2s_Simd128_digest(
850+
self->blake2s_128_state, digest);
862851
#endif
863852
case Blake2b:
864-
digest_length = Hacl_Hash_Blake2b_digest(self->blake2b_state, digest);
865-
break;
853+
return Hacl_Hash_Blake2b_digest(self->blake2b_state, digest);
866854
case Blake2s:
867-
digest_length = Hacl_Hash_Blake2s_digest(self->blake2s_state, digest);
868-
break;
855+
return Hacl_Hash_Blake2s_digest(self->blake2s_state, digest);
869856
default:
870857
Py_UNREACHABLE();
871858
}
859+
}
860+
861+
/*[clinic input]
862+
_blake2.blake2b.digest
863+
864+
Return the digest value as a bytes object.
865+
[clinic start generated code]*/
866+
867+
static PyObject *
868+
_blake2_blake2b_digest_impl(Blake2Object *self)
869+
/*[clinic end generated code: output=31ab8ad477f4a2f7 input=7d21659e9c5fff02]*/
870+
{
871+
uint8_t digest_length = 0, digest[HACL_HASH_BLAKE2B_OUT_BYTES];
872+
ENTER_HASHLIB(self);
873+
digest_length = blake2_blake2b_compute_digest(self, digest);
872874
LEAVE_HASHLIB(self);
873875
return PyBytes_FromStringAndSize((const char *)digest, digest_length);
874876
}
@@ -883,30 +885,9 @@ static PyObject *
883885
_blake2_blake2b_hexdigest_impl(Blake2Object *self)
884886
/*[clinic end generated code: output=5ef54b138db6610a input=76930f6946351f56]*/
885887
{
886-
uint8_t digest[HACL_HASH_BLAKE2B_OUT_BYTES];
887-
888+
uint8_t digest_length = 0, digest[HACL_HASH_BLAKE2B_OUT_BYTES];
888889
ENTER_HASHLIB(self);
889-
uint8_t digest_length = 0;
890-
switch (self->impl) {
891-
#if HACL_CAN_COMPILE_SIMD256
892-
case Blake2b_256:
893-
digest_length = Hacl_Hash_Blake2b_Simd256_digest(self->blake2b_256_state, digest);
894-
break;
895-
#endif
896-
#if HACL_CAN_COMPILE_SIMD128
897-
case Blake2s_128:
898-
digest_length = Hacl_Hash_Blake2s_Simd128_digest(self->blake2s_128_state, digest);
899-
break;
900-
#endif
901-
case Blake2b:
902-
digest_length = Hacl_Hash_Blake2b_digest(self->blake2b_state, digest);
903-
break;
904-
case Blake2s:
905-
digest_length = Hacl_Hash_Blake2s_digest(self->blake2s_state, digest);
906-
break;
907-
default:
908-
Py_UNREACHABLE();
909-
}
890+
digest_length = blake2_blake2b_compute_digest(self, digest);
910891
LEAVE_HASHLIB(self);
911892
return _Py_strhex((const char *)digest, digest_length);
912893
}

0 commit comments

Comments
 (0)