📄 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 + -