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