-
Notifications
You must be signed in to change notification settings - Fork 28
/
pdfcrypt.mli
69 lines (51 loc) · 2.65 KB
/
pdfcrypt.mli
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
(** Decrypting PDF files *)
(** Note that encryption depends on fixed object and generation numbers: don't
change these (for example by calling [Pdf.remove_unreferenced] on the PDF)
before writing.
Encryption support is part of the [Pdfwrite] module, since files are encrypted when they're written. *)
(** If this is set, various debug is produced on standard output. On startup, is set to false *)
val crypt_debug : bool ref
(* Permissions. *)
type permission =
| NoEdit
| NoPrint
| NoCopy
| NoAnnot
| NoForms
| NoExtract
| NoAssemble
| NoHqPrint
(** Decrypt a PDF document, given the user password, returning the permissions
under which the document was encrypted. *)
val decrypt_pdf : ?keyfromowner:string -> string -> Pdf.t -> Pdf.t option * permission list
(** Decrypt a PDF document, given the owner password. *)
val decrypt_pdf_owner : string -> Pdf.t -> Pdf.t option
(** Is a PDF encrypted? *)
val is_encrypted : Pdf.t -> bool
(** [recrypt_pdf decrypted_and_modified] re-encrypts a PDF document
which was decrypted using the user password and owner password from the
original encrypted file and the same permissions and encryption parameters. *)
val recrypt_pdf : ?renumber:bool -> Pdf.t -> string -> Pdf.t
(** Encrypt a PDF documnent, using 40 bit encryption, with given user and
owner passwords. *)
val encrypt_pdf_40bit : string -> string -> permission list -> Pdf.t -> Pdf.t
(** Ditto for 128 bit encryption *)
val encrypt_pdf_128bit : string -> string -> permission list -> Pdf.t -> Pdf.t
(** Encrypt a file using the AESV2 Crypt filter *)
val encrypt_pdf_AES : bool -> string -> string -> permission list -> Pdf.t -> Pdf.t
(** Encrypt a file using the AESV3 Crypt filter *)
val encrypt_pdf_AES256 : bool -> string -> string -> permission list -> Pdf.t -> Pdf.t
(** Encrypt a file using the AESV4 (ISO) Crypt filter *)
val encrypt_pdf_AES256ISO : bool -> string -> string -> permission list -> Pdf.t -> Pdf.t
(**/**)
(* For inter-module recursion...*)
val string_of_pdf : (Pdf.pdfobject -> string) ref
(** Just decrypt a single stream, given the user password, and pdf. This is used
to decrypt cross-reference streams during the reading of a file -- the PDF is
only partially formed at this stage. For internal use by Pdfread. *)
val decrypt_single_stream :
string option -> string option -> Pdf.t -> int -> int -> Pdf.pdfobject -> Pdf.pdfobject
(** Read encryption parameters from an encrypted PDF. They are the encryption type, *)
val get_encryption_values : Pdf.t -> Pdfcryptprimitives.encryption * string * string * int32 * string * string option * string option
(** Parse a /P value, giving the permissions *)
val banlist_of_p : int32 -> permission list