?? digestopensslimpl.cpp
字號:
/*!
\file DigestOpenSslImpl.cpp
\author Jackson
\date 13/1/2005
*/
#include "DigestOpenSslImpl.h"
namespace Lucid {
namespace Encryption {
TDigestOpenSslImpl::TDigestOpenSslImpl( THashAlgorithm algorithm):TDigestImplBase(algorithm)
{
}
TDigestOpenSslImpl::~TDigestOpenSslImpl()
{
}
void TDigestOpenSslImpl::Digest(
const char *inputm,
unsigned char *outputd,
unsigned int inputm_len,
unsigned int &outputd_len)
{
// Lucid::System::Thread::TThreadGuard m(mMutex);
OpenSSL_add_all_digests();
EVP_MD_CTX_init(&mDigestCtx);
EVP_DigestInit_ex(&mDigestCtx, GetAlgorithmType(),NULL);
EVP_DigestUpdate(&mDigestCtx, inputm, inputm_len);
EVP_DigestFinal_ex(&mDigestCtx, outputd , &outputd_len);
EVP_MD_CTX_cleanup(&mDigestCtx);
}
const EVP_MD *TDigestOpenSslImpl::GetAlgorithmType() const
{
const EVP_MD *type;
switch (GetAlgorithm())
{
case NO_DIGEST:
type = EVP_md_null();
break;
case DIGEST_MD2:
type = EVP_md2();
break;
case DIGEST_MD4:
type = EVP_md4();
break;
case DIGEST_MD5:
type = EVP_md5();
break;
case DIGEST_SHA: type = EVP_sha(); break; case DIGEST_SHA1: type = EVP_sha1(); break; case DUGEST_DESSl: type = EVP_dss(); break; case DIGEST_DSS1: type = EVP_dss1(); break; case DIGEST_ECDSA: type = EVP_ecdsa();
break;
}
return type;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -