def _create_policy_txn(signer, policy_name, rules): entries = [] for rule in rules: rule = rule.split(" ") if rule[0] == "PERMIT_KEY": entry = Policy.Entry(type=Policy.PERMIT_KEY, key=rule[1]) entries.append(entry) elif rule[0] == "DENY_KEY": entry = Policy.Entry(type=Policy.DENY_KEY, key=rule[1]) entries.append(entry) policy = Policy(name=policy_name, entries=entries) payload = IdentityPayload(type=IdentityPayload.POLICY, data=policy.SerializeToString()) policy_address = _policy_to_address(policy_name) header = TransactionHeader( signer_public_key=signer.get_public_key().as_hex(), family_name='sawtooth_identity', family_version='1.0', inputs=[_REQUIRED_INPUT, policy_address], outputs=[policy_address], dependencies=[], payload_sha512=hashlib.sha512(payload.SerializeToString()).hexdigest(), batcher_public_key=signer.get_public_key().as_hex(), nonce=hex(random.randint(0, 2**64))) header_bytes = header.SerializeToString() transaction = Transaction(header=header_bytes, payload=payload.SerializeToString(), header_signature=signer.sign(header_bytes)) return transaction
def _create_role_txn(public_key, signing_key, role_name, policy_name): role = Role(name=role_name, policy_name=policy_name) payload = IdentityPayload(type=IdentityPayload.ROLE, data=role.SerializeToString()) policy_address = _policy_to_address(policy_name) role_address = _role_to_address(role_name) header = TransactionHeader( signer_public_key=public_key, family_name='sawtooth_identity', family_version='1.0', inputs=[_REQUIRED_INPUT, policy_address, role_address], outputs=[role_address], dependencies=[], payload_sha512=hashlib.sha512(payload.SerializeToString()).hexdigest(), batcher_public_key=public_key, nonce=time.time().hex().encode()) header_bytes = header.SerializeToString() signature = signing.sign(header_bytes, signing_key) transaction = Transaction(header=header_bytes, payload=payload.SerializeToString(), header_signature=signature) return transaction
def _create_policy_txn(pubkey, signing_key, policy_name, rules): entries = [] for rule in rules: rule = rule.split(" ") if rule[0] == "PERMIT_KEY": entry = Policy.Entry(type=Policy.PERMIT_KEY, key=rule[1]) entries.append(entry) elif rule[0] == "DENY_KEY": entry = Policy.Entry(type=Policy.DENY_KEY, key=rule[1]) entries.append(entry) policy = Policy(name=policy_name, entries=entries) payload = IdentityPayload(type=IdentityPayload.POLICY, data=policy.SerializeToString()) policy_address = _policy_to_address(policy_name) header = TransactionHeader( signer_pubkey=pubkey, family_name='sawtooth_identity', family_version='1.0', inputs=[policy_address], outputs=[policy_address], dependencies=[], payload_encoding="application/protobuf", payload_sha512=hashlib.sha512( payload.SerializeToString()).hexdigest(), batcher_pubkey=pubkey, nonce=time.time().hex().encode()) header_bytes = header.SerializeToString() signature = signing.sign(header_bytes, signing_key) transaction = Transaction( header=header_bytes, payload=payload.SerializeToString(), header_signature=signature) return transaction