mirror of
https://github.com/QuasarApp/qca.git
synced 2025-04-27 12:04:31 +00:00
Refactor the HMAC code, passing in the hash as an argument.
svn path=/trunk/kdesupport/qca/; revision=398903
This commit is contained in:
parent
ccbe232ccb
commit
854a8d4c65
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2004 Justin Karneges
|
||||
* Copyright (C) 2004 Brad Hards <bradh@frogmouth.net>
|
||||
* Copyright (C) 2004-2005 Brad Hards <bradh@frogmouth.net>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@ -1006,7 +1006,11 @@ public:
|
||||
class opensslHMACContext : public QCA::MACContext
|
||||
{
|
||||
public:
|
||||
opensslHMACContext(QCA::Provider *p, const QString &type) : QCA::MACContext(p, type) {};
|
||||
opensslHMACContext(const EVP_MD *algorithm, QCA::Provider *p, const QString &type) : QCA::MACContext(p, type)
|
||||
{
|
||||
m_algorithm = algorithm;
|
||||
HMAC_CTX_init( &m_context );
|
||||
};
|
||||
|
||||
void setup(const QCA::SymmetricKey &key)
|
||||
{
|
||||
@ -1030,59 +1034,16 @@ public:
|
||||
HMAC_CTX_cleanup(&m_context);
|
||||
}
|
||||
|
||||
Context *clone() const
|
||||
{
|
||||
return new opensslHMACContext(*this);
|
||||
}
|
||||
|
||||
protected:
|
||||
HMAC_CTX m_context;
|
||||
const EVP_MD *m_algorithm;
|
||||
};
|
||||
|
||||
class HMACMD5Context : public opensslHMACContext
|
||||
{
|
||||
public:
|
||||
HMACMD5Context(QCA::Provider *p) : opensslHMACContext( p, "hmac(md5)" )
|
||||
{
|
||||
m_algorithm = EVP_md5();
|
||||
HMAC_CTX_init( &m_context );
|
||||
}
|
||||
|
||||
Context *clone() const
|
||||
{
|
||||
return new HMACMD5Context(*this);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class HMACSHA1Context : public opensslHMACContext
|
||||
{
|
||||
public:
|
||||
HMACSHA1Context(QCA::Provider *p) : opensslHMACContext( p, "hmac(sha1)" )
|
||||
{
|
||||
m_algorithm = EVP_sha1();
|
||||
HMAC_CTX_init( &m_context );
|
||||
}
|
||||
|
||||
Context *clone() const
|
||||
{
|
||||
return new HMACSHA1Context(*this);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class HMACRIPEMD160Context : public opensslHMACContext
|
||||
{
|
||||
public:
|
||||
HMACRIPEMD160Context(QCA::Provider *p) : opensslHMACContext( p, "hmac(ripemd160)" )
|
||||
{
|
||||
m_algorithm = EVP_ripemd160();
|
||||
HMAC_CTX_init( &m_context );
|
||||
}
|
||||
|
||||
Context *clone() const
|
||||
{
|
||||
return new HMACRIPEMD160Context(*this);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// EVPKey
|
||||
//----------------------------------------------------------------------------
|
||||
@ -3486,11 +3447,11 @@ public:
|
||||
else if ( type == "md5" )
|
||||
return new MD5Context( this );
|
||||
else if ( type == "hmac(md5)" )
|
||||
return new HMACMD5Context( this );
|
||||
return new opensslHMACContext( EVP_md5(), this, type );
|
||||
else if ( type == "hmac(sha1)" )
|
||||
return new HMACSHA1Context( this );
|
||||
return new opensslHMACContext( EVP_sha1(),this, type );
|
||||
else if ( type == "hmac(ripemd160)" )
|
||||
return new HMACRIPEMD160Context( this );
|
||||
return new opensslHMACContext( EVP_ripemd160(), this, type );
|
||||
else if ( type == "pkey" )
|
||||
return new MyPKeyContext( this );
|
||||
else if ( type == "dlgroup" )
|
||||
|
Loading…
x
Reference in New Issue
Block a user