hyperledger/fabric · error

failed parsing signature header

Error message

failed parsing signature header

What it means

Returned by the expiration filter's validateProposal when protoutil.UnmarshalSignatureHeader fails to decode the proposal header's SignatureHeader. The proposal bytes parsed, but the signer block inside the header is not valid protobuf, so expiration checks cannot proceed.

Source

Thrown at core/handlers/auth/filter/expiration.go:47

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

func validateProposal(signedProp *peer.SignedProposal) 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")
	}

	sh, err := protoutil.UnmarshalSignatureHeader(hdr.SignatureHeader)
	if err != nil {
		return errors.Wrap(err, "failed parsing signature header")
	}
	expirationTime := crypto.ExpiresAt(sh.Creator)
	if !expirationTime.IsZero() && time.Now().After(expirationTime) {
		return errors.New("proposal client identity expired")
	}
	return nil
}

// ProcessProposal processes a signed proposal
func (f *expirationCheckFilter) ProcessProposal(ctx context.Context, signedProp *peer.SignedProposal) (*peer.ProposalResponse, error) {
	if err := validateProposal(signedProp); err != nil {
		return nil, err
	}
	return f.next.ProcessProposal(ctx, signedProp)
}

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Ensure the client populates a valid SignatureHeader with a serialized identity
  2. Reject the malformed proposal
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at core/handlers/auth/filter/expiration.go:47 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/f1f19a9f94434548. Report an issue: GitHub.