def sign(self, msg): if self.hash_alg.digest_size * 8 > self.prepared_key.curve.key_size: raise TypeError("this curve (%s) is too short " "for your digest (%d)" % (self.prepared_key.curve.name, 8*self.hash_alg.digest_size)) signature = self.prepared_key.sign(msg, ec.ECDSA(self.hash_alg())) order = (2 ** self.prepared_key.curve.key_size) - 1 return sigencode_string(*sigdecode_der(signature, order), order=order)
def ecdsa_verify(pk, sig, msg): """Verify ecdsa""" r, s = sig sigg = util.sigencode_string(r, s, order) return pk.verify(sigg, msg)
def sig_der_to_string(sig, order): r, s = sigdecode_der(sig, order) return sigencode_string(r, s, order)