sig
  type permission =
      NoEdit
    | NoPrint
    | NoCopy
    | NoAnnot
    | NoForms
    | NoExtract
    | NoAssemble
    | NoHqPrint
  val decrypt_pdf :
    string -> Pdf.pdfdoc -> Pdf.pdfdoc option * Pdfcrypt.permission list
  val decrypt_pdf_owner : string -> Pdf.pdfdoc -> Pdf.pdfdoc option
  val recrypt_pdf : Pdf.pdfdoc -> Pdf.pdfdoc -> string -> Pdf.pdfdoc
  val encrypt_pdf_40bit :
    string -> string -> Pdfcrypt.permission list -> Pdf.pdfdoc -> Pdf.pdfdoc
  val encrypt_pdf_128bit :
    string -> string -> Pdfcrypt.permission list -> Pdf.pdfdoc -> Pdf.pdfdoc
  val encrypt_pdf_AES :
    bool ->
    string -> string -> Pdfcrypt.permission list -> Pdf.pdfdoc -> Pdf.pdfdoc
  val is_encrypted : Pdf.pdfdoc -> bool
  val decrypt_single_stream :
    string -> Pdf.pdfdoc -> int -> int -> Pdf.pdfobject -> Pdf.pdfobject
  type encryption = ARC4 of int * int | AESV2
  val get_encryption_values :
    Pdf.pdfdoc -> Pdfcrypt.encryption * string * string * int32 * string
  val banlist_of_p : int32 -> Pdfcrypt.permission list
  val string_of_pdf : (Pdf.pdfobject -> string) Pervasives.ref
end