generic hash (sample md5)
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23563 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -51,6 +51,9 @@ RCSID("$Id$");
|
|||||||
|
|
||||||
#include <crypt.h>
|
#include <crypt.h>
|
||||||
|
|
||||||
|
|
||||||
|
static HCRYPTPROV hCryptProv = NULL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -134,3 +137,58 @@ EVP_wincrypt_des_ede3_cbc(void)
|
|||||||
};
|
};
|
||||||
return &des_ede3_cbc;
|
return &des_ede3_cbc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct generic_hash {
|
||||||
|
HCRYPTHASH hHash;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void
|
||||||
|
crypto_md5_init(struct generic_hash *m);
|
||||||
|
{
|
||||||
|
BOOL bResult;
|
||||||
|
bResult = CryptCreateHash(hCryptProv, CALG_MD5, 0, 0, &m->hHash);
|
||||||
|
_ASSERT(bResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
generic_hash_update (struct generic_hash *m, const void *p, size_t len)
|
||||||
|
{
|
||||||
|
BOOL bResult;
|
||||||
|
bResult = CryptHashData(m->hHash, data, ( DWORD )len, 0 );
|
||||||
|
_ASSERT(bResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
generic_hash_final (void *res, struct generic_hash *m);
|
||||||
|
{
|
||||||
|
DWORD length;
|
||||||
|
BOOL bResult;
|
||||||
|
bResult = CryptGetHashParam(m->hHash, HP_HASHVAL, res, &length, 0)
|
||||||
|
_ASSERT(bResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
generic_hash_cleanup(struct generic_hash *m)
|
||||||
|
{
|
||||||
|
CryptDestroyHash(m->hHash);
|
||||||
|
m->hHash = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
const EVP_MD *
|
||||||
|
EVP_md5(void)
|
||||||
|
{
|
||||||
|
static const struct hc_evp_md md5 = {
|
||||||
|
16,
|
||||||
|
64,
|
||||||
|
sizeof(struct generic_hash),
|
||||||
|
(hc_evp_md_init)crypto_md5_init,
|
||||||
|
(hc_evp_md_update)generic_hash_update,
|
||||||
|
(hc_evp_md_final)generic_hash_final,
|
||||||
|
(hc_evp_md_cleanup)generic_hash_cleanup
|
||||||
|
};
|
||||||
|
return &md5;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user