hyperledger/fabric · error

failed parsing proposal

Error message

failed parsing proposal

What it means

Returned by validateTimewindowProposal when protoutil.UnmarshalProposal fails to decode signedProp.ProposalBytes. The signed proposal's payload is not valid protobuf, so the timewindow auth filter rejects it before examining timestamps.

Source

Thrown at core/handlers/auth/filter/timewindow.go:39

	return &timewindowCheckFilter{
		timeWindow: timeWindow,
	}
}

type timewindowCheckFilter struct {
	next       peer.EndorserServer
	timeWindow time.Duration
}

// Init initializes the Filter with the next EndorserServer
func (f *timewindowCheckFilter) Init(next peer.EndorserServer) {
	f.next = next
}

func validateTimewindowProposal(signedProp *peer.SignedProposal, timeWindow time.Duration) error {
	prop, err := protoutil.UnmarshalProposal(signedProp.ProposalBytes)
	if err != nil {
		return errors.Wrap(err, "failed parsing proposal")
	}

	hdr, err := protoutil.UnmarshalHeader(prop.Header)
	if err != nil {
		return errors.Wrap(err, "failed parsing header")
	}

	chdr, err := protoutil.UnmarshalChannelHeader(hdr.ChannelHeader)
	if err != nil {
		return errors.Wrap(err, "failed parsing channel header")
	}

	timeProposal := chdr.Timestamp.AsTime().UTC()
	now := time.Now().UTC()

	if timeProposal.Add(timeWindow).Before(now) || timeProposal.Add(-timeWindow).After(now) {
		return errors.Errorf("request unauthorized due to incorrect timestamp %s, peer time %s, peer.authentication.timewindow %s",
			timeProposal.Format(time.RFC3339), now.Format(time.RFC3339), timeWindow.String())

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Send a well-formed signed proposal from a compatible SDK
  2. Reject the malformed request
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at core/handlers/auth/filter/timewindow.go:39 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of hyperledger/fabric@2736b63f8f (2026-09-04). Data as JSON: /api/errors/3a13cac95de63dd4. Report an issue: GitHub.