# include“ltdic.h”
L_LTDIC_APIL_UINT16L_DicomCreateSignature (hDS, pItem, pszPrivateKeyFile, pszCertificateFile, pszPassword, ppSignatureItem, pszMacTransferSyntax, uMacAlgorithm, pElementsToSign, uCount, uSecurityProfile, uReserved);
在数据集中创建数字签名。
一个DICOM句柄。
指向DICOMELEMENT结构,它指定数据集中项目序列中的一个项。数字签名将在此项目中创建。如果该参数设置为NULL,则将在主数据集中创建数字签名。
字符串,包含存储用于加密消息身份验证码(MAC)的私钥的文件名。该函数接受来自以下格式文件的私钥:
如果私钥是加密存储的,则使用参数pszPassword指定密码。
字符串,包含存储签名者的数字证书的文件的名称。这将是签名者证书(0400,0115)。如果文件中存储了多个数字证书,则使用第一个数字证书。对于最后一种格式(PKCS#12),如果数字证书是加密存储的,则使用参数pszPassword指定密码。对于其他格式,该参数将被忽略。如果指定的私钥与数字证书的公钥不匹配,则该功能将失败。该函数接受来自以下格式文件的X.509数字证书:
价值 | 意义 |
---|---|
PEM | (通常是。pem,。cer,或。crt) |
DER | (通常是。cer或。crt) |
PKCS # 7 PEM | (通常是.pem) |
PKCS # 7 DER | (通常是。p7b或。spc) |
PKCS # 12 | (通常是pfx或p12) |
私钥加密存储时使用的密码字符串。密码也将用于PKCS#12数字证书。如果不需要输入密码,则设置为NULL。
指向指向对象的指针DICOMELEMENT结构。如果成功,*ppSignatureItem将更新为指向新数字签名序列项的指针,该数字签名序列项对应于新创建的数字签名。该参数可以设置为NULL。
包含MAC计算传输语法UID(0400,0010)的字符串。这是MAC计算中包含的数据元素应该被编码的传输语法。该参数可以设置为NULL。有关更多细节,请参阅评论。
指定MAC算法(0400,0015)的值。这是用来生成MAC的算法。可能的值有:
价值 | 意义 |
---|---|
DICOM_MAC_ALGORITHM_RIPEMD160 | [0]推荐使用RIPEMD-160哈希函数。 |
DICOM_MAC_ALGORITHM_SHA1 | [1]使用SHA-1哈希功能。 |
DICOM_MAC_ALGORITHM_MD5 | [2]使用MD5哈希功能。 |
指向包含要签名的数据元素的标签的数组的指针。数组中标签的数量由参数uCount给出。如果数字签名是在主数据集中创建的(pItem为NULL),则只有数据集根上的数据元素可以被标签引用。类似地,如果数字签名是在项目序列的项目中创建的,则只有该项下的数据元素可以被标签引用。该参数可以设置为NULL。有关更多细节,请参阅评论。
值,该值指定由参数pElementsToSign指定的数组中标签的数量。
值,指定在创建数字签名时遵循的数字签名安全配置文件。可能取值为:
价值 | 意义 |
---|---|
DICOM_SECURITY_PROFILE_NONE | [0]不符合任何数字签名安全配置文件。 |
DICOM_SECURITY_PROFILE_BASE_RSA | [1] RSA (Base Rivest-Shamir-Adleman)数字签名配置。 |
DICOM_SECURITY_PROFILE_CREATOR_RSA | [2]符合Creator RSA数字签名配置文件。 |
DICOM_SECURITY_PROFILE_AUTHORIZATION_RSA | [3]符合授权RSA数字签名配置文件。 |
有关更多细节,请参阅评论。
保留以备将来使用。这必须设置为0。
价值 | 意义 |
---|---|
DICOM_SUCCESS | 活动很成功。 |
< > DICOM_SUCCESS | 发生错误。指返回代码. |
数字签名可以在主数据集中创建,也可以在项序列中的项中创建。如果您想在主数据集中创建数字签名,或者在数据集中指定一个项目以在该项目中创建数字签名,则为参数pItem传递NULL。
参数pszMacTransferSyntax指定对消息验证码(MAC)计算中包含的数据元素进行编码的传输语法。此传输语法必须显式地包括值表示(显式VR),并且必须使用小端字节排序。如果指定的传输语法不满足此条件,则函数将表现为将参数设置为NULL。
如果pszMacTransferSyntax设置为NULL,函数将使用数据集当前编码的传输语法,如果该传输语法满足前一段中提到的条件。如果没有,函数将使用显式VR小端转移语法。
您可以使用参数pElementsToSign和uCount来指定新的数字签名所涵盖的数据元素。如果pItem设置为NULL,这些由它们的标签表示的数据元素必须在数据集的根上。如果pItem指定了一个Item,那么它们必须直接位于该Item下面。任何没有在预期位置指定现有数据元素的标记都将被忽略。同样,任何指定数据元素的标签如果不能按照标准进行签名,也会被忽略。
如果pElementsToSign被设置为NULL,或者uCount被设置为0,该函数将对所有根据标准可以签名的数据元素进行签名,并且这些数据元素存在于数据集的根目录中,如果pItem被设置为NULL,或者紧挨着pItem指定的Item之下。
数字签名安全配置文件增加了限制和规范。例如,RSA (Rivest-Shamir-Adleman)安全配置文件要求使用RSA加密。因此,如果使用了其中一个安全配置文件,而指定的密钥是DSA密钥,则该功能将失败。另一个例子是,创建者和授权RSA数字签名配置文件要求,如果存在某些数据元素,至少必须对其进行签名。因此,如果使用了这些安全配置文件中的一个,该函数将对所需的任何现有数据元素进行签名,即使该数据元素没有包含在pElementsToSign指定的数组中。
必需的dll和库
Win32, x64
L_INT DicomCreateSignatureExample(HDICOMDS)
{
pDICOMELEMENT pSignatureItem;
//在主数据集中创建一个数字签名
L_UINT16 uRet = l_dicomcreatesignsignature (hDS,
空,
MAKE_IMAGE_PATH(文本("私钥样本。pem")),
MAKE_IMAGE_PATH(文本(“CA.pem”)),
空,
&pSignatureItem,
空,
DICOM_MAC_ALGORITHM_RIPEMD160,
空,
0,
DICOM_SECURITY_PROFILE_NONE,
0);
如果(uRet == DICOM_SUCCESS)
对话框(NULL,文本(“数字签名已成功创建。”),文本(“样本”), MB_OK);
其他的
{
L_TCHAR szMsg [64];
wsprintf (szMsg文本("发生错误[错误:%hu]。"), uRet);
消息框(NULL, szMsg, TEXT(“样本”), MB_OK);
返回uRet;
}
//保存签名的数据集
= L_DicomSaveDS(hDS,MAKE_IMAGE_PATH(TEXT(“Signed.dcm”)), 0);
如果(uRet != DICOM_SUCCESS)
返回uRet;
//检查我们刚刚创建的数字签名
//参数l_dicomverifsignature为例
// function DicomVerifySignatureExample
uRet = (L_UINT16) DicomVerifySignatureExample(hDS, pSignatureItem);
返回uRet;
}
帮助收藏
光栅net|C API|c++类库|HTML5 JavaScript
文档net|C API|c++类库|HTML5 JavaScript
医疗net|C API|c++类库|HTML5 JavaScript
医疗网络查看器net
188宝金博怎么下载
支持的平台上
.NET、Java、Android和iOS/macOS程序集
C API/ c++类库
HTML5 JavaScript库
您的邮件已发送给技术支持!应该有人联系!如果你的事情很紧急,请回来聊天。
聊天时间:
周一至周五,美国东部时间上午8:30至下午6:00
感谢您的反馈!
请再次填写表格,开始新的聊天。
所有代理目前都离线。
聊天时间:
星期一至星期五
美国东部时间上午8:30 -下午6点
如需与我们联系,请填写此表格,我们将通过电子邮件与您联系。