+ EVP_CIPHER_CTX ctx;
+ int outlen1, outlen2;
+ unsigned char hkey[16];
+
+ 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))
+ return ERR_get_error();
+ if (outlen1 + outlen2 != tlen) {
+ printf("dec tlen =%d outlen1=%d outlen2=%d\n",
+ tlen, outlen1, outlen2);
+ // return 1UL;
+ }
+ return 0UL;