DigitalSignatureUtil

DigitalSignatureUtil class

提供签署文件的方法。

要了解更多信息,请访问使用数字签名文档文章。

public static class DigitalSignatureUtil

方法

姓名描述
static LoadSignatures(Stream)使用流从文档加载数字签名。
static LoadSignatures(string)从文档加载数字签名。
static RemoveAllSignatures(Stream, Stream)从源流中的文档中删除所有数字签名,并将未签名的文档写入目标流。
static RemoveAllSignatures(string, string)从源文件中删除所有数字签名,并将未签名的文件写入目标文件。
static Sign(Stream, Stream, CertificateHolder)使用给定的签名源文档CertificateHolder使用数字签名 并将签名文档写入目标流。
static Sign(string, string, CertificateHolder)使用给定的签名源文档CertificateHolder使用数字签名 并将签名文档写入目标文件。
static Sign(Stream, Stream, CertificateHolderSignOptions)使用给定的签名源文档CertificateHolderSignOptions 带有数字签名并将签名文档写入目标流。
static Sign(string, string, CertificateHolderSignOptions)使用给定的签名源文档CertificateHolderSignOptions 带有数字签名并将签名文档写入目标文件。

评论

由于数字签名与文件内容而不是文档对象模型一起工作,因此这些方法被放入单独的类中。

支持的格式为: Doc , Dot , Docx , Dotx , Docm , Dotm , Odt , Ott。

例子

展示如何从数字签名的文档中加载签名。

// 有两种方法可以使用 DigitalSignatureUtil 类加载已签名文档的数字签名集合。
// 1 - 从本地文件系统文件名中的文档加载:
DigitalSignatureCollection digitalSignatures = 
    DigitalSignatureUtil.LoadSignatures(MyDir + "Digitally signed.docx");

// 如果此集合非空,那么我们可以验证该文档是否经过数字签名。
Assert.AreEqual(1, digitalSignatures.Count);

// 2 - 从 FileStream 中的文档加载:
using (Stream stream = new FileStream(MyDir + "Digitally signed.docx", FileMode.Open))
{
    digitalSignatures = DigitalSignatureUtil.LoadSignatures(stream);
    Assert.AreEqual(1, digitalSignatures.Count);
}

展示如何从数字签名的文档中删除数字签名。

// 使用 DigitalSignatureUtil 类删除数字签名有两种方法
// 通过将签名文档的未签名副本保存在本地文件系统的其他位置来获取签名文档。
// 1 - 通过文件名字符串确定已签名文档和未签名副本的位置:
DigitalSignatureUtil.RemoveAllSignatures(MyDir + "Digitally signed.docx",
    ArtifactsDir + "DigitalSignatureUtil.LoadAndRemove.FromString.docx");

// 2 - 通过文件流确定已签名文档和未签名副本的位置:
using (Stream streamIn = new FileStream(MyDir + "Digitally signed.docx", FileMode.Open))
{
    using (Stream streamOut = new FileStream(ArtifactsDir + "DigitalSignatureUtil.LoadAndRemove.FromStream.docx", FileMode.Create))
    {
        DigitalSignatureUtil.RemoveAllSignatures(streamIn, streamOut);
    }
}

// 验证我们的输出文档都没有数字签名。
Assert.AreEqual(0, DigitalSignatureUtil.LoadSignatures(ArtifactsDir + "DigitalSignatureUtil.LoadAndRemove.FromString.docx").Count);
Assert.AreEqual(0, DigitalSignatureUtil.LoadSignatures(ArtifactsDir + "DigitalSignatureUtil.LoadAndRemove.FromStream.docx").Count);

也可以看看