Skip to content

Commit 173be1f

Browse files
joostrijneveldsybrenstuvel
authored andcommitted
Add support for SHA224 for PKCS1 signatures
1 parent b738e66 commit 173be1f

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

doc/compatibility.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Encryption:
1616

1717
Signatures:
1818
PKCS#1 v1.5 using the following hash methods:
19-
MD5, SHA-1, SHA-256, SHA-384, SHA-512
19+
MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512
2020

2121
Private keys:
2222
PKCS#1 v1.5 in PEM and DER format, ASN.1 type RSAPrivateKey

rsa/pkcs1.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
HASH_ASN1 = {
3939
'MD5': b'\x30\x20\x30\x0c\x06\x08\x2a\x86\x48\x86\xf7\x0d\x02\x05\x05\x00\x04\x10',
4040
'SHA-1': b'\x30\x21\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14',
41+
'SHA-224': b'\x30\x2d\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x04\x05\x00\x04\x1c',
4142
'SHA-256': b'\x30\x31\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x01\x05\x00\x04\x20',
4243
'SHA-384': b'\x30\x41\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x02\x05\x00\x04\x30',
4344
'SHA-512': b'\x30\x51\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x03\x05\x00\x04\x40',
@@ -46,6 +47,7 @@
4647
HASH_METHODS = {
4748
'MD5': hashlib.md5,
4849
'SHA-1': hashlib.sha1,
50+
'SHA-224': hashlib.sha224,
4951
'SHA-256': hashlib.sha256,
5052
'SHA-384': hashlib.sha384,
5153
'SHA-512': hashlib.sha512,
@@ -255,7 +257,7 @@ def sign_hash(hash_value, priv_key, hash_method):
255257
None if needing to hash and sign message.
256258
:param priv_key: the :py:class:`rsa.PrivateKey` to sign with
257259
:param hash_method: the hash method used on the message. Use 'MD5', 'SHA-1',
258-
'SHA-256', 'SHA-384' or 'SHA-512'.
260+
'SHA-224', SHA-256', 'SHA-384' or 'SHA-512'.
259261
:return: a message signature block.
260262
:raise OverflowError: if the private key is too small to contain the
261263
requested hash.
@@ -290,7 +292,7 @@ def sign(message, priv_key, hash_method):
290292
file-like object.
291293
:param priv_key: the :py:class:`rsa.PrivateKey` to sign with
292294
:param hash_method: the hash method used on the message. Use 'MD5', 'SHA-1',
293-
'SHA-256', 'SHA-384' or 'SHA-512'.
295+
'SHA-224', SHA-256', 'SHA-384' or 'SHA-512'.
294296
:return: a message signature block.
295297
:raise OverflowError: if the private key is too small to contain the
296298
requested hash.

0 commit comments

Comments
 (0)