示例#1
0
    def create(cls) -> 'Member':
        """
        Creates new member with a signing (private) key
        """
        verify_key_bytes, signing_key_bytes = crypto_sign_keypair()
        verify_key = base64_encode(verify_key_bytes).decode("UTF-8")
        signing_key = base64_encode(signing_key_bytes).decode("UTF-8")
        new_member = Member(verify_key, signing_key)
        new_member.name = "Me"

        bptc.logger.info("Created new Member: " + str(new_member))

        return new_member
示例#2
0
    def __init__(self, identifier, seed=None):

        """
        Initialize the signer with an identifier and a seed.

        :param identifier: some identifier that directly or indirectly references this client
        :param seed: the seed used to generate a signing key.
        """

        self.identifier = identifier

        # should be stored securely/privately
        self.seed = seed if seed else randombytes(32)

        # generates key pair based on seed
        self.sk = SigningKey(seed=self.seed)

        # helper for signing
        self.naclSigner = NaclSigner(self.sk)

        # this is the public key used to verify signatures (securely shared
        # before-hand with recipient)
        self.verkey = self.naclSigner.verhex

        self.verstr = base64_encode(self.naclSigner.keyraw).decode('utf-8')
def hex_to_base64(string: str) -> str:
    """
    Compresses a given string for web sharing

    :param string: str
    :return: str
    """
    return decode(base64_encode(hex_decode(string)))
示例#4
0
 def sign(self, msg: Mapping) -> Mapping:
     """
     Return a signature for the given message.
     """
     ser = serializeForSig(msg)
     bsig = self.naclSigner.signature(ser)
     b64sig = base64_encode(bsig)
     sig = b64sig.decode('utf-8')
     return sig
示例#5
0
文件: signer.py 项目: tomergi/plenum
 def sign(self, msg: Dict) -> Dict:
     """
     Return a signature for the given message.
     """
     ser = serializeForSig(msg)
     bsig = self.naclSigner.signature(ser)
     b64sig = base64_encode(bsig)
     sig = b64sig.decode('utf-8')
     return sig
示例#6
0
 def sign(self, signing_key) -> None:
     """
     Signs an event with the given signing key, setting its signature
     :param signing_key: The signing key to use
     :return: None
     """
     signing_key_byte = base64_decode(signing_key.encode("UTF-8"))
     self.signature = base64_encode(
         crypto_sign(self.body.encode("UTF-8"),
                     signing_key_byte)).decode("UTF-8")
示例#7
0
    def __init__(self,
                 verify_key,
                 data: List[Transaction],
                 parents: Parents,
                 time=None):
        # Immutable body of Event
        self.data = data
        self.parents = parents
        self.time = datetime.datetime.now().isoformat(
        ) if time is None else time
        self.verify_key = verify_key
        # End of immutable body

        # Compute Event hash and ID
        self.__id = base64_encode(crypto_hash_sha512(
            self.body.encode("UTF-8"))).decode("UTF-8")

        # Event is always created with height 0
        # The real height is determined once the event is added to the hashgraph
        self.height = 0

        # assigned round number of each event
        self.round = 0

        # {event-hash => bool}
        self.votes = dict()

        # The signature is empty at the beginning - use sign() to sign the event once it is finished
        self.signature = None

        # Whether this event is a witness
        self.is_witness = False

        # Whether this event is famous
        self.is_famous = Fame.UNDECIDED

        # Ordering info
        self.round_received = None
        self.consensus_time = None

        # A cache for event visibility
        self.can_see_cache = dict()

        # time when the client learns about the confirmation
        self.confirmation_time = None
示例#8
0
文件: signer.py 项目: tomergi/plenum
    def __init__(self, identifier=None, seed=None):
        """
        Initialize the signer with an identifier and a seed.

        :param identifier: some identifier that directly or indirectly references this client
        :param seed: the seed used to generate a signing key.
        """

        # should be stored securely/privately
        self.seed = seed if seed else randombytes(32)

        # generates key pair based on seed
        self.sk = SigningKey(seed=self.seed)

        # helper for signing
        self.naclSigner = NaclSigner(self.sk)

        # this is the public key used to verify signatures (securely shared
        # before-hand with recipient)
        self.verkey = self.naclSigner.verhex

        self.verstr = base64_encode(self.naclSigner.verraw).decode('utf-8')

        self._identifier = identifier or self.verstr