hyperledger/fabric · error
failed parsing proposal
Error message
failed parsing proposal
What it means
The expiration-check auth filter could not unmarshal the SignedProposal's ProposalBytes into a Proposal proto — the proposal payload is malformed or truncated, so expiration checking cannot proceed and the request is rejected.
Source
Thrown at core/handlers/auth/filter/expiration.go:37
// NewExpirationCheckFilter creates a new Filter that checks identity expiration
func NewExpirationCheckFilter() auth.Filter {
return &expirationCheckFilter{}
}
type expirationCheckFilter struct {
next peer.EndorserServer
}
// 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
}
View on GitHub (pinned to 2736b63f8f)
Solutions
- Ensure the client SDK constructs a well-formed signed proposal
- Reject the client request; the proposal bytes are not a valid Proposal message
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at core/handlers/auth/filter/expiration.go:37 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/6172dcd8b1e1cbe9.
Report an issue: GitHub.