Take the hash ID as an arg.

This commit is contained in:
William Grant
2011-03-09 20:44:12 +11:00
parent bcbe6d19aa
commit c859c87c73
+3 -3
View File
@@ -94,11 +94,11 @@ def _remove(s, t):
assert i >= 0 assert i >= 0
return s[:i] + s[i+len(t):] return s[:i] + s[i+len(t):]
def EMSA_PKCS1_v1_5_encode(digest, modlen): def EMSA_PKCS1_v1_5_encode(digest, modlen, hashid):
dinfo = asn1_build( dinfo = asn1_build(
(SEQUENCE, [ (SEQUENCE, [
(SEQUENCE, [ (SEQUENCE, [
(OBJECT_IDENTIFIER, HASHID_SHA256), (OBJECT_IDENTIFIER, hashid),
(NULL, None), (NULL, None),
]), ]),
(OCTET_STRING, digest), (OCTET_STRING, digest),
@@ -394,7 +394,7 @@ def sign(message, selector, domain, privkey, identity=None, canonicalize=(Simple
print >>debuglog, "sign digest:", " ".join("%02x" % ord(x) for x in d) print >>debuglog, "sign digest:", " ".join("%02x" % ord(x) for x in d)
modlen = len(int2str(pk['modulus'])) modlen = len(int2str(pk['modulus']))
encoded = EMSA_PKCS1_v1_5_encode(d, modlen) encoded = EMSA_PKCS1_v1_5_encode(d, modlen, HASHID_SHA256)
sig2 = int2str(pow(str2int(encoded), pk['privateExponent'], pk['modulus']), modlen) sig2 = int2str(pow(str2int(encoded), pk['privateExponent'], pk['modulus']), modlen)
sig += base64.b64encode(''.join(sig2)) sig += base64.b64encode(''.join(sig2))