diff options
author | Jack Lloyd <[email protected]> | 2017-04-04 14:55:11 -0400 |
---|---|---|
committer | Jack Lloyd <[email protected]> | 2017-04-04 14:55:11 -0400 |
commit | 686371913aeb6ad823320dfc6caf3a8e7d24e01e (patch) | |
tree | f7efac0deb7e994673ebca8b5d73748c5ccbc373 /doc | |
parent | 6f153656b234c42a690ce898931ce534b29c3e69 (diff) |
Add block cipher interface to C API
Diffstat (limited to 'doc')
-rw-r--r-- | doc/manual/ffi.rst | 44 | ||||
-rw-r--r-- | doc/todo.rst | 7 |
2 files changed, 49 insertions, 2 deletions
diff --git a/doc/manual/ffi.rst b/doc/manual/ffi.rst index 5cf0dbac5..8acbf225a 100644 --- a/doc/manual/ffi.rst +++ b/doc/manual/ffi.rst @@ -89,6 +89,50 @@ Random Number Generators Destroy the object created by :cpp:func:`botan_rng_init`. +Block Ciphers +---------------------------------------- + +This is a 'raw' interface to ECB mode block ciphers. Most applications +want the higher level cipher API which provides authenticated +encryption. This API exists as an escape hatch for applications which +need to implement custom primitives using a PRP. + +.. cpp:type:: opaque* botan_block_cipher_t + + An opauqe data type for a block cipher. Don't mess with it. + +.. cpp:function:: int botan_block_cipher_init(botan_block_cipher_t* bc, const char* cipher_name) + + Create a new cipher mode object, `cipher_name` should be for example "AES-128" or "Threefish-512" + +.. cpp:function:: int botan_block_cipher_block_size(botan_block_cipher_t bc) + + Return the block size of this cipher. + +.. cpp:function:: int botan_block_cipher_clear(botan_block_cipher_t bc) + + Clear the internal state (such as keys) of this cipher object, but do not deallocate it. + +.. cpp:function:: int botan_block_cipher_set_key(botan_block_cipher_t bc, const uint8_t key[], size_t key_len) + + Set the cipher key, which is required before encrypting or decrypting. + +.. cpp:function:: int botan_block_cipher_encrypt_blocks(botan_block_cipher_t bc, const uint8_t in[], uint8_t out[], size_t blocks) + + The key must have been set first with + Encrypt *blocks* blocks of data stored in *in* and place the ciphertext into *out*. + The two parameters may be the same buffer, but must not overlap. + +.. cpp:function:: int botan_block_cipher_decrypt_blocks(botan_block_cipher_t bc, const uint8_t in[], uint8_t out[], size_t blocks) + + Decrypt *blocks* blocks of data stored in *in* and place the ciphertext into *out*. + The two parameters may be the same buffer, but must not overlap. + +.. cpp:function:: int botan_block_cipher_destroy(botan_block_cipher_t rng) + + Destroy the object created by :cpp:func:`botan_block_cipher_init`. + + Hash Functions ---------------------------------------- diff --git a/doc/todo.rst b/doc/todo.rst index b3ad697e8..4a7d60191 100644 --- a/doc/todo.rst +++ b/doc/todo.rst @@ -108,6 +108,11 @@ New Protocols / Formats - Subset #2: Process OpenPGP public keys - Subset #3: Verification of OpenPGP signatures +Cleanups +----------- + +* Split ffi.cpp and test_ffi.cpp into multiple files + Compat Headers ---------------- @@ -119,9 +124,7 @@ Compat Headers FFI and Bindings ---------------------------------------- -* Expose BigInt * Expose compression -* Expose a raw block cipher interface * Expose more of X.509 (CRLs, OCSP, cert signing, etc) * Expose TLS * Write a CLI or HTTPS client in Python |