def echo_attribute_block(attribute, signatures_status=None): """Echo a console block representing basic data about the attribute.""" if signatures_status is None and 'signatures_status' in attribute: signatures_status = attribute['signatures_status'] # Encode attribute identifier as hex if it contains non-ASCII characters. #if not all(ord(c) < 128 for c in attribute['identifier']): # attribute['identifier'] = '0x' + attribute['identifier'].rstrip('\x00').encode('hex') # Decode all before echo cos inside function click give error #int.from_bytes( bytes, byteorder, *, signed=False ) attribute['attributeID'] = str(attribute['attributeID']) attribute['identifier'] = str( bytes(attribute['identifier']).decode('utf-8')) click.echo("Attribute ID #" + attribute['attributeID'] + ':') click.echo("\tType: " + attribute['attributeType']) click.echo("\tOwner: " + attribute['owner'] + (" [trusted]" if userconfig.is_trusted(attribute['owner'] ) else " [untrusted]")) click.echo("\tIdentifier: " + attribute['identifier']) if signatures_status is not None: valid_signatures = signatures_status['status']['valid'] click.echo("\t[" + str(valid_signatures) + " valid signature" + ("]" if valid_signatures == 1 else "s]"))
def echo_attribute_block(attribute, signatures_status=None): """Echo a console block representing basic data about the attribute.""" if signatures_status is None and 'signatures_status' in attribute: signatures_status = attribute['signatures_status'] # Encode attribute identifier as hex if it contains non-ASCII characters. if 'identifer' in attribute and not all( ord(c) < 128 for c in attribute['identifier']): attribute['identifier'] = '0x' + attribute['identifier'].rstrip( '\x00').encode('hex') if 'attributeID' in attribute: click.echo("Attribute ID #" + str(attribute['attributeID']) + ':') if 'blindedAttributeID' in attribute: click.echo("Blinded attribute ID #" + str(attribute['blindedAttributeID']) + ':') if 'signingAttributeID' in attribute: click.echo("\tSigning attribute ID: " + str(attribute['signingAttributeID']) + '.') click.echo("\tType: " + attribute['attributeType']) click.echo("\tOwner: " + attribute['owner'] + (" [trusted]" if userconfig.is_trusted(attribute['owner'] ) else " [untrusted]")) if 'identifer' in attribute: click.echo("\tIdentifier: " + attribute['identifier']) if signatures_status is not None: valid_signatures = signatures_status['status']['valid'] click.echo("\t[" + str(valid_signatures) + " valid signature" + ("]" if valid_signatures == 1 else "s]"))
def untrust(address): """Untrust an Ethereum address.""" click.echo() if not userconfig.is_trusted(address): click.echo("Address " + address + " is already not trusted.") else: userconfig.untrust(address) click.echo("Address " + address + " untrusted.")
def trust(address): """Trust an Ethereum address.""" click.echo() if userconfig.is_trusted(address): click.echo("Address " + address + " is already trusted.") else: userconfig.trust(address) click.echo("Address " + address + " trusted.")
def retrieve(attributeid): """Retrieve an attribute.""" events = Events() attribute = events.retrieve_attribute(attributeid) if attribute is None: click.echo("No such attribute.") return click.echo() echo_attribute_block(attribute) click.echo() if 'proof_valid' in attribute: click.echo("Proof status for attribute ID #" + str(attribute['attributeID']) + ':') if attribute['proof_valid'] is None: click.echo("\tUnknown") elif attribute['proof_valid']: click.echo("\tValid") else: click.echo("\tINVALID") click.echo() click.echo("Signatures for attribute ID #" + str(attribute['attributeID']) + ':') for signature in attribute['signatures_status']['signatures']: sig_line = "\t#" + str(signature['signatureID']) if signature['revocation']: sig_line += " [revoked]" elif signature['expired']: sig_line += " [expired]" elif signature['valid']: sig_line += " [valid]" sig_line += " by " + signature['signer'] sig_line += (" [trusted]" if userconfig.is_trusted(attribute['owner']) else " [untrusted]") click.echo(sig_line) click.echo() click.echo("--ATTRIBUTE DATA:") click.echo(attribute['data'])
def echo_attribute_block(attribute, signatures_status=None): """Echo a console block representing basic data about the attribute.""" if signatures_status is None and 'signatures_status' in attribute: signatures_status = attribute['signatures_status'] # Encode attribute identifier as hex if it contains non-ASCII characters. if not all(ord(c) < 128 for c in attribute['identifier']): attribute['identifier'] = '0x' + attribute['identifier'].rstrip('\x00').encode('hex') click.echo("Attribute ID #" + str(attribute['attributeID']) + ':') click.echo("\tType: " + attribute['attributeType']) click.echo("\tOwner: " + attribute['owner'] + (" [trusted]" if userconfig.is_trusted(attribute['owner']) else " [untrusted]")) click.echo("\tIdentifier: " + attribute['identifier']) if signatures_status is not None: valid_signatures = signatures_status['status']['valid'] click.echo("\t[" + str(valid_signatures) + " valid signature" + ("]" if valid_signatures == 1 else "s]"))