#include <libkern/crypto/crypto_internal.h>
#include <libkern/crypto/sha2.h>
#include <kern/debug.h>
#include <corecrypto/ccdigest.h>
void SHA256_Init(SHA256_CTX *ctx)
{
const struct ccdigest_info *di;
di=g_crypto_funcs->ccsha256_di;
if(ccdigest_di_size(di)>sizeof(SHA256_CTX))
panic("%s: inconsistent size for SHA256 context", __FUNCTION__);
g_crypto_funcs->ccdigest_init_fn(di, ctx->ctx);
}
void SHA256_Update(SHA256_CTX *ctx, const void *data, size_t len)
{
const struct ccdigest_info *di;
di=g_crypto_funcs->ccsha256_di;
g_crypto_funcs->ccdigest_update_fn(di, ctx->ctx, len, data);
}
void SHA256_Final(void *digest, SHA256_CTX *ctx)
{
const struct ccdigest_info *di;
di=g_crypto_funcs->ccsha256_di;
ccdigest_final(di, ctx->ctx, digest);
}
void SHA384_Init(SHA384_CTX *ctx)
{
const struct ccdigest_info *di;
di=g_crypto_funcs->ccsha384_di;
if(ccdigest_di_size(di)>sizeof(SHA384_CTX))
panic("%s: inconsistent size for SHA384 context", __FUNCTION__);
g_crypto_funcs->ccdigest_init_fn(di, ctx->ctx);
}
void SHA384_Update(SHA384_CTX *ctx, const void *data, size_t len)
{
const struct ccdigest_info *di;
di=g_crypto_funcs->ccsha384_di;
g_crypto_funcs->ccdigest_update_fn(di, ctx->ctx, len, data);
}
void SHA384_Final(void *digest, SHA384_CTX *ctx)
{
const struct ccdigest_info *di;
di=g_crypto_funcs->ccsha512_di;
ccdigest_final(di, ctx->ctx, digest);
}
void SHA512_Init(SHA512_CTX *ctx)
{
const struct ccdigest_info *di;
di=g_crypto_funcs->ccsha512_di;
if(ccdigest_di_size(di)>sizeof(SHA512_CTX))
panic("%s: inconsistent size for SHA512 context", __FUNCTION__);
g_crypto_funcs->ccdigest_init_fn(di, ctx->ctx);
}
void SHA512_Update(SHA512_CTX *ctx, const void *data, size_t len)
{
const struct ccdigest_info *di;
di=g_crypto_funcs->ccsha512_di;
g_crypto_funcs->ccdigest_update_fn(di, ctx->ctx, len, data);
}
void SHA512_Final(void *digest, SHA512_CTX *ctx)
{
const struct ccdigest_info *di;
di=g_crypto_funcs->ccsha512_di;
ccdigest_final(di, ctx->ctx, digest);
}