module Pdfcryptprimitives:sig
..end
Generic encryption primitives for ARC4, AES and the SHA family of digests
val crypt : int array -> Pdfio.bytes -> Pdfio.bytes
ARC4 encryption (40 bit and 128 bit) given a key and some data
val aes_decrypt_data : ?remove_padding:bool -> int -> int array -> Pdfio.bytes -> Pdfio.bytes
aes_decrypt_data nk key data
decrypts AES data for the given key length,
key, and data. If remove_padding
is true
(which it is by default), padding
wil be removed from the output
val aes_decrypt_data_ecb : ?remove_padding:bool -> int -> int array -> Pdfio.bytes -> Pdfio.bytes
As aes_decrypt_data
above, but in ECB instead of CBC mode
val aes_encrypt_data : ?firstblock:int array -> int -> int array -> Pdfio.bytes -> Pdfio.bytes
aes_encrypt_data nk key data
encryptes with AES, given a key length, key
and data. The first block (by default a random one) can be overridden by
specifying firstblock
, an array of length 16.
val aes_encrypt_data_ecb : int -> int array -> Pdfio.bytes -> Pdfio.bytes
As aes_encrypt_data
, but in ECB instead of CBC mode
val sha256 : Pdfio.input -> string
SHA256 digest
val sha384 : Pdfio.input -> string
SHA344 digest
val sha512 : Pdfio.input -> string
SHA512 digest
type
encryption =
| |
ARC4 of |
|||
| |
AESV2 |
|||
| |
AESV3 of |
(* | true = iso, false = old algorithm | *) |
Types of encryption
val find_hash : encryption ->
int32 -> int32 -> int array -> int -> int array
Given an object number, generation number, input key and key length in bits, apply Algorithm 3.1 from the PDF Reference manual to obtain the hash to be used by the encryption function.
val decrypt_stream_data : encryption ->
bool ->
string option ->
int -> int -> int array -> int -> int -> Pdfio.bytes -> Pdfio.bytes
Calling decrypt_stream_data crypt_type encrypt file_encryption_key obj gen key
keylength r data
decrypts data.