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

📄 sfwritetype.c

📁 IBE是一种非对称密码技术
💻 C
📖 第 1 页 / 共 2 页
字号:
      VOLT_SET_FNCT_LINE (fnctLine)
      status = VT_ERROR_MEMORY;
      readCtx->fileName.data = (unsigned char *)Z2Realloc (
        readCtx->fileName.data, labelLen + 1);
      if (readCtx->fileName.data == (unsigned char *)0)
        break;

      Z2Memcpy (readCtx->fileName.data, labelName, labelLen);
      readCtx->fileName.data[labelLen] = 0;
      *getInfo = (Pointer)(readCtx->fileName.data);
      status = 0;
      break;
    }

    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_TYPE;
    if (flag != VOLT_SECURE_FILE_SET_TYPE_FLAG)
      break;

    /* The state must be VOLT_SECURE_MAIL_STATE_WRITE_SET.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_SECURE_FILE_OBJ;
    if (obj->state != VOLT_SECURE_MAIL_STATE_WRITE_SET)
      break;

    writeCtx = (VoltSecureMailWriteCtx *)(obj->localCtx);

    /* Make sure the ctx does not yet have the file name set.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if (writeCtx->fileName.data != (unsigned char *)0)
      break;

    /* The info should be an unsigned char *.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info == (Pointer)0)
      break;

    fileNameLen = Z2Strlen (info);

    /* Build a buffer with the file name. Add a NULL-terminating
     * character.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_MEMORY;
    writeCtx->fileName.data = (unsigned char *)Z2Malloc (fileNameLen + 1, 0);
    if (writeCtx->fileName.data == (unsigned char *)0)
      break;
    Z2Memcpy (writeCtx->fileName.data, info, fileNameLen);
    writeCtx->fileName.data[fileNameLen] = 0;
    writeCtx->fileName.len = fileNameLen;

    status = 0;

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, secureFileObj, status, 0, errorType,
    (char *)0, "VtSecureFileParamFileName", fnctLine, (char *)0)

  return (status);
}

int VtSecureFileParamSenderId (
   VtSecureFileObject secureFileObj,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  VoltSecureMailObject *obj = (VoltSecureMailObject *)secureFileObj;
  VoltSecureMailWriteCtx *writeCtx = (VoltSecureMailWriteCtx *)(obj->localCtx);
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* This Param cannot get info.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_GET;
    if (flag == VOLT_SECURE_FILE_GET_TYPE_FLAG)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_TYPE;
    if (flag != VOLT_SECURE_FILE_SET_TYPE_FLAG)
      break;

    /* The SecureMail object must be set to write.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_SECURE_FILE_OBJ;
    if (obj->state != VOLT_SECURE_MAIL_STATE_WRITE_SET)
      break;

    /* There can be only one sender.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if (writeCtx->senderFlag != 0)
      break;

    /* Send this identity object on to the p7Signer. This will check
     * the validity of the associatedInfo.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtSetPkcs7Param (obj->p7SignedData, VtPkcs7ParamSignerId, info);
    if (status != 0)
      break;

    writeCtx->senderFlag = 1;

    /* Get a reference to the sender ID.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltGetSignerIdObjRef (
      obj->p7SignedData, 0, (VtIdentityObject *)&(writeCtx->senderIdRef));
    if (status == VT_ERROR_NO_ID_AT_INDEX)
      status = VT_ERROR_INVALID_ASSOCIATED_INFO;

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, secureFileObj, status, 0, errorType,
    (char *)0, "VtSecureFileParamSenderId", fnctLine, (char *)0)

  return (status);
}

int VtSecureFileParamSenderInfo (
   VtSecureFileObject secureFileObj,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  VoltSecureMailObject *obj = (VoltSecureMailObject *)secureFileObj;
  VoltSecureMailWriteCtx *writeCtx = (VoltSecureMailWriteCtx *)(obj->localCtx);
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* This Param cannot get info.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_GET;
    if (flag == VOLT_SECURE_FILE_GET_TYPE_FLAG)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_TYPE;
    if (flag != VOLT_SECURE_FILE_SET_TYPE_FLAG)
      break;

    /* The SecureMail object must be set to write.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_SECURE_FILE_OBJ;
    if (obj->state != VOLT_SECURE_MAIL_STATE_WRITE_SET)
      break;

    /* There can be only one sender.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    if (writeCtx->senderFlag != 0)
      break;

    /* Send this sender info on to the p7Signer. This will check
     * the validity of the associatedInfo.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtSetPkcs7Param (obj->p7SignedData, VtPkcs7ParamSignerInfo, info);
    if (status != 0)
      break;

    writeCtx->senderFlag = 1;

    /* Get a reference to the signer's ID object, if there is one,
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VoltGetSignerIdObjRef (
      obj->p7SignedData, 0, (VtIdentityObject *)&(writeCtx->senderIdRef));
    if (status == VT_ERROR_NO_ID_AT_INDEX)
      status = 0;

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, secureFileObj, status, 0, errorType,
    (char *)0, "VtSecureFileParamSenderInfo", fnctLine, (char *)0)

  return (status);
}

int VtSecureFileParam3DESCBC (
   VtSecureFileObject secureFileObj,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  VoltSecureMailObject *obj = (VoltSecureMailObject *)secureFileObj;
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* This Param cannot get info.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_GET;
    if (flag == VOLT_SECURE_FILE_GET_TYPE_FLAG)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_TYPE;
    if (flag != VOLT_SECURE_FILE_SET_TYPE_FLAG)
      break;

    /* The SecureMail object must be set to write.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_SECURE_FILE_OBJ;
    if (obj->state != VOLT_SECURE_MAIL_STATE_WRITE_SET)
      break;

    /* Set the enveloper with Triple-DES.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtSetPkcs7Param (
      obj->p7EnvelopedData, VtPkcs7ParamEnv3DESCBC, info);

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, secureFileObj, status, 0, errorType,
    (char *)0, "VtSecureFileParam3DESCBC", fnctLine, (char *)0)

  return (status);
}

int VtSecureFileParamAES128CBC (
   VtSecureFileObject secureFileObj,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  VoltSecureMailObject *obj = (VoltSecureMailObject *)secureFileObj;
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* This Param cannot get info.
     */
    VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_GET;
    if (flag == VOLT_SECURE_FILE_GET_TYPE_FLAG)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_TYPE;
    if (flag != VOLT_SECURE_FILE_SET_TYPE_FLAG)
      break;

    /* The SecureMail object must be set to write.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_SECURE_FILE_OBJ;
    if (obj->state != VOLT_SECURE_MAIL_STATE_WRITE_SET)
      break;

    /* Set the enveloper with AES.
     */
    VOLT_SET_ERROR_TYPE (errorType, 0)
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VtSetPkcs7Param (
      obj->p7EnvelopedData, VtPkcs7ParamEnvAES128CBC, info);

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, secureFileObj, status, 0, errorType,
    (char *)0, "VtSecureFileParamAES128CBC", fnctLine, (char *)0)

  return (status);
}

int VtSecureFileParamNewLineCharacter (
   VtSecureFileObject secureFileObj,
   Pointer info,
   unsigned int flag
   )
{
  int status;
  VoltSecureMailObject *obj = (VoltSecureMailObject *)secureFileObj;
  VoltSecureMailWriteCtx *writeCtx = (VoltSecureMailWriteCtx *)(obj->localCtx);
  unsigned int newLineFlag;
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  do
  {
    /* This Param cannot get info.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_GET;
    if (flag == VOLT_SECURE_FILE_GET_TYPE_FLAG)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_TYPE;
    if (flag != VOLT_SECURE_FILE_SET_TYPE_FLAG)
      break;

    /* The SecureMail object must be set to write.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_SECURE_FILE_OBJ;
    if (obj->state != VOLT_SECURE_MAIL_STATE_WRITE_SET)
      break;

    /* The associated info is a pointer to an unsigned int.
     */
    VOLT_SET_FNCT_LINE (fnctLine)
    status = VT_ERROR_INVALID_ASSOCIATED_INFO;
    if (info == (Pointer)0)
      break;

    VOLT_SET_FNCT_LINE (fnctLine)
    newLineFlag = *((unsigned int *)info);
    if ( (newLineFlag != VT_SECURE_MAIL_NEW_LINE_LF) &&
         (newLineFlag != VT_SECURE_MAIL_NEW_LINE_CR_LF) )
      break;

    /* We initialized the buffer holding the new line chars to be
     * CR_LF. So there's enough space in there to hold whatever is
     * requested.
     */
    status = 0;
    if (newLineFlag == VT_SECURE_MAIL_NEW_LINE_CR_LF)
    {
      writeCtx->itemArray[VOLT_WRITE_SM_ITEM_NEW_LINE].data[0] = 0x0d;
      writeCtx->itemArray[VOLT_WRITE_SM_ITEM_NEW_LINE].data[1] = 0x0a;
      writeCtx->itemArray[VOLT_WRITE_SM_ITEM_NEW_LINE].len = 2;
      break;
    }

    /* The caller wants LF.
     */
    writeCtx->itemArray[VOLT_WRITE_SM_ITEM_NEW_LINE].data[0] = 0x0a;
    writeCtx->itemArray[VOLT_WRITE_SM_ITEM_NEW_LINE].len = 1;

  } while (0);

  VOLT_LOG_ERROR_INFO_COMPARE (
    status, 0, secureFileObj, status, 0, VT_ERROR_TYPE_PRIMARY,
    (char *)0, "VtSecureFileParamNewLineCharacter", fnctLine, (char *)0)

  return (status);
}

⌨️ 快捷键说明

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