sig
  val crypt_debug : bool Stdlib.ref
  type permission =
      NoEdit
    | NoPrint
    | NoCopy
    | NoAnnot
    | NoForms
    | NoExtract
    | NoAssemble
    | NoHqPrint
  val decrypt_pdf :
    ?keyfromowner:string ->
    string -> Pdf.t -> Pdf.t option * Pdfcrypt.permission list
  val decrypt_pdf_owner : string -> Pdf.t -> Pdf.t option
  val is_encrypted : Pdf.t -> bool
  val recrypt_pdf : ?renumber:bool -> Pdf.t -> string -> Pdf.t
  val encrypt_pdf_40bit :
    string -> string -> Pdfcrypt.permission list -> Pdf.t -> Pdf.t
  val encrypt_pdf_128bit :
    string -> string -> Pdfcrypt.permission list -> Pdf.t -> Pdf.t
  val encrypt_pdf_AES :
    bool -> string -> string -> Pdfcrypt.permission list -> Pdf.t -> Pdf.t
  val encrypt_pdf_AES256 :
    bool -> string -> string -> Pdfcrypt.permission list -> Pdf.t -> Pdf.t
  val encrypt_pdf_AES256ISO :
    bool -> string -> string -> Pdfcrypt.permission list -> Pdf.t -> Pdf.t
  val string_of_pdf : (Pdf.pdfobject -> string) Stdlib.ref
  val decrypt_single_stream :
    string option ->
    string option -> Pdf.t -> int -> int -> Pdf.pdfobject -> Pdf.pdfobject
  val get_encryption_values :
    Pdf.t ->
    Pdfcryptprimitives.encryption * string * string * int32 * string *
    string option * string option
  val banlist_of_p : int32 -> Pdfcrypt.permission list
end