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 */