Extract parse_pem_private_key, and test it and parse_public_key.

This commit is contained in:
William Grant
2011-03-19 16:23:48 +11:00
parent d79c856ef0
commit 2ee087da01
3 changed files with 56 additions and 11 deletions
+19
View File
@@ -28,6 +28,9 @@ __all__ = [
'UnparsableKeyError',
]
import base64
import re
from dkim.asn1 import (
ASN1FormatError,
asn1_build,
@@ -127,6 +130,22 @@ def parse_private_key(data):
return pk
def parse_pem_private_key(data):
"""Parse a PEM private key.
@param data: RFC3447 RSAPrivateKey in PEM format.
@return: RSA private key
"""
m = re.search("--\n(.*?)\n--", data, re.DOTALL)
if m is None:
raise UnparsableKeyError("Private key not found")
try:
pkdata = base64.b64decode(m.group(1))
except TypeError, e:
raise UnparsableKeyError(str(e))
return parse_private_key(pkdata)
def EMSA_PKCS1_v1_5_encode(digest, mlen, hashid):
"""Encode a digest with RFC3447 EMSA-PKCS1-v1_5.