--- Begin Message ---
Subject: |
PATCH: Architecture documentation for crypt module |
Date: |
Fri, 23 Jan 2009 16:27:19 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux) |
Hello!
I include the patch for the task #83. It describes the operations on
ciphers.
I hope to finish my tests soon to take more tasks!
Regards,
David.
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: address@hidden
# target_branch: http://bzr.savannah.gnu.org/r/pdf/libgnupdf/branches\
# /trunk/
# testament_sha1: 474dd00e2876716c51e83df8e3fff82c6dfd88ca
# timestamp: 2009-01-23 16:20:50 +0100
# base_revision_id: address@hidden
#
# Begin patch
=== modified file 'doc/gnupdf-arch.texi'
--- doc/gnupdf-arch.texi 2009-01-06 15:21:41 +0000
+++ doc/gnupdf-arch.texi 2009-01-23 15:20:40 +0000
@@ -46,12 +46,12 @@
@end ifnottex
@menu
-* Overview::
-* The base layer::
-* The object layer::
-* The document layer::
-* The page layer::
-* List of Figures::
+* Overview::
+* The base layer::
+* The object layer::
+* The document layer::
+* The page layer::
+* List of Figures::
@end menu
@node Overview
@@ -166,17 +166,17 @@
@end table
@menu
-* Memory allocation module::
-* Basic types module::
-* Hash module::
-* List module::
-* Stream module::
-* Floating point arithmetic module::
-* Text module::
-* Time module::
-* Filesystem module::
-* Error module::
-* Crypt module::
+* Memory allocation module::
+* Basic types module::
+* Hash module::
+* List module::
+* Stream module::
+* Floating point arithmetic module::
+* Text module::
+* Time module::
+* Filesystem module::
+* Error module::
+* Crypt module::
@end menu
@node Memory allocation module
@@ -341,17 +341,17 @@
@end float
@menu
-* Filtering support::
-* Stream operation modes::
-* Reading from a stream::
-* Writing to a stream::
-* Positioning into a stream::
-* Supported filters::
-* Stream buffers::
-* Stream backends::
-* Stream filters::
-* Structure of a reading stream::
-* Structure of a writing stream::
+* Filtering support::
+* Stream operation modes::
+* Reading from a stream::
+* Writing to a stream::
+* Positioning into a stream::
+* Supported filters::
+* Stream buffers::
+* Stream backends::
+* Stream filters::
+* Structure of a reading stream::
+* Structure of a writing stream::
@end menu
@node Filtering support
@@ -475,7 +475,7 @@
@node Stream buffers
@subsection Stream buffers
-A pdf_stm_buffer_t is a simple data type implementing a buffer in memory.
+A pdf_stm_buffer_t is a e data type implementing a buffer in memory.
@float Figure,fig:stream-memory-buffer
@image{figures/stream-memory-buffer}
@@ -802,22 +802,22 @@
conversion functions to change the encoding of a text are provided.
@menu
-* Text variables::
-* Text content::
-* Country and language information::
-* List of word boundaries::
-* Text encodings::
-* GNU and Unix encodings::
-* Windows encodings::
-* Mac OS X encodings::
-* Text filters::
-* Text operations::
-* Unicode Character Database::
-* Casing algorithms::
-* Standard casing::
-* Special casing::
-* Special casing with conditions::
-* Word boundaries according to Unicode::
+* Text variables::
+* Text content::
+* Country and language information::
+* List of word boundaries::
+* Text encodings::
+* GNU and Unix encodings::
+* Windows encodings::
+* Mac OS X encodings::
+* Text filters::
+* Text operations::
+* Unicode Character Database::
+* Casing algorithms::
+* Standard casing::
+* Special casing::
+* Special casing with conditions::
+* Word boundaries according to Unicode::
@end menu
@node Text variables
@@ -1248,10 +1248,10 @@
spans and to perform basic time arithmetic.
@menu
-* Time data abstractions::
-* Calendar structures::
-* Supported time formats::
-* Time operations::
+* Time data abstractions::
+* Calendar structures::
+* Supported time formats::
+* Time operations::
@end menu
@node Time data abstractions
@@ -1455,18 +1455,18 @@
files or folders.
@menu
-* File systems::
-* Filesystem items::
-* Files::
-* Folders::
-* Path names::
-* Relation between path names open files and filesystems::
-* Filesystem interfaces::
-* The filesystem implementation interface::
-* The filesystem definition interface::
-* The filesystem interface::
-* The file interface::
-* The disk filesystem::
+* File systems::
+* Filesystem items::
+* Files::
+* Folders::
+* Path names::
+* Relation between path names open files and filesystems::
+* Filesystem interfaces::
+* The filesystem implementation interface::
+* The filesystem definition interface::
+* The filesystem interface::
+* The file interface::
+* The disk filesystem::
@end menu
@node File systems
@@ -1734,67 +1734,45 @@
The Encryption module provides procedures both for encryption and
decryption of buffers. Indeed it also provides functions for
-message-digest.
-
-This module is required to be initialized once at startup, when
-libgnupdf is loaded.
-
address@hidden
-* Ciphers::
-* Encryption algorithms::
-* Crypt module operations::
-* Message digest::
address@hidden menu
-
address@hidden Ciphers
address@hidden Ciphers
-
-Encryption module provides a new data type named cipher. A cipher
-turns a plain text buffer to a ciphered text one and vice versa. In
-order to hide the original content, a encryption key should be
-provided by the caller. The length of this key depends on algorithm
-used.
-
-There are two kinds of ciphers, the stream-based ciphers and
-block-based ones. Stream-based ciphers work on each byte of the input
-buffer. Meanwhile, a block-based cipher works on a fixed blocks of a
-certain fixed size. As block ciphers algorithms are designed to work
-on individual blocks, several modes of operation are defined. They
-specifies how to a sequence of blocks are encrypted. Finally, padding
-is a mechanism in order to allow input buffer can have an arbitrary
-length in a block cipher.
-
address@hidden Encryption algorithms
address@hidden Encryption algorithms
-
-The encryption module provides support for the following encryption algorithm,
which are required by the pdf standard.
-
address@hidden @strong
address@hidden ARC4
-ARC4 is a RC4-compatible algorithm. It is a stream-based cipher.
address@hidden AES128
-It is a block-based cipher. Whether we want to encrypt a buffer whose
-length is not multiple of this size, then the buffer should be padded
-before encrypting. In this case, the algorithm described in RFC 2898
-is used for this purpose.
-
-A operation mode known as Cipher Block Chaining mode is used. It
-requires a initialization vector (herein IV) whose length is 16
-bytes. This vector is assumed to be at the beginning of the input
-buffer, and it will put in the same place for the output buffer
-automatically.
address@hidden table
-
address@hidden Crypt module operations
address@hidden Crypt module operations
-
-TBD
-
address@hidden Message digest
address@hidden Message digest
-
-This module provides message-digest md5 function too, since it is
-usually used in order to get a encryption key.
+message-digest. This module is required to be initialized once at
+startup, when libgnupdf is loaded.
+
+The crypt module provides a new data type `cipher' which hold the
+context of an operation, and procedures in order to encrypt and decrypt
+data. The following encryption algorithms are provided:
+
address@hidden @strong
address@hidden AESV2
+It is a block cipher which uses the AES128 algorithm in
+Cipher Block chaining operation mode.
address@hidden V2
+It is a stream-based cipher which uses the RC4-compatible ARCFOUR
+algorithm.
address@hidden table
+
+The operations on a cipher are the following:
+
address@hidden @strong
address@hidden Create a cipher
+It creates a new cipher.
address@hidden Destroy a cipher
+Destroy a previously created cipher.
address@hidden Set a key
+Set a key to both encryption and decryption.
address@hidden Encrypt a chunk
+Encrypt a chunk of the buffer. Consecutive encrypted chunks are supposed
+to be adjoin data.
address@hidden Decrypt a chunk
+Decrypt a chunk of the buffer. Consecutive decrypted chunks are supposed
+to be adjoin data.
address@hidden table
+
+Different kind of ciphers could impose different restrictions to the
+operations.
+
+This module provides message-digest and other utilities functions too,
+since it is usually used in order to get a encryption key.
+
@node The object layer
@chapter The object layer
# Begin bundle
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
L0sglSktFBXJV1cVSQP+LuSKcKEhfO+hBA==
--- End Message ---