New submission from Christian Heimes <li...@cheimes.de>:

Python's hmac module provides a pure Python based implementation on top of the 
hashlib module. OpenSSL offers a dedicated HMAC implementation that has a 
couple of benefits over pure Python implementation:

- OpenSSL HMAC is slightly faster and requires slightly less memory and 
allocations.
- Python's HMAC only works for RFC 2104 HMACs with digests like MD5, SHA1, 
SHA2, and SHA3. Other digests types like Blake2 use a completely different 
style of HMAC. OpenSSL's HMAC API works for all sorts of digests. OpenSSL 3.0.0 
also supports Blake2 MAC with its standard API.
- OpenSSL HMAC is standard and compliance conform. Certain compliance 
restrictions require that MAC and keyed hashing is implemented in a certain 
way. Our HMAC code is considered a custom implementation of a crypto primitive 
and in violation of compliance rules.

For 3.9 I plan to deprecate hmac.HMAC.digest_con, hmac.HMAC.inner, and 
hmac.HMAC.outer attributes. They are implementation specific details any way. 
I'm also going to provide a _hashlib.hmac_new() function so we can test the new 
code.

For 3.10 I'll be switching over to _haslib.hmac_new() when the digestmod is a 
string or a callable that returns _hashlib.HASH code.

----------
assignee: christian.heimes
components: Extension Modules
messages: 369050
nosy: christian.heimes, gregory.p.smith
priority: normal
severity: normal
stage: patch review
status: open
title: Use OpenSSL's HMAC API
type: enhancement
versions: Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue40645>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to