const (
    // EventDocOpen is an event triggered when opening the document.
    EventDocOpen = AuthEvent("DocOpen")
    // EventEFOpen is an event triggered when accessing an embedded file.
    EventEFOpen = AuthEvent("EFOpen")
)
			
				
				const (
    // PermOwner grants all permissions.
    PermOwner = Permissions(math.MaxUint32)
    // PermPrinting allows printing the document with a low quality.
    PermPrinting = Permissions(1 << 2)
    // PermModify allows to modify the document.
    PermModify = Permissions(1 << 3)
    // PermExtractGraphics allows to extract graphics from the document.
    PermExtractGraphics = Permissions(1 << 4)
    // PermAnnotate allows annotating the document.
    PermAnnotate = Permissions(1 << 5)
    // PermFillForms allow form filling, if annotation is disabled?  If annotation enabled, is not looked at.
    PermFillForms = Permissions(1 << 8)
    // PermDisabilityExtract allows to extract graphics in accessibility mode.
    PermDisabilityExtract = Permissions(1 << 9)
    // PermRotateInsert allows rotating, editing page order.
    PermRotateInsert = Permissions(1 << 10)
    // PermFullPrintQuality limits print quality (lowres), assuming Printing bit is set.
    PermFullPrintQuality = Permissions(1 << 11)
)
			
		
		
		
		
			
			
			AuthEvent is an event type that triggers authentication.
type AuthEvent string
Permissions is a bitmask of access permissions for a PDF file.
type Permissions uint32
func (p Permissions) Allowed(p2 Permissions) bool
Allowed checks if a set of permissions can be granted.
StdEncryptDict is a set of additional fields used in standard encryption dictionary.
type StdEncryptDict struct {
    R int // (Required) A number specifying which revision of the standard security handler shall be used.
    P               Permissions
    EncryptMetadata bool // Indicates whether the document-level metadata stream shall be encrypted.
    O, U   []byte
    OE, UE []byte // R=6
    Perms  []byte // An encrypted copy of P (16 bytes). Used to verify permissions. R=6
}
			
			
			
			
			
			
			
		
			
			
			StdHandler is an interface for standard security handlers.
type StdHandler interface {
    // GenerateParams uses owner and user passwords to set encryption parameters and generate an encryption key.
    // It assumes that R, P and EncryptMetadata are already set.
    GenerateParams(d *StdEncryptDict, ownerPass, userPass []byte) ([]byte, error)
    // Authenticate uses encryption dictionary parameters and the password to calculate
    // the document encryption key. It also returns permissions that should be granted to a user.
    // In case of failed authentication, it returns empty key and zero permissions with no error.
    Authenticate(d *StdEncryptDict, pass []byte) ([]byte, Permissions, error)
}
			
			
			
			
			
			
				
				func NewHandlerR4(id0 string, length int) StdHandler
NewHandlerR4 creates a new standard security handler for R<=4.
func NewHandlerR6() StdHandler
NewHandlerR6 creates a new standard security handler for R=5 and R=6.