#include "SHA2_Object.h"
#include <stdexcept>
#include <string.h>
void SHA224Object::digestInit()
{
mIsDone = false;
CC_SHA224_Init(&mCtx);
}
void SHA224Object::digestUpdate(
const void *data,
size_t len)
{
CC_SHA224_Update(&mCtx, (const unsigned char *)data, len);
}
void SHA224Object::digestFinal(
void *digest)
{
CC_SHA224_Final((unsigned char *)digest, &mCtx);
mIsDone = true;
}
DigestObject *SHA224Object::digestClone() const
{
return new SHA224Object(*this);
}
size_t SHA224Object::digestSizeInBytes() const
{
return CC_SHA224_DIGEST_LENGTH;
}
void SHA256Object::digestInit()
{
mIsDone = false;
CC_SHA256_Init(&mCtx);
}
void SHA256Object::digestUpdate(
const void *data,
size_t len)
{
CC_SHA256_Update(&mCtx, (const unsigned char *)data, len);
}
void SHA256Object::digestFinal(
void *digest)
{
CC_SHA256_Final((unsigned char *)digest, &mCtx);
mIsDone = true;
}
DigestObject *SHA256Object::digestClone() const
{
return new SHA256Object(*this);
}
size_t SHA256Object::digestSizeInBytes() const
{
return CC_SHA256_DIGEST_LENGTH;
}
void SHA384Object::digestInit()
{
mIsDone = false;
CC_SHA384_Init(&mCtx);
}
void SHA384Object::digestUpdate(
const void *data,
size_t len)
{
CC_SHA384_Update(&mCtx, (const unsigned char *)data, len);
}
void SHA384Object::digestFinal(
void *digest)
{
CC_SHA384_Final((unsigned char *)digest, &mCtx);
mIsDone = true;
}
DigestObject *SHA384Object::digestClone() const
{
return new SHA384Object(*this);
}
size_t SHA384Object::digestSizeInBytes() const
{
return CC_SHA384_DIGEST_LENGTH;
}
void SHA512Object::digestInit()
{
mIsDone = false;
CC_SHA512_Init(&mCtx);
}
void SHA512Object::digestUpdate(
const void *data,
size_t len)
{
CC_SHA512_Update(&mCtx, (const unsigned char *)data, len);
}
void SHA512Object::digestFinal(
void *digest)
{
CC_SHA512_Final((unsigned char *)digest, &mCtx);
mIsDone = true;
}
DigestObject *SHA512Object::digestClone() const
{
return new SHA512Object(*this);
}
size_t SHA512Object::digestSizeInBytes() const
{
return CC_SHA512_DIGEST_LENGTH;
}