|  | @@ -34,6 +34,12 @@ struct crypto_algorithm {
 | 
		
	
		
			
			| 34 | 34 |  	 * @ret rc		Return status code
 | 
		
	
		
			
			| 35 | 35 |  	 */
 | 
		
	
		
			
			| 36 | 36 |  	int ( * setkey ) ( void *ctx, void *key, size_t keylen );
 | 
		
	
		
			
			|  | 37 | +	/** Set initialisation vector
 | 
		
	
		
			
			|  | 38 | +	 *
 | 
		
	
		
			
			|  | 39 | +	 * @v ctx		Context
 | 
		
	
		
			
			|  | 40 | +	 * @v iv		Initialisation vector
 | 
		
	
		
			
			|  | 41 | +	 */
 | 
		
	
		
			
			|  | 42 | +	void ( *setiv ) ( void *ctx, void *iv );
 | 
		
	
		
			
			| 37 | 43 |  	/** Encode data
 | 
		
	
		
			
			| 38 | 44 |  	 *
 | 
		
	
		
			
			| 39 | 45 |  	 * @v ctx		Context
 | 
		
	
	
		
			
			|  | @@ -85,6 +91,16 @@ static inline void digest_final ( struct crypto_algorithm *crypto,
 | 
		
	
		
			
			| 85 | 91 |  	crypto->final ( ctx, out );
 | 
		
	
		
			
			| 86 | 92 |  }
 | 
		
	
		
			
			| 87 | 93 |  
 | 
		
	
		
			
			|  | 94 | +static inline void cipher_setiv ( struct crypto_algorithm *crypto,
 | 
		
	
		
			
			|  | 95 | +				 void *ctx, void *iv ) {
 | 
		
	
		
			
			|  | 96 | +	crypto->setiv ( ctx, iv );
 | 
		
	
		
			
			|  | 97 | +}
 | 
		
	
		
			
			|  | 98 | +
 | 
		
	
		
			
			|  | 99 | +static inline int cipher_setkey ( struct crypto_algorithm *crypto,
 | 
		
	
		
			
			|  | 100 | +				  void *ctx, void *key, size_t keylen ) {
 | 
		
	
		
			
			|  | 101 | +	return crypto->setkey ( ctx, key, keylen );
 | 
		
	
		
			
			|  | 102 | +}
 | 
		
	
		
			
			|  | 103 | +
 | 
		
	
		
			
			| 88 | 104 |  static inline int cipher_encrypt ( struct crypto_algorithm *crypto,
 | 
		
	
		
			
			| 89 | 105 |  				   void *ctx, const void *src, void *dst,
 | 
		
	
		
			
			| 90 | 106 |  				   size_t len ) {
 |