MCPcopy Create free account
hub / github.com/compozy/agh / validateKindEnvelopeRules

Function validateKindEnvelopeRules

internal/network/validate.go:546–586  ·  view source on GitHub ↗
(env Envelope)

Source from the content-addressed store, hash-verified

544}
545
546func validateKindEnvelopeRules(env Envelope) error {
547 body, err := env.DecodeBody()
548 if err != nil {
549 return err
550 }
551
552 switch typed := body.(type) {
553 case GreetBody:
554 if typed.PeerCard.PeerID != env.From {
555 return fmt.Errorf("%w: greet peer_card.peer_id must match from", ErrInvalidBody)
556 }
557 if err := validatePeerCardPrivilegedCapabilities(typed.PeerCard, env.Proof); err != nil {
558 return err
559 }
560 case WhoisBody:
561 if typed.Type == WhoisTypeResponse {
562 if env.ReplyTo == nil {
563 return fmt.Errorf("%w: whois response reply_to is required", ErrMissingField)
564 }
565 if typed.PeerCard == nil {
566 return fmt.Errorf("%w: whois response peer_card is required", ErrInvalidBody)
567 }
568 if typed.PeerCard.PeerID != env.From {
569 return fmt.Errorf("%w: whois response peer_card.peer_id must match from", ErrInvalidBody)
570 }
571 if err := validatePeerCardPrivilegedCapabilities(*typed.PeerCard, env.Proof); err != nil {
572 return err
573 }
574 }
575 case ReceiptBody:
576 if env.WorkID == nil {
577 return fmt.Errorf("%w: receipt work_id is required", ErrMissingField)
578 }
579 case TraceBody:
580 if env.WorkID == nil {
581 return fmt.Errorf("%w: trace work_id is required", ErrMissingField)
582 }
583 }
584
585 return nil
586}
587
588func validateEnvelopeFreshness(env Envelope, opts ValidateOptions) error {
589 nowUnix := opts.Now.Unix()

Callers 1

Calls 2

DecodeBodyMethod · 0.80

Tested by

no test coverage detected