def sign_channel_config(self, config, to_string=True): """This method uses the client instance's current signing identity to sign over the configuration bytes passed in. Args: config: The configuration update in bytes form. to_string: Whether to convert the result to string Returns: config_signature (common_pb2.ConfigSignature): The signature of the current user of the config bytes. """ sign_channel_context = self.tx_context proto_signature_header = common_pb2.SignatureHeader() proto_signature_header.creator = sign_channel_context.identity proto_signature_header.nonce = sign_channel_context.nonce proto_signature_header_bytes = \ proto_signature_header.SerializeToString() signing_bytes = proto_signature_header_bytes + config signature_bytes = sign_channel_context.sign(signing_bytes) proto_config_signature = configtx_pb2.ConfigSignature() proto_config_signature.signature_header = proto_signature_header_bytes proto_config_signature.signature = signature_bytes if to_string: return proto_config_signature.SerializeToString() else: return proto_config_signature
def string_to_signature(string_signatures): """Check if signatures are already in protobuf format. :param string_signatures: An list of protobuf ConfigSignatures either represented as or serialized as byte strings. :type string_signatures: list :returns: List of protobuf ConfigSignatures. :rtype: list """ signatures = [] for signature in string_signatures: if signature and hasattr(signature, 'header') \ and hasattr(signature, 'signature'): _logger.debug('_string_to_signature - signature is protobuf') config_signature = signature else: _logger.debug('_string_to_signature - signature is string') config_signature = configtx_pb2.ConfigSignature() config_signature.ParseFromString(signature) signatures.append(config_signature) return signatures