diff options
Diffstat (limited to 'doc/manual')
-rw-r--r-- | doc/manual/contents.rst | 1 | ||||
-rw-r--r-- | doc/manual/ffi.rst | 103 | ||||
-rw-r--r-- | doc/manual/python.rst | 19 |
3 files changed, 108 insertions, 15 deletions
diff --git a/doc/manual/contents.rst b/doc/manual/contents.rst index 598510578..83c36e71f 100644 --- a/doc/manual/contents.rst +++ b/doc/manual/contents.rst @@ -25,4 +25,5 @@ Contents srp fpe versions + ffi python diff --git a/doc/manual/ffi.rst b/doc/manual/ffi.rst new file mode 100644 index 000000000..bf6483295 --- /dev/null +++ b/doc/manual/ffi.rst @@ -0,0 +1,103 @@ + +FFI Interface +======================================== + +.. versionadded:: 1.11.14 + +Botan's ffi module provides a C API intended to be easily usable with +other language's foreign function interface (FFI) libraries. For +instance the Python module using the FFI interface needs only the +ctypes module (included in default Python) and works with + +Versioning +---------------------------------------- + +.. cpp:function:: uint32_t botan_ffi_api_version() + Returns the FFI version + +.. cpp:function:: const char* botan_version_string() + Returns a free-from version string + +.. cpp:function:: uint32_t botan_version_major() + Returns the major version of the library +.. cpp:function:: uint32_t botan_version_minor() + Returns the minor version of the library +.. cpp:function:: uint32_t botan_version_patch() + Returns the patch version of the library + +.. cpp:function:: uint32_t botan_version_datestamp() + Returns the date this version was released as an integer, or 0 + if an unreleased version + +Hash Functions +---------------------------------------- + +.. cpp:type:: typedef struct botan_hash_struct* botan_hash_t + An opaque data type for a hash. Don't mess with it. + +.. cpp:function:: botan_hash_t botan_hash_init(const char* hash, uint32_t flags) + Creates a hash of the given name. Returns null on failure. Flags should + always be zero in this version of the API. + +.. cpp:function:: int botan_hash_destroy(botan_hash_t hash) + Destroy the object created by botan_hash_init + +.. cpp:function:: int botan_hash_clear(botan_hash_t hash) + Reset the state of this object back to clean, as if no input has + been supplied + +.. cpp:function:: size_t botan_hash_output_length(botan_hash_t hash) + Return the output length of the hash + +.. cpp:function:: int botan_hash_update(botan_hash_t hash, const uint8_t* input, size_t len) + Add input to the hash computation +.. cpp:function:: int botan_hash_final(botan_hash_t hash, uint8_t out[]) + Finalize the hash and place the output in out. Exactly + botan_hash_output_length() bytes will be written. + +Authentication Codes +---------------------------------------- +.. cpp:type:: typedef struct botan_mac_struct* botan_mac_t + An opaque data type for a MAC. Don't mess with it, but do remember + to set a random key first. + +.. cpp:function:: botan_mac_t botan_mac_init(const char* mac, uint32_t flags) +.. cpp:function:: int botan_mac_destroy(botan_mac_t mac) +.. cpp:function:: int botan_mac_clear(botan_mac_t hash) + +.. cpp:function:: int botan_mac_set_key(botan_mac_t mac, const uint8_t* key, size_t key_len) +.. cpp:function:: int botan_mac_update(botan_mac_t mac, uint8_t buf[], size_t len) +.. cpp:function:: int botan_mac_final(botan_mac_t mac, uint8_t out[], size_t* out_len) +.. cpp:function:: size_t botan_mac_output_length(botan_mac_t mac) + +Ciphers +---------------------------------------- +.. cpp:type:: typedef struct botan_cipher_struct* botan_cipher_t + An opaque data type for a MAC. Don't mess with it, but do remember + to set a random key first. And please use an AEAD. + +.. cpp:function:: botan_cipher_t botan_cipher_init(const char* cipher_name, uint32_t flags) + Create a cipher object from a name such as "AES-256/GCM" or "Serpent/OCB". + + Flags is a bitfield + The low bit of flags specifies if encrypt or decrypt + +.. cpp:function:: int botan_cipher_destroy(botan_cipher_t cipher) +.. cpp:function:: int botan_cipher_clear(botan_cipher_t hash) + +.. cpp:function:: int botan_cipher_set_key(botan_cipher_t cipher, + const uint8_t* key, size_t key_len) + +.. cpp:function:: int botan_cipher_set_associated_data(botan_cipher_t cipher, + const uint8_t* ad, + size_t ad_len) + +.. cpp:function:: int botan_cipher_start(botan_cipher_t cipher, + const uint8_t* nonce, size_t nonce_len) + +.. cpp:function:: int botan_cipher_is_authenticated(botan_cipher_t cipher) +.. cpp:function:: size_t botan_cipher_tag_size(botan_cipher_t cipher) +.. cpp:function:: int botan_cipher_valid_nonce_length(botan_cipher_t cipher, size_t nl) + +.. cpp:function:: size_t botan_cipher_default_nonce_length(botan_cipher_t cipher) + diff --git a/doc/manual/python.rst b/doc/manual/python.rst index b8fd59b9a..f851cbaca 100644 --- a/doc/manual/python.rst +++ b/doc/manual/python.rst @@ -2,20 +2,9 @@ Python Binding ======================================== -.. highlight:: python - -.. note:: - - The Python binding should be considered alpha software, and the - interfaces may change in the future. - -Botan includes a binding for Python, implemented using Boost.Python. +.. versionadded:: 1.11.14 -As you can see, it is not currently documented, though there are a few -examples under `src/scripts/examples`, such as RSA: - -.. literalinclude:: ../../src/scripts/examples/rsa.py - -and EAX encryption using a passphrase: +.. highlight:: python -.. literalinclude:: ../../src/scripts/examples/cipher.py +The Python binding is based on the `ffi` module of botan and the +`ctypes` module of the Python standard library. |