用于检查特定EXE文件签名的内容
What to use to check for a specific EXE file signature?
我找到了这篇MSDN文章,它解释了如何检索Authenticode签名的可执行文件的信息。它以以下格式检索数据:
Signer Certificate:
Serial Number: 00 90 1a 1a 1b 1c 1c 26 3d 4f 56 61 70 8f 94 7f e0
Issuer Name: COMODO Code Signing CA 2
Subject Name: Signer's Name
我的目标是验证EXE文件是否使用属于该公司的特定签名证书进行了签名。为此,我显然可以检查Subject Name
,但我对Serial Number
:很好奇
Serial Number
是否可以用于验证EXE文件是否使用特定证书签名?我的测试表明,如果我签署多个文件,它不会改变。续订证书时,这个序列号会保持不变吗?
IssuerRDN(标识颁发者的字段集)和SerialNumber字段的组合根据RFC 5280唯一标识证书。
RFC没有定义如果证书被重新颁发会发生什么,但我认为序列号已经更改。原因是新证书与以前的证书不同,因此必须唯一标识。
因此,对于您的任务,更好的方法是
- 完全验证证书链以确保证书的完整性和真实性
- 检查颁发者名称
- 检查主题名称
- 检查密钥用法字段
这将确保该证书对该公司是有效和授权的,同时该算法使您免于只检查一个证书的错误(如果证书因任何原因被吊销并替换为新证书,则该错误可能会导致麻烦)。
相关文章:
- 如何将 UTF-8 文本从文件转换为某个可以迭代的容器,并检查每个符号是否为C++字母数字?
- 如何检查函数是否在LLVM Instrumentation pass的ModulePass的系统头文件中定义?
- 如何检查流中文件的下一个单词是否为 alpha?
- 如何检查文件是否已存在于 fstream C++中
- CocoaPod - 在头文件中使用 C++ 时出现 Podspec 检查错误
- 如何使用 ifstream 检查文件中变量的类型?
- 检查特定txt文件中的项目是否符合"名称编号USACO"中的约束
- 如何检查字符串格式在读取C++文本文件时是否有效?
- 文件存在时的最新检查声明生成输入"is missing"
- 如何检查C++中是否存在文件?
- 检查cpp文件中是否使用了变量
- C++ 如何检查哪些单词不在 2 个类似文件中
- 如何检查文件复制和写入是否成功
- 如何检查二进制文件中是否存在字符串
- 如何在SWIG接口文件中检查Lua版本
- 检查特定目录中是否存在与文件匹配的 abc* 的最佳方法
- 如何检查从键盘输入的特定整数值是否存在于C++文件中的一行或多行中
- 功能调用,该函数从文本文件-C 检查输入正确性
- 如何在C++中进行文件检查
- 使用vim中的语法启用cpp头文件检查