xref: /aosp_15_r20/external/libsrtp2/doc/crypto_kernel.txt (revision 90e502c7aef8d77d0622bb67d75435c6190cfc1a)
1*90e502c7SAndroid Build Coastguard Worker/**
2*90e502c7SAndroid Build Coastguard Worker
3*90e502c7SAndroid Build Coastguard Worker@defgroup CryptoKernel Cryptographic Kernel
4*90e502c7SAndroid Build Coastguard Worker
5*90e502c7SAndroid Build Coastguard WorkerAll of the cryptographic functions are contained in a kernel.
6*90e502c7SAndroid Build Coastguard Worker
7*90e502c7SAndroid Build Coastguard Worker*/
8*90e502c7SAndroid Build Coastguard Worker
9*90e502c7SAndroid Build Coastguard Worker/**
10*90e502c7SAndroid Build Coastguard Worker
11*90e502c7SAndroid Build Coastguard Worker@defgroup CipherImplementations Ciphers
12*90e502c7SAndroid Build Coastguard Worker@ingroup  CryptoKernel
13*90e502c7SAndroid Build Coastguard Worker
14*90e502c7SAndroid Build Coastguard Worker@brief A generic cipher type enables cipher agility, that is, the
15*90e502c7SAndroid Build Coastguard Workerability to write code that runs with multiple cipher types.
16*90e502c7SAndroid Build Coastguard WorkerCiphers can be used through the crypto kernel, or can be accessed
17*90e502c7SAndroid Build Coastguard Workerdirectly, if need be.
18*90e502c7SAndroid Build Coastguard Worker
19*90e502c7SAndroid Build Coastguard Worker@{
20*90e502c7SAndroid Build Coastguard Worker
21*90e502c7SAndroid Build Coastguard Worker*/
22*90e502c7SAndroid Build Coastguard Worker
23*90e502c7SAndroid Build Coastguard Worker/**
24*90e502c7SAndroid Build Coastguard Worker * @brief Allocates a cipher of a particular type.
25*90e502c7SAndroid Build Coastguard Worker * @warning May be implemented as a macro.
26*90e502c7SAndroid Build Coastguard Worker */
27*90e502c7SAndroid Build Coastguard Workererr_status_t
28*90e502c7SAndroid Build Coastguard Workercipher_type_alloc(cipher_type_t *ctype, cipher_t **cipher,
29*90e502c7SAndroid Build Coastguard Worker                        unsigned key_len);
30*90e502c7SAndroid Build Coastguard Worker
31*90e502c7SAndroid Build Coastguard Worker/**
32*90e502c7SAndroid Build Coastguard Worker * @brief Initialized a cipher to use a particular key.  May
33*90e502c7SAndroid Build Coastguard Worker *       be invoked more than once on the same cipher.
34*90e502c7SAndroid Build Coastguard Worker * @warning May be implemented as a macro.
35*90e502c7SAndroid Build Coastguard Worker */
36*90e502c7SAndroid Build Coastguard Worker
37*90e502c7SAndroid Build Coastguard Workererr_status_t
38*90e502c7SAndroid Build Coastguard Workercipher_init(cipher_t *cipher, const uint8_t *key);
39*90e502c7SAndroid Build Coastguard Worker
40*90e502c7SAndroid Build Coastguard Worker/**
41*90e502c7SAndroid Build Coastguard Worker * @brief Sets the initialization vector of a given cipher.
42*90e502c7SAndroid Build Coastguard Worker * @warning May be implemented as a macro.
43*90e502c7SAndroid Build Coastguard Worker */
44*90e502c7SAndroid Build Coastguard Worker
45*90e502c7SAndroid Build Coastguard Workererr_status_t
46*90e502c7SAndroid Build Coastguard Workercipher_set_iv(cipher_t *cipher, void *iv);
47*90e502c7SAndroid Build Coastguard Worker
48*90e502c7SAndroid Build Coastguard Worker/**
49*90e502c7SAndroid Build Coastguard Worker * @brief Encrypts a buffer with a given cipher.
50*90e502c7SAndroid Build Coastguard Worker * @warning May be implemented as a macro.
51*90e502c7SAndroid Build Coastguard Worker */
52*90e502c7SAndroid Build Coastguard Worker
53*90e502c7SAndroid Build Coastguard Workererr_status_t
54*90e502c7SAndroid Build Coastguard Workercipher_encrypt(cipher_t *cipher, void *buf, unsigned int *len);
55*90e502c7SAndroid Build Coastguard Worker
56*90e502c7SAndroid Build Coastguard Worker/**
57*90e502c7SAndroid Build Coastguard Worker * @brief Sets a buffer to the keystream generated by the cipher.
58*90e502c7SAndroid Build Coastguard Worker * @warning May be implemented as a macro.
59*90e502c7SAndroid Build Coastguard Worker */
60*90e502c7SAndroid Build Coastguard Workererr_status_t
61*90e502c7SAndroid Build Coastguard Workercipher_output(cipher_t *c, uint8_t *buffer, int num_octets_to_output);
62*90e502c7SAndroid Build Coastguard Worker
63*90e502c7SAndroid Build Coastguard Worker/**
64*90e502c7SAndroid Build Coastguard Worker * @brief Deallocates a cipher.
65*90e502c7SAndroid Build Coastguard Worker * @warning May be implemented as a macro.
66*90e502c7SAndroid Build Coastguard Worker */
67*90e502c7SAndroid Build Coastguard Workererr_status_t
68*90e502c7SAndroid Build Coastguard Workercipher_dealloc(cipher_t *cipher);
69*90e502c7SAndroid Build Coastguard Worker
70*90e502c7SAndroid Build Coastguard Worker
71*90e502c7SAndroid Build Coastguard Worker
72*90e502c7SAndroid Build Coastguard Worker/**
73*90e502c7SAndroid Build Coastguard Worker * @}
74*90e502c7SAndroid Build Coastguard Worker */
75*90e502c7SAndroid Build Coastguard Worker
76*90e502c7SAndroid Build Coastguard Worker */