⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sha224impl.c

📁 voltage 公司提供的一个开发Ibe的工具包
💻 C
字号:
/* Copyright 2005, Voltage Security, all rights reserved.
 */
#include "vibecrypto.h"
#include "environment.h"
#include "base.h"
#include "libctx.h"
#include "algobj.h"
#include "digest.h"
#include "sha224.h"
#include "errorctx.h"

int SHA224Init (
   VoltAlgorithmObject *obj
   )
{
  int status;
  VoltDigestClassCtx *digestCtx = (VoltDigestClassCtx *)(obj->classCtx);
  VoltSHA224Ctx *ctx = (VoltSHA224Ctx *)(digestCtx->localDigestCtx);
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* Call the SHA-256 Init.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    digestCtx = (VoltDigestClassCtx *)(ctx->sha256Obj->classCtx);
    status = digestCtx->DigestInit (ctx->sha256Obj);

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, obj, status, 0, 0,
    (char *)0, "SHA224Init", fnctLine, (char *)0)

  return (status);
}

int SHA224Update (
   VoltAlgorithmObject *obj,
   unsigned char *dataToDigest,
   unsigned int dataToDigestLen
   )
{
  int status;
  VoltDigestClassCtx *digestCtx = (VoltDigestClassCtx *)(obj->classCtx);
  VoltSHA224Ctx *ctx = (VoltSHA224Ctx *)(digestCtx->localDigestCtx);
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* Call the SHA-256 Update
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    digestCtx = (VoltDigestClassCtx *)(ctx->sha256Obj->classCtx);
    status = digestCtx->DigestUpdate (
      ctx->sha256Obj, dataToDigest, dataToDigestLen);

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, obj, status, 0, 0,
    (char *)0, "SHA224Update", fnctLine, (char *)0)

  return (status);
}

int SHA224Final (
   VoltAlgorithmObject *obj,
   unsigned char *digest
   )
{
  int status;
  VoltLibCtx *libCtx = (VoltLibCtx *)(obj->voltObject.libraryCtx);
  VoltDigestClassCtx *digestCtx = (VoltDigestClassCtx *)(obj->classCtx);
  VoltSHA224Ctx *ctx = (VoltSHA224Ctx *)(digestCtx->localDigestCtx);
  unsigned char digest256[32];
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* Call the SHA-256 Final
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    digestCtx = (VoltDigestClassCtx *)(ctx->sha256Obj->classCtx);
    status = digestCtx->DigestFinal (ctx->sha256Obj, digest256);
    if (status != 0)
      break;

    /* Copy the first 28 bytes of that result into the output buffer.
     */
    Z2Memcpy (digest, digest256, 28);

  } while (0);

  Z2Memset (digest256, 0, 32);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, obj, status, 0, 0,
    (char *)0, "SHA224Final", fnctLine, (char *)0)

  return (status);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -