标签: digital-signature

用于 XML 数字签名的命令行工具

是否有用于 XML 数字签名的命令行工具?

我在这里找到了一个: http: //www.codeproject.com/KB/security/xmldsiglic.aspx ,但它需要 .NET Framework,我更喜欢它在没有 .NET 的情况下工作

xml command-line digital-signature xml-signature

5
推荐指数
1
解决办法
1万
查看次数

在 Mac Adob​​e Reader 上验证数字签名

我正在尝试使用 GoDaddy 颁发的 SSL 证书对 PDF 进行签名。

只要您在 WindowsEdit->Preferences...->Security->Advanced Preferences->Windows Integration->Trust ALL root certificates证书存储区中选中“验证签名”复选框以进行以下操作,这些签名就会在 Windows Reader 中显示为有效。

但是,我似乎在 Mac OS X 版本的 Reader 中找不到类似的设置。Mac OS X 似乎在钥匙串中具有与 Windows 证书存储类似的东西(特别是 GoDaddy 的系统根)。

有人知道 Mac 版本上的设置与我提到的 Windows 设置类似吗?如果没有,是否有其他 PDF 阅读器适合这种情况?

pdf macos acrobat digital-certificate digital-signature

5
推荐指数
1
解决办法
2万
查看次数

如何对 JPG、TIFF 和 BMP 等图像进行数字签名

我希望对我的图像集进行数字签名,其中包含 JPG 、 TIFF 、 BMP 、 SWf 、 Fla 文件。

我的问题是如何对这些图像进行数字签名?如果我签署 JPG 或 Tiff ,签名是否会附加到这些文件上(就像 PDF 或 MS Word 等文档文件中发生的那样)?如果是这样,它会存储在文件元数据字段中,还是保留在外部?我可以提取签名数据吗?请注意,我希望单独签署这些图像,并且不想将其转换为 PDF 等任何其他格式。我也不想使用电子邮件客户端对其进行签名。

digital-signature

5
推荐指数
1
解决办法
2万
查看次数

从命令行查看/显示 PDF 的数字签名

我正在尝试了解有关数字签名的更多信息,并在此过程中想尝试验证签名文件的真实性。我读到 GPO 签署了他们在 gpo.gov 上托管​​的所有文件,所以这些就是我一直在查看的文件。这是特别的一个:

\n\n

http://www.gpo.gov/fdsys/search/pagedetails.action?capsuleId=&packageId=BUDGET-2013-BUD

\n\n

我在站点链接到的真实性元数据“PREMIS”文件中找到了公钥,但节点是空的\xe2\x80\x94我假设这是我可以找到文件签名的地方。

\n\n

我可以使用以下命令创建文件的 sha-1 摘要:

\n\n
openssl dgst -sha1 -out digest.txt BUDGET-2013-BUD.pdf\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的理解是,要验证文件的真实性,我需要 1)文件摘要,2)签名者的公钥,3)签名,使用这样的命令(我在这里找到) :

\n\n
openssl rsautl -verify -in <signature> -out <digest> \\\n     -inkey <key> -pubin\n
Run Code Online (Sandbox Code Playgroud)\n\n

我知道您可以使用 Adob​​e Reader 来验证数字签名的 PDF,但是否也可以从命令行执行此操作?除了签名之外,我还应该寻找其他东西来完成此任务吗?

\n

openssl sha1 digital-signature

5
推荐指数
0
解决办法
3609
查看次数

为什么 .key 文件包含 P、Q、DP、DQ

通过加载包含 RSA 私钥的预创建 .key 文件,只有我注意到,它包含以下数字:

Modulus     (private modulus)
Exponent    (private exponent)
P           (prime exponent)
Q           (prime exponent)
DP
DQ
InverseQ
Run Code Online (Sandbox Code Playgroud)

我将密钥文件保存在存储空间非常小的地方(便携式)。我想只保存模数和指数。我知道 P、Q 和 E 对于创建模数和指数是必要的,但是:

问题:

当 PrivateModulus 和 PrivateExponent 足以签名解密消息时,将所有这些数据保存到 .key 文件的目的是什么?

encryption rsa digital-signature

5
推荐指数
1
解决办法
4578
查看次数

对强命名的 .NET 程序集进行数字签名

我有一个 .NET 程序集,我对其进行了强命名,并将其放入 GAC 中。.pfx但是,稍后还会使用文件对同一程序集进行数字签名,以进行数字签名。
我注意到这个经过双重签名的程序集未通过强名称验证,并且不会安装在目标计算机的 GAC 中。

数字签名过程是否有可能删除 SN 密钥生成的强命名过程?

数字签名是必不可少的,如果两者不兼容,那么文件可以由数字签名吗?.pfx像 SN 命名过程一样简单地由文件对文件进行签名?

另外,程序集位于C++/CLI,而不是C#

编辑:查看MSDN 文档,它说是否使用链接器选项进行强命名,以及是否使用像这样的后处理工具mt.exe(我不确定是否Signtool.exe属于这些工具),则需要重新签署程序集。

另外,这个声明:

如果在开发环境中生成时使用签名属性,则可以通过在生成后事件中显式调用 sn.exe(Sn.exe(强名称工具))来成功对程序集进行签名。

...有点令人困惑。它指的是哪些属性,CLR属性还是Linker选项?

.net strongname c++-cli authenticode digital-signature

5
推荐指数
1
解决办法
1227
查看次数

从 Windows 中的 PE 可执行文件中检索双重签名信息的修正代码?

我一直在努力修改来自 Microsoft 的此代码示例该示例显示(有些过时)如何从可执行文件中检索代码签名信息。它可以工作,但如果二进制文件是双重签名的,则它不会检索信息。

所以我做了一些研究并尝试重写它以使其识别 Windows 中许多现代可执行文件中存在的双重签名。不幸的是,很少有(模糊的)建议可用(1),(2),例如使用UnauthenticatedAttributesszOID_NESTED_SIGNATURE(无论这意味着什么)但仅用于检索时间戳的建议。

所以我试图重写那个微软代码,这是我得到的:

(要构建它,只需将其复制到 Visual Studio 控制台项目中并更改 .exe 文件路径。处理双重签名的代码在PrintDualSignatureInfo()函数中。)

#include "stdafx.h"

//SOURCE:
//      https://support.microsoft.com/en-us/help/323809/how-to-get-information-from-authenticode-signed-executables
//

#include <windows.h>
#include <wincrypt.h>
#include <wintrust.h>
#include <stdio.h>
#include <tchar.h>
#include <atlconv.h>

#pragma comment(lib, "crypt32.lib")

#define ENCODING (X509_ASN_ENCODING | PKCS_7_ASN_ENCODING)

typedef struct {
    LPWSTR lpszProgramName;
    LPWSTR lpszPublisherLink;
    LPWSTR lpszMoreInfoLink;
} SPROG_PUBLISHERINFO, *PSPROG_PUBLISHERINFO;



BOOL GetProgAndPublisherInfo(PCMSG_SIGNER_INFO pSignerInfo,
                             PSPROG_PUBLISHERINFO Info);
BOOL GetDateOfTimeStamp(PCMSG_SIGNER_INFO pSignerInfo, SYSTEMTIME *st);
BOOL PrintCertificateInfo(PCCERT_CONTEXT pCertContext);
BOOL GetTimeStampSignerInfo(PCMSG_SIGNER_INFO …
Run Code Online (Sandbox Code Playgroud)

c++ winapi code-signing authenticode digital-signature

5
推荐指数
1
解决办法
1359
查看次数

使用Java验证Golang创建的签名

我在 Go 中创建一个签名,例如:

//I'm reading a file with -----BEGIN RSA PRIVATE KEY-----
privateKeyPem := strings.Replace(privateKeyString, `\n`, "\n", -1) //file has '/n' instead of break lines for dev purposes
block, _ := pem.Decode([]byte(privateKeyPem))
key, _ := x509.ParsePKCS1PrivateKey(block.Bytes)
hashedString := sha256.Sum256([]byte(stringTosign))
signature, err = rsa.SignPKCS1v15(rand.Reader, key, crypto2.SHA256, hashedString[:])
signatureString := base64.StdEncoding.EncodeToString(signature)
Run Code Online (Sandbox Code Playgroud)

Java 程序接收变量 signatureString 并执行以下操作:

byte[] keyBytes = Files.readAllBytes(Paths.get("./golangSignerPubKey.der"));
X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes);
KeyFactory kf = KeyFactory.getInstance("RSA");
PublicKey publicKey =  kf.generatePublic(spec);
Signature signature = Signature.getInstance("SHA256withRSA", "BC");
signature.initVerify(publicKey);
signature.update(stringUnsigned.getBytes());
boolean signatureIsValid = …
Run Code Online (Sandbox Code Playgroud)

java go digital-signature x509

5
推荐指数
1
解决办法
590
查看次数

即使更改了签名的最后一个字符,JWT 令牌解码

我只是在 Rails 应用程序上试用 JWT 令牌,使用这个 jwt 库:https : //github.com/jwt/ruby-jwt

JWT.encode({sss: "333"}, 'SECRET_KEY')
Run Code Online (Sandbox Code Playgroud)

返回以下令牌:

eyJhbGciOiJIUzI1NiJ9.eyJzc3MiOiIzMzMifQ.CwX_1FztYHVpyx_G27u938SceilsVc5AB5Akwqlo2HA

然后我使用上面的令牌解码

JWT.decode("eyJhbGciOiJIUzI1NiJ9.eyJzc3MiOiIzMzMifQ.CwX_1FztYHVpyx_G27u938SceilsVc5AB5Akwqlo2HA", 'SECRET_KEY')
Run Code Online (Sandbox Code Playgroud)

正确返回以下响应:

[{"sss"=>"333"}, {"alg"=>"HS256"}]

但是,如果我尝试将令牌的最后一个字母更改为B而不是当前的A,它仍然返回相同的响应,这很奇怪。

JWT.decode("eyJhbGciOiJIUzI1NiJ9.eyJzc3MiOiIzMzMifQ.CwX_1FztYHVpyx_G27u938SceilsVc5AB5Akwqlo2HB", 'SECRET_KEY')
Run Code Online (Sandbox Code Playgroud)

即使我提供的令牌是错误的,也会收到此响应:

[{"sss"=>"333"}, {"alg"=>"HS256"}]

实际上,我对所有字符都得到了相同的响应,直到 'D'

如果我使用F上面的和其他人,那么它会按预期显示错误:

JWT.decode("eyJhbGciOiJIUzI1NiJ9.eyJzc3MiOiIzMzMifQ.CwX_1FztYHVpyx_G27u938SceilsVc5AB5Akwqlo2HF", 'SECRET_KEY')
Run Code Online (Sandbox Code Playgroud)

JWT::VerificationError(引发签名验证)来自 (irb):34

这可能是什么原因?这是预期的行为还是我在这里做错了什么?

base64 ruby-on-rails digital-signature jwt

5
推荐指数
1
解决办法
1833
查看次数

如何使用 python 创建包含签名字段的 PDF 文件?

为了能够使用基于令牌的 DSC 对 PDF 文档进行签名,我的 PDF 中需要一个所谓的签名字段。

这是一个矩形区域,您可以使用例如 Adob​​e Reader 或 Adob​​e Acrobat 用数字签名填充。

矩形区域的图像,您可以使用例如 Adob​​e Reader 或 Adob​​e Acrobat 用数字签名填充。

我想用 Python 创建这个可签名的 PDF。

我从纯文本或 .docx 格式的富文本文档(图像和文本)开始。

如何在 Python 中使用此字段生成 PDF 文件?

python pdf pdf-generation digital-signature

5
推荐指数
2
解决办法
3613
查看次数