# Custom Encryption C API

> To implement a custom encryption algorithm, developers must implement the following APIs. Stubs for these APIs are provided in the "stub" library `mcocryptstub`. The stub library contains empty API implementations which simply halt processing with the error code `MCO_E_UNSUPPORTED`. Developers need to implement their custom encryption algorithm in these functions, as described in the reference guide pages below, in a separate library which will then be linked to their application instead of library `mcocryptaes`.

> ### For an overview see page Encryption C API

> Please use the links below to view details and examples of the individual encryption APIs:

> mco_crypt_algorithm() | Return the algorithm type supported by the encryption library currently linked
> mco_crypt_init_ctx() | Prepare the encryption context by a cipher key string
> mco_crypt_block() | Encrypt or decrypt a block of data
> mco_crypt_stream() | Encrypt or decrypt a data buffer to be placed into a stream.
> mco_crypt_init_state() | Create an encryption state structure