Merge "token signing support alternative message digest"
This commit is contained in:
@@ -38,6 +38,7 @@ PKI_ASN1_PREFIX = 'MII'
|
||||
PKIZ_PREFIX = 'PKIZ_'
|
||||
PKIZ_CMS_FORM = 'DER'
|
||||
PKI_ASN1_FORM = 'PEM'
|
||||
DEFAULT_TOKEN_DIGEST_ALGORITHM = 'sha256'
|
||||
|
||||
|
||||
# The openssl cms command exits with these status codes.
|
||||
@@ -198,11 +199,13 @@ def is_pkiz(token_text):
|
||||
def pkiz_sign(text,
|
||||
signing_cert_file_name,
|
||||
signing_key_file_name,
|
||||
compression_level=6):
|
||||
compression_level=6,
|
||||
message_digest=DEFAULT_TOKEN_DIGEST_ALGORITHM):
|
||||
signed = cms_sign_data(text,
|
||||
signing_cert_file_name,
|
||||
signing_key_file_name,
|
||||
PKIZ_CMS_FORM)
|
||||
PKIZ_CMS_FORM,
|
||||
message_digest=message_digest)
|
||||
|
||||
compressed = zlib.compress(signed, compression_level)
|
||||
encoded = PKIZ_PREFIX + base64.urlsafe_b64encode(
|
||||
@@ -297,13 +300,15 @@ def is_ans1_token(token):
|
||||
return is_asn1_token(token)
|
||||
|
||||
|
||||
def cms_sign_text(data_to_sign, signing_cert_file_name, signing_key_file_name):
|
||||
def cms_sign_text(data_to_sign, signing_cert_file_name, signing_key_file_name,
|
||||
message_digest=DEFAULT_TOKEN_DIGEST_ALGORITHM):
|
||||
return cms_sign_data(data_to_sign, signing_cert_file_name,
|
||||
signing_key_file_name)
|
||||
signing_key_file_name, message_digest=message_digest)
|
||||
|
||||
|
||||
def cms_sign_data(data_to_sign, signing_cert_file_name, signing_key_file_name,
|
||||
outform=PKI_ASN1_FORM):
|
||||
outform=PKI_ASN1_FORM,
|
||||
message_digest=DEFAULT_TOKEN_DIGEST_ALGORITHM):
|
||||
"""Uses OpenSSL to sign a document.
|
||||
|
||||
Produces a Base64 encoding of a DER formatted CMS Document
|
||||
@@ -316,7 +321,7 @@ def cms_sign_data(data_to_sign, signing_cert_file_name, signing_key_file_name,
|
||||
the data
|
||||
:param outform: Format for the signed document PKIZ_CMS_FORM or
|
||||
PKI_ASN1_FORM
|
||||
|
||||
:param message_digest: Digest algorithm to use when signing or resigning
|
||||
|
||||
"""
|
||||
_ensure_subprocess()
|
||||
@@ -330,7 +335,7 @@ def cms_sign_data(data_to_sign, signing_cert_file_name, signing_key_file_name,
|
||||
'-outform', 'PEM',
|
||||
'-nosmimecap', '-nodetach',
|
||||
'-nocerts', '-noattr',
|
||||
'-md', 'sha256', ],
|
||||
'-md', message_digest, ],
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
@@ -353,8 +358,10 @@ def cms_sign_data(data_to_sign, signing_cert_file_name, signing_key_file_name,
|
||||
return output
|
||||
|
||||
|
||||
def cms_sign_token(text, signing_cert_file_name, signing_key_file_name):
|
||||
output = cms_sign_data(text, signing_cert_file_name, signing_key_file_name)
|
||||
def cms_sign_token(text, signing_cert_file_name, signing_key_file_name,
|
||||
message_digest=DEFAULT_TOKEN_DIGEST_ALGORITHM):
|
||||
output = cms_sign_data(text, signing_cert_file_name, signing_key_file_name,
|
||||
message_digest=message_digest)
|
||||
return cms_to_token(output)
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user