X-Git-Url: http://www.average.org/gitweb/?p=pam_pcsc_cr.git;a=blobdiff_plain;f=ossl_crypto.c;h=4fdbcf3df134c0a73930a0a46a2c4acde50f9687;hp=a7fc515b5db6f5642c77fd756f8f28d7d286799f;hb=8c8a47cd542e60381773fe23f2075aa5b896be4f;hpb=3d841899fe8859b2ce6af8fdfd8fa961c7651425 diff --git a/ossl_crypto.c b/ossl_crypto.c index a7fc515..4fdbcf3 100644 --- a/ossl_crypto.c +++ b/ossl_crypto.c @@ -1,3 +1,6 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif #include #include #include @@ -12,6 +15,8 @@ static unsigned long ossl_encrypt(void *key, int keylen, void *iv, int outlen1, outlen2; unsigned char hkey[16]; + ERR_load_crypto_strings(); /* FIXME */ + 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)) @@ -20,7 +25,11 @@ static unsigned long ossl_encrypt(void *key, int keylen, void *iv, return ERR_get_error(); if (!EVP_EncryptFinal(&ctx, ct + outlen1, &outlen2)) return ERR_get_error(); - if (outlen1 + outlen2 != tlen) return 1UL; + if (outlen1 + outlen2 != tlen) { + printf("enc tlen =%d outlen1=%d outlen2=%d\n", + tlen, outlen1, outlen2); + // return 1UL; + } return 0UL; } @@ -39,7 +48,11 @@ static unsigned long ossl_decrypt(void *key, int keylen, void *iv, return ERR_get_error(); if (!EVP_DecryptFinal(&ctx, ct + outlen1, &outlen2)) return ERR_get_error(); - if (outlen1 + outlen2 != tlen) return 1UL; + if (outlen1 + outlen2 != tlen) { + printf("dec tlen =%d outlen1=%d outlen2=%d\n", + tlen, outlen1, outlen2); + // return 1UL; + } return 0UL; } @@ -50,7 +63,7 @@ static unsigned long ossl_hash(void *pt, int tlen, void *tag, int *taglen) 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 = 160; + *taglen = 20; return 0UL; } @@ -60,7 +73,7 @@ static unsigned long ossl_hmac(void *pt, int tlen, void *key, int keylen, HMAC_CTX hctx; HMAC_CTX_init(&hctx); - if (!HMAC_Init(&hctx, key, keylen, EVP_sha1())) return ERR_get_error(); + if (!HMAC_Init_ex(&hctx, key, keylen, EVP_sha1(), NULL)) return ERR_get_error(); if (!HMAC_Update(&hctx, pt, tlen)) return ERR_get_error(); if (!HMAC_Final(&hctx, tag, (unsigned int *)taglen)) return ERR_get_error();