def sign_stream_claim(self, claim, claim_address, cert_claim_id): validate_claim_id(cert_claim_id) if not base_decode(claim_address, 58): raise Exception("Invalid claim address") to_sign = "%s%s%s" % (base_decode(claim_address, 58), claim.serialized_no_signature, cert_claim_id.decode('hex')) digest = self.HASHFUNC(to_sign).digest() if not isinstance(self.private_key, ecdsa.SigningKey): raise Exception("Not given a signing key") sig_dict = { "version": V_0_0_1, "signatureType": self.CURVE_NAME, "signature": self.private_key.sign_digest_deterministic(digest, hashfunc=self.HASHFUNC), "certificateId": cert_claim_id.decode('hex') } msg = { "version": V_0_0_1, "stream": decode_b64_fields(claim.protobuf_dict)['stream'], "publisherSignature": sig_dict } return Claim.load(msg)
def sign_stream_claim(self, claim, claim_address, cert_claim_id): validate_claim_id(cert_claim_id) decoded_addr = decode_address(claim_address) to_sign = bytearray() to_sign.extend(decoded_addr) to_sign.extend(claim.serialized_no_signature) to_sign.extend(binascii.unhexlify(cert_claim_id)) digest = self.HASHFUNC(to_sign).digest() if not isinstance(self.private_key, ecdsa.SigningKey): raise Exception("Not given a signing key") sig_dict = { "version": V_0_0_1, "signatureType": self.CURVE_NAME, "signature": self.private_key.sign_digest_deterministic(digest, hashfunc=self.HASHFUNC), "certificateId": binascii.unhexlify(cert_claim_id) } msg = { "version": V_0_0_1, "stream": decode_b64_fields(claim.protobuf_dict)['stream'], "publisherSignature": sig_dict } return Claim.load(msg)
def certificate(self): certificate_claim = { VERSION: V_0_0_1, CLAIM_TYPE: CERTIFICATE_TYPE, CLAIM_TYPES[CERTIFICATE_TYPE]: Certificate.load_from_key_obj(self.public_key, self.CURVE_NAME) } return Claim.load(certificate_claim)
def protobuf(self): """Claim message object""" return Claim.load(self)