📄 sfwritetype.c
字号:
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 + -