Refactor using of crypto functions #1796
|
@ -50,6 +50,8 @@ class singleWorker(StoppableThread):
|
|||
|
||||
def __init__(self):
|
||||
super(singleWorker, self).__init__(name="singleWorker")
|
||||
self.digestAlg = BMConfigParser().safeGet(
|
||||
'bitmessagesettings', 'digestalg', 'sha256')
|
||||
proofofwork.init()
|
||||
|
||||
def stopThread(self):
|
||||
|
@ -368,7 +370,8 @@ class singleWorker(StoppableThread):
|
|||
payload += encodeVarint(BMConfigParser().getint(
|
||||
myAddress, 'payloadlengthextrabytes'))
|
||||
|
||||
signature = highlevelcrypto.sign(payload, privSigningKeyHex)
|
||||
signature = highlevelcrypto.sign(
|
||||
payload, privSigningKeyHex, self.digestAlg)
|
||||
payload += encodeVarint(len(signature))
|
||||
payload += signature
|
||||
|
||||
|
@ -455,8 +458,7 @@ class singleWorker(StoppableThread):
|
|||
).digest()).digest()
|
||||
payload += doubleHashOfAddressData[32:] # the tag
|
||||
signature = highlevelcrypto.sign(
|
||||
payload + dataToEncrypt, privSigningKeyHex
|
||||
)
|
||||
payload + dataToEncrypt, privSigningKeyHex, self.digestAlg)
|
||||
dataToEncrypt += encodeVarint(len(signature))
|
||||
dataToEncrypt += signature
|
||||
|
||||
|
@ -641,7 +643,7 @@ class singleWorker(StoppableThread):
|
|||
dataToSign = payload + dataToEncrypt
|
||||
|
||||
signature = highlevelcrypto.sign(
|
||||
dataToSign, privSigningKeyHex)
|
||||
dataToSign, privSigningKeyHex, self.digestAlg)
|
||||
dataToEncrypt += encodeVarint(len(signature))
|
||||
dataToEncrypt += signature
|
||||
|
||||
|
@ -1223,7 +1225,8 @@ class singleWorker(StoppableThread):
|
|||
payload += fullAckPayload
|
||||
dataToSign = pack('>Q', embeddedTime) + '\x00\x00\x00\x02' + \
|
||||
encodeVarint(1) + encodeVarint(toStreamNumber) + payload
|
||||
signature = highlevelcrypto.sign(dataToSign, privSigningKeyHex)
|
||||
signature = highlevelcrypto.sign(
|
||||
dataToSign, privSigningKeyHex, self.digestAlg)
|
||||
payload += encodeVarint(len(signature))
|
||||
payload += signature
|
||||
|
||||
|
|
|
@ -13,7 +13,6 @@ import pyelliptic
|
|||
from pyelliptic import OpenSSL
|
||||
from pyelliptic import arithmetic as a
|
||||
|
||||
from bmconfigparser import BMConfigParser
|
||||
|
||||
__all__ = ['encrypt', 'makeCryptor', 'pointMult', 'privToPub', 'sign', 'verify']
|
||||
|
||||
|
@ -67,22 +66,17 @@ def decryptFast(msg, cryptor):
|
|||
return cryptor.decrypt(msg)
|
||||
|
||||
|
||||
def sign(msg, hexPrivkey):
|
||||
def sign(msg, hexPrivkey, digestAlg="sha256"):
|
||||
"""
|
||||
Signs with hex private key using SHA1 or SHA256 depending on
|
||||
"digestalg" setting
|
||||
*digestAlg* keyword.
|
||||
"""
|
||||
digestAlg = BMConfigParser().safeGet(
|
||||
'bitmessagesettings', 'digestalg', 'sha256')
|
||||
if digestAlg == "sha1":
|
||||
if digestAlg not in ("sha1", "sha256"):
|
||||
raise ValueError("Unknown digest algorithm %s" % digestAlg)
|
||||
# SHA1, this will eventually be deprecated
|
||||
return makeCryptor(hexPrivkey).sign(
|
||||
msg, digest_alg=OpenSSL.digest_ecdsa_sha1)
|
||||
elif digestAlg == "sha256":
|
||||
# SHA256. Eventually this will become the default
|
||||
return makeCryptor(hexPrivkey).sign(msg, digest_alg=OpenSSL.EVP_sha256)
|
||||
else:
|
||||
raise ValueError("Unknown digest algorithm %s" % digestAlg)
|
||||
msg, digest_alg=OpenSSL.digest_ecdsa_sha1
|
||||
if digestAlg == "sha1" else OpenSSL.EVP_sha256)
|
||||
|
||||
|
||||
def verify(msg, sig, hexPubkey):
|
||||
|
|
Reference in New Issue
Block a user