break out the hcrypto part
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23549 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		
							
								
								
									
										137
									
								
								lib/hcrypto/evp-hcrypto.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								lib/hcrypto/evp-hcrypto.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,137 @@ | ||||
| #define HC_DEPRECATED | ||||
|  | ||||
| #include <sys/types.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <assert.h> | ||||
|  | ||||
| #include <evp.h> | ||||
|  | ||||
| #include <krb5-types.h> | ||||
|  | ||||
| #include <aes.h> | ||||
|  | ||||
| /* | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| static int | ||||
| aes_init(EVP_CIPHER_CTX *ctx, | ||||
| 	 const unsigned char * key, | ||||
| 	 const unsigned char * iv, | ||||
| 	 int encp) | ||||
| { | ||||
|     AES_KEY *k = ctx->cipher_data; | ||||
|     if (ctx->encrypt) | ||||
| 	AES_set_encrypt_key(key, ctx->cipher->key_len * 8, k); | ||||
|     else | ||||
| 	AES_set_decrypt_key(key, ctx->cipher->key_len * 8, k); | ||||
|     return 1; | ||||
| } | ||||
|  | ||||
| static int | ||||
| aes_do_cipher(EVP_CIPHER_CTX *ctx, | ||||
| 	      unsigned char *out, | ||||
| 	      const unsigned char *in, | ||||
| 	      unsigned int size) | ||||
| { | ||||
|     AES_KEY *k = ctx->cipher_data; | ||||
|     AES_cbc_encrypt(in, out, size, k, ctx->iv, ctx->encrypt); | ||||
|     return 1; | ||||
| } | ||||
|  | ||||
| static int | ||||
| aes_cleanup(EVP_CIPHER_CTX *ctx) | ||||
| { | ||||
|     memset(ctx->cipher_data, 0, sizeof(AES_KEY)); | ||||
|     return 1; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * The AES-128 cipher type (hcrypto) | ||||
|  * | ||||
|  * @return the AES-128 EVP_CIPHER pointer. | ||||
|  * | ||||
|  * @ingroup hcrypto_evp | ||||
|  */ | ||||
|  | ||||
| const EVP_CIPHER * | ||||
| EVP_hcrypto_aes_128_cbc(void) | ||||
| { | ||||
|     static const EVP_CIPHER aes_128_cbc = { | ||||
| 	0, | ||||
| 	16, | ||||
| 	16, | ||||
| 	16, | ||||
| 	EVP_CIPH_CBC_MODE, | ||||
| 	aes_init, | ||||
| 	aes_do_cipher, | ||||
| 	aes_cleanup, | ||||
| 	sizeof(AES_KEY), | ||||
| 	NULL, | ||||
| 	NULL, | ||||
| 	NULL, | ||||
| 	NULL | ||||
|     }; | ||||
|      | ||||
|     return &aes_128_cbc; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * The AES-128 cipher type (hcrypto) | ||||
|  * | ||||
|  * @return the AES-128 EVP_CIPHER pointer. | ||||
|  * | ||||
|  * @ingroup hcrypto_evp | ||||
|  */ | ||||
|  | ||||
| const EVP_CIPHER * | ||||
| EVP_hcrypto_aes_192_cbc(void) | ||||
| { | ||||
|     static const EVP_CIPHER aes_192_cbc = { | ||||
| 	0, | ||||
| 	16, | ||||
| 	24, | ||||
| 	16, | ||||
| 	EVP_CIPH_CBC_MODE, | ||||
| 	aes_init, | ||||
| 	aes_do_cipher, | ||||
| 	aes_cleanup, | ||||
| 	sizeof(AES_KEY), | ||||
| 	NULL, | ||||
| 	NULL, | ||||
| 	NULL, | ||||
| 	NULL | ||||
|     }; | ||||
|     return &aes_192_cbc; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * The AES-256 cipher type (hcrypto) | ||||
|  * | ||||
|  * @return the AES-256 EVP_CIPHER pointer. | ||||
|  * | ||||
|  * @ingroup hcrypto_evp | ||||
|  */ | ||||
|  | ||||
| const EVP_CIPHER * | ||||
| EVP_hcrypto_aes_256_cbc(void) | ||||
| { | ||||
|     static const EVP_CIPHER aes_256_cbc = { | ||||
| 	0, | ||||
| 	16, | ||||
| 	32, | ||||
| 	16, | ||||
| 	EVP_CIPH_CBC_MODE, | ||||
| 	aes_init, | ||||
| 	aes_do_cipher, | ||||
| 	aes_cleanup, | ||||
| 	sizeof(AES_KEY), | ||||
| 	NULL, | ||||
| 	NULL, | ||||
| 	NULL, | ||||
| 	NULL | ||||
|     }; | ||||
|     return &aes_256_cbc; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Love Hörnquist Åstrand
					Love Hörnquist Åstrand