Java源码示例:org.hyperledger.fabric.protos.common.Common.ChannelHeader

示例1
private void populateChannelHeader() {
    Header header = null;
    if(_header != null) {
        header = _header.get();
    }
    if(null == header) {
        populateHeader();
        header = _header.get();
    }
    ChannelHeader channelHeader;
    try {
        channelHeader = ChannelHeader.parseFrom(header.getChannelHeader());
    } catch (InvalidProtocolBufferException e) {
        throw new BlkchnException("Error creating object from ByteString", e);
    }
    _channelHeader = new WeakReference<>(channelHeader);
}
 
示例2
static EnvelopeDeserializer newInstance(ByteString byteString, byte b) throws InvalidProtocolBufferException {
    EnvelopeDeserializer ret;
    final int type = ChannelHeader.parseFrom(Payload.parseFrom(Envelope.parseFrom(byteString).getPayload())
            .getHeader().getChannelHeader()).getType();
   /*
MESSAGE = 0;                   // Used for messages which are signed but opaque
CONFIG = 1;                    // Used for messages which express the channel config
CONFIG_UPDATE = 2;             // Used for transactions which update the channel config
ENDORSER_TRANSACTION = 3;      // Used by the SDK to submit endorser based transactions
ORDERER_TRANSACTION = 4;       // Used internally by the orderer for management
DELIVER_SEEK_INFO = 5;         // Used as the type for Envelope messages submitted to instruct the Deliver API to seek
CHAINCODE_PACKAGE = 6;         // Used for packaging chaincode artifacts for install
 */

    switch (type) {
        case 3:
            ret = new EndorserTransactionEnvDeserializer(byteString, b);
            break;
        default: //just assume base properties.
            ret = new EnvelopeDeserializer(byteString, b);
            break;
    }
    return ret;
}
 
示例3
ChannelHeader getChannelHeader() {
    ChannelHeader ret = null;

    if (channelHeader != null) {
        ret = channelHeader.get();

    }
    if (null == ret) {
        try {
            ret = ChannelHeader.parseFrom(byteString);
        } catch (InvalidProtocolBufferException e) {
            throw new InvalidProtocolBufferRuntimeException(e);
        }
        channelHeader = new WeakReference<>(ret);

    }

    return ret;

}
 
示例4
/**
 *
 * @param message
 * @param handler
 * @throws InvalidProtocolBufferException
 */
InvocationStubImpl(final ChaincodeMessage message, final ChaincodeInvocationTask handler)
        throws InvalidProtocolBufferException {
    this.channelId = message.getChannelId();
    this.txId = message.getTxid();
    this.handler = handler;
    final ChaincodeInput input = ChaincodeInput.parseFrom(message.getPayload());

    this.args = Collections.unmodifiableList(input.getArgsList());
    this.signedProposal = message.getProposal();
    if (this.signedProposal == null || this.signedProposal.getProposalBytes().isEmpty()) {
        this.creator = null;
        this.txTimestamp = null;
        this.transientMap = Collections.emptyMap();
        this.binding = null;
    } else {
        try {
            final Proposal proposal = Proposal.parseFrom(signedProposal.getProposalBytes());
            final Header header = Header.parseFrom(proposal.getHeader());
            final ChannelHeader channelHeader = ChannelHeader.parseFrom(header.getChannelHeader());
            validateProposalType(channelHeader);
            final SignatureHeader signatureHeader = SignatureHeader.parseFrom(header.getSignatureHeader());
            final ChaincodeProposalPayload chaincodeProposalPayload = ChaincodeProposalPayload
                    .parseFrom(proposal.getPayload());
            final Timestamp timestamp = channelHeader.getTimestamp();

            this.txTimestamp = Instant.ofEpochSecond(timestamp.getSeconds(), timestamp.getNanos());
            this.creator = signatureHeader.getCreator();
            this.transientMap = chaincodeProposalPayload.getTransientMapMap();
            this.binding = computeBinding(channelHeader, signatureHeader);
        } catch (InvalidProtocolBufferException | NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }
}
 
示例5
private byte[] computeBinding(final ChannelHeader channelHeader, final SignatureHeader signatureHeader)
        throws NoSuchAlgorithmException {
    final MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
    messageDigest.update(signatureHeader.getNonce().asReadOnlyByteBuffer());
    messageDigest.update(this.creator.asReadOnlyByteBuffer());
    final ByteBuffer epochBytes = ByteBuffer.allocate(Long.BYTES).order(ByteOrder.LITTLE_ENDIAN)
            .putLong(channelHeader.getEpoch());
    epochBytes.flip();
    messageDigest.update(epochBytes);
    return messageDigest.digest();
}
 
示例6
private void validateProposalType(final ChannelHeader channelHeader) {
    switch (Common.HeaderType.forNumber(channelHeader.getType())) {
    case ENDORSER_TRANSACTION:
    case CONFIG:
        return;
    default:
        throw new RuntimeException(
                String.format("Unexpected transaction type: %s", HeaderType.forNumber(channelHeader.getType())));
    }
}