コード例 #1
0
ファイル: utils_test.py プロジェクト: RTechSoft/fabric-sdk-py
    def test_build_header(self):
        timestamp = utils.current_timestamp()

        client = Client()
        client.state_store = FileKeyValueStore(self.kv_store_path)

        orderer_org_admin = get_orderer_org_admin(client)
        orderer_org_admin_tx_context = \
            TXContext(orderer_org_admin, Ecies(), {})
        client.tx_context = orderer_org_admin_tx_context

        orderer_org_admin_serialized = utils.create_serialized_identity(
            orderer_org_admin)
        serialized_identity = identities_pb2.SerializedIdentity()
        serialized_identity.ParseFromString(orderer_org_admin_serialized)

        proto_channel_header = utils.build_channel_header(
            common_pb2.HeaderType.Value('CONFIG_UPDATE'),
            orderer_org_admin_tx_context.tx_id,
            self.channel_id,
            timestamp
        )

        channel_header = utils.build_header(
            orderer_org_admin_tx_context.identity,
            proto_channel_header,
            orderer_org_admin_tx_context.nonce
        )
        self.assertIsInstance(channel_header, common_pb2.Header)
コード例 #2
0
ファイル: identity.py プロジェクト: mffrench/fabric-sdk-py
    def serialize(self):
        """Serialize this identity to a binary string.

        Returns:
            A binary string representation of this identity.
        """
        serialized_identity = identities_pb2.SerializedIdentity()
        serialized_identity.Mspid = self._msp.identity
        serialized_identity.IdBytes = self._certificate
        return serialized_identity.SerializeToString()
コード例 #3
0
    def test_create_serialized_identity(self):
        client = Client('test/fixtures/network.json')

        orderer_org_admin = get_orderer_org_user(
            state_store=client.state_store)
        orderer_org_admin_serialized = utils.create_serialized_identity(
            orderer_org_admin)
        serialized_identity = identities_pb2.SerializedIdentity()
        serialized_identity.ParseFromString(orderer_org_admin_serialized)

        self.assertEqual(serialized_identity.mspid, self.orderer_org_mspid)
コード例 #4
0
    def test_create_serialized_identity(self):
        client = Client()
        client.state_store = FileKeyValueStore(self.kv_store_path)

        orderer_org_admin = get_orderer_org_admin(client)
        orderer_org_admin_serialized = utils.create_serialized_identity(
            orderer_org_admin)
        serialized_identity = identities_pb2.SerializedIdentity()
        serialized_identity.ParseFromString(orderer_org_admin_serialized)

        self.assertEqual(serialized_identity.mspid, self.orderer_org_mspid)
コード例 #5
0
def create_serialized_identity(user):
    """Create serialized identity from user.

    :param user: The user object that should be serialized.
    :type user: user object
    :return: Protobuf SerializedIdentity of
            the given user object.
    :rtype: serialized_identity
    """
    serialized_identity = identities_pb2.SerializedIdentity()
    serialized_identity.mspid = user.msp_id
    serialized_identity.id_bytes = user.enrollment.cert
    return serialized_identity.SerializeToString()
コード例 #6
0
def decode_fabric_peers_info(peers_info_bytes):
    """Decodes Fabric Peers Information

    Args:
        peer_bytes (str): Serialized information about Peer

    Returns: Deserialized Peers information and certs.
    """
    peers_info = []

    for peer_info_bytes in peers_info_bytes:
        peer = {}

        # identity
        peer_identity = identities_pb2.SerializedIdentity()
        peer_identity.ParseFromString(peer_info_bytes.identity)
        if hasattr(peer_identity, 'mspid'):
            peer['mspid'] = peer_identity.mspid
        if hasattr(peer_identity, 'id_bytes'):
            peer['id_bytes'] = peer_identity.id_bytes.decode()

        # state info
        peer_state_info = message_pb2.GossipMessage()
        peer_state_info.ParseFromString(peer_info_bytes.state_info.payload)

        if peer_state_info.state_info.properties:

            if hasattr(peer_state_info.state_info.properties, 'ledger_height'):
                peer['ledger_height'] = int(
                    peer_state_info.state_info.properties.ledger_height)

            if hasattr(peer_state_info.state_info.properties, 'chaincodes'):
                peer['chaincodes'] = []
                if peer_state_info.state_info.properties.chaincodes:
                    ccs = peer_state_info.state_info.properties.chaincodes
                    for chaincode in ccs:
                        cc = {}
                        cc['name'] = chaincode.name
                        cc['version'] = chaincode.version
                        peer['chaincodes'].append(cc)

        # membership info
        peer_membership_info = message_pb2.GossipMessage()
        membership_payload = peer_info_bytes.membership_info.payload
        peer_membership_info.ParseFromString(membership_payload)

        peer['endpoint'] = peer_membership_info.alive_msg.membership.endpoint

        peers_info.append(peer)

    return sorted(peers_info, key=lambda peer: peer['endpoint'])
コード例 #7
0
def create_serialized_identity(user):
    """Create serialized identity from user.

    Args:
        user (user object): The user object that should be serialized.

    Returns:
        serialized_identity: Protobuf SerializedIdentity of
            the given user object.

    """
    serialized_identity = identities_pb2.SerializedIdentity()
    serialized_identity.mspid = user.msp_id
    serialized_identity.id_bytes = user.enrollment.cert
    return serialized_identity.SerializeToString()
コード例 #8
0
def decode_identity(id_bytes):
    """Decodes identity

    :param id_bytes: byte of identity
    :return: deserialized identity
    """
    identity = {}
    try:
        proto_identity = identities_pb2.SerializedIdentity()
        proto_identity.ParseFromString(id_bytes)
        identity['mspid'] = proto_identity.mspid
        identity['id_bytes'] = proto_identity.id_bytes.decode()
    except Exception as e:
        raise ValueError("BlockDecoder :: decode_identiy failed", e)
    return identity
コード例 #9
0
    def _process_peers(self, q_peers):
        peers = []
        for q_peer in q_peers:
            peer = {}

            # IDENTITY
            q_identity = identities_pb2.SerializedIdentity()
            q_identity.ParseFromString(q_peer.identity)
            peer['mspid'] = q_identity.mspid

            # MEMBERSHIP
            q_membership_msg = message_pb2.GossipMessage()
            q_membership_msg.ParseFromString(q_peer.membership_info.payload)
            peer['endpoint'] = q_membership_msg.alive_msg.membership.endpoint

            # STATE
            if hasattr(q_peer, 'state_info'):
                message_s = message_pb2.GossipMessage()
                message_s.ParseFromString(q_peer.state_info.payload)
                try:
                    peer['ledger_height'] = int(
                        message_s.state_info.properties.ledger_height)
                except AttributeError as e:
                    peer['ledger_height'] = 0
                    _logger.debug('missing ledger_height: {}'.format(e))

                peer['chaincodes'] = []
                for index in message_s.state_info.properties.chaincodes:
                    q_cc = message_s.info.properties.chaincodes[index]
                    cc = {}
                    cc['name'] = q_cc.name
                    cc['version'] = q_cc.version
                    peer['chaincodes'].append(cc)

            peers.append(peer)

        return sorted(peers, key=lambda k: k['endpoint'])
コード例 #10
0
def create_serialized_identity(user):
    """ Create serialized identity from user"""
    serialized_identity = identities_pb2.SerializedIdentity()
    serialized_identity.mspid = user.msp_id
    serialized_identity.id_bytes = user.enrollment.cert
    return serialized_identity.SerializeToString()