1 #include <openssl/evp.h>
2 #include <openssl/hmac.h>
6 static int ossl_encrypt(void *pt, int ptlen, void *key, int keylen,
10 unsigned char iv[16] = {0};
13 EVP_EncryptInit(&ctx, EVP_aes_256_cbc(), key, iv);
14 EVP_EncryptUpdate(&ctx, ct, &outlen1, pt, ptlen);
15 EVP_EncryptFinal(&ctx, ct + outlen1, &outlen2);
16 if (outlen1 + outlen2 > *ctlen) return -1;
17 *ctlen = outlen1 + outlen2;
22 static int ossl_decrypt()
27 static int ossl_hash()
32 static int ossl_hmac()
37 // result = HMAC(EVP_sha256(), key, 999, data, 888, NULL, NULL);
41 // HMAC_CTX_init(&hctx);
42 // if (HMAC_Init(&hctx, key, keylen, EVP_sha1())) success;
43 // if (HMAC_Update(&hctx, data, datalen)) success;
44 // if (HMAC_Final(&hctx, &digest, &digestlen)) success
45 // HMAC_CTX_cleanup(&hctx);
47 struct crypto_interface ossl_crypto_if = {
49 .encrypt = ossl_encrypt,
50 .decrypt = ossl_decrypt,