You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

29 lines
898 B

package validation
import (
"git.mleku.dev/mleku/nostr/encoders/event"
"next.orly.dev/pkg/utils"
)
// ValidateProtectedTagMatch checks NIP-70 protected tag requirements.
// Events with the "-" tag can only be published by users authenticated
// with the same pubkey as the event author.
func ValidateProtectedTagMatch(ev *event.E, authedPubkey []byte) Result {
// Check for protected tag (NIP-70)
protectedTag := ev.Tags.GetFirst([]byte("-"))
if protectedTag == nil {
return OK() // No protected tag, validation passes
}
// Event has protected tag - verify pubkey matches
if !utils.FastEqual(authedPubkey, ev.Pubkey) {
return Blocked("protected tag may only be published by user authed to the same pubkey")
}
return OK()
}
// HasProtectedTag checks if an event has the NIP-70 protected tag.
func HasProtectedTag(ev *event.E) bool {
return ev.Tags.GetFirst([]byte("-")) != nil
}