sig
  val crypt_debug : bool Pervasives.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 : Pdf.t -> 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 decrypt_single_stream :
    string option ->
    string option -> Pdf.t -> int -> int -> Pdf.pdfobject -> Pdf.pdfobject
  type encryption = ARC4 of int * int | AESV2 | AESV3 of bool
  val get_encryption_values :
    Pdf.t ->
    Pdfcrypt.encryption * string * string * int32 * string * string option *
    string option
  val banlist_of_p : int32 -> Pdfcrypt.permission list
  val string_of_pdf : (Pdf.pdfobject -> string) Pervasives.ref
  val sha256 : Pdfio.input -> string
  val sha384 : Pdfio.input -> string
  val sha512 : Pdfio.input -> string
end