# include "config.h"
#endif
#include <openssl/err.h>
+#include <openssl/aes.h>
#include <openssl/sha.h>
-#include <openssl/evp.h>
#include <openssl/hmac.h>
#include "crypto_if.h"
static unsigned long ossl_encrypt(void *key, int keylen, void *iv,
void *pt, void *ct, int tlen)
{
- EVP_CIPHER_CTX ctx;
- int outlen1, outlen2;
- unsigned char hkey[16];
+ AES_KEY akey;
- if (EVP_BytesToKey(EVP_aes_128_cbc(), EVP_sha1(),
- NULL, key, keylen, 5, hkey, NULL) != 16) return 1UL;
- if (!EVP_EncryptInit(&ctx, EVP_aes_128_cbc(), hkey, iv))
+ if (AES_set_encrypt_key(key, keylen*8, &akey))
return ERR_get_error();
- if (!EVP_EncryptUpdate(&ctx, ct, &outlen1, pt, tlen))
- return ERR_get_error();
- if (!EVP_EncryptFinal(&ctx, ct + outlen1, &outlen2))
- return ERR_get_error();
- if (outlen1 + outlen2 != tlen) {
- printf("enc tlen =%d outlen1=%d outlen2=%d\n",
- tlen, outlen1, outlen2);
- // return 1UL;
- }
+ AES_cbc_encrypt(pt, ct, tlen, &akey, iv, AES_ENCRYPT);
return 0UL;
}
static unsigned long ossl_decrypt(void *key, int keylen, void *iv,
void *ct, void *pt, int tlen)
{
- EVP_CIPHER_CTX ctx;
- int outlen1, outlen2;
- unsigned char hkey[16];
+ AES_KEY akey;
- if (EVP_BytesToKey(EVP_aes_128_cbc(), EVP_sha1(),
- NULL, key, keylen, 5, hkey, NULL) != 16) return 1UL;
- if (!EVP_DecryptInit(&ctx, EVP_aes_128_cbc(), hkey, iv))
- return ERR_get_error();
- if (!EVP_DecryptUpdate(&ctx, ct, &outlen1, pt, tlen))
- return ERR_get_error();
- if (!EVP_DecryptFinal(&ctx, ct + outlen1, &outlen2))
+ if (AES_set_decrypt_key(key, keylen*8, &akey))
return ERR_get_error();
- if (outlen1 + outlen2 != tlen) {
- printf("dec tlen =%d outlen1=%d outlen2=%d\n",
- tlen, outlen1, outlen2);
- // return 1UL;
- }
+ AES_cbc_encrypt(ct, pt, tlen, &akey, iv, AES_DECRYPT);
return 0UL;
}
if (!SHA1_Init(&sctx)) return ERR_get_error();
if (!SHA1_Update(&sctx, pt, tlen)) return ERR_get_error();
if (!SHA1_Final(tag, &sctx)) return ERR_get_error();
- *taglen = 20;
+ *taglen = SHA_DIGEST_LENGTH;
return 0UL;
}