小编Bro*_*oks的帖子

XMMATRIX operator()与xnamath.h一起使用,但不适用于DirectXMath.h

我是DirectX编程和Visual C ++的新手,将从xnamath.h找到的示例迁移到DirectXMath.h时遇到问题。我正在使用Visual Studio 2012。

代码的目的仅仅是初始化XMMATRIX,然后在控制台中显示它。原始代码如下所示(工作正常):

#include <windows.h>
#include <xnamath.h>
#include <iostream>
using namespace std;

ostream& operator<<(ostream& os, CXMMATRIX m)
{
    for(int i = 0; i < 4; ++i)
    {
        for(int j = 0; j < 4; ++j)
            os << m(i, j) << "\t";
        os << endl;
    }
    return os;
}

int main()
{
    XMMATRIX A(1.0f, 0.0f, 0.0f, 0.0f,
               0.0f, 2.0f, 0.0f, 0.0f,
               0.0f, 0.0f, 4.0f, 0.0f,
               1.0f, 2.0f, 3.0f, 1.0f);

    cout << "A = " << endl << A …
Run Code Online (Sandbox Code Playgroud)

directx directx-11 visual-c++

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

在 Python 中验证数字签名的 PDF

我目前正在使用 Python 处理一些 PDF 处理代码。对于这个项目,软件需要能够验证 PDF 是否具有有效的数字签名。到目前为止,在我的搜索中,我发现了一些可以解决问题的 Java API(例如 iText),但在 Python 中却没有。如果有人有以下任何一项的链接,将不胜感激:

  • 我可以用来验证数字签名的 API
  • 关于如何编写自己的代码来验证数字签名的说明/一般指南

其他细节:

  • PDF 的数字证书由 GlobalSign CA for Adob​​e 颁发(如果重要)
  • 此代码最终将在 Google App Engine 上运行

python pdf google-app-engine digital-signature

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

结合验证PKCS#7签名所需的所有任务

我一直在用这个问题敲打墙头约20个小时,我可能会错过一些简单的事情.但是,我已经到了我认为需要帮助的地步.我已经阅读了几十个关于如何解决问题的不同部分的解释,但我无法弄清楚如何将它们整合在一起.

我有一个DER编码的分离式PKCS#7数字签名.签名符合RFC 3852(加密消息语法).对于我的项目,我需要逐步完成验证签名所需的每个步骤,并能够确定验证失败的步骤.我在Java中使用BouncyCastle.

据我了解,验证数字签名需要六个基本步骤

  1. 验证根证书是否为可信证书
  2. 验证从根证书到签名证书的证书链
  3. 验证签名者的姓名是您期望的名称
  4. 验证证书是否已过期
  5. 验证证书是否未出现在CRL上(为简单起见,假设已在本地下载CRL)
  6. 验证签名中的摘要是否与文档的摘要匹配

编辑:几条评论要求在列表中添加OSCP检查.

在BouncyCastle测试代码中,我能够找到以下示例.它似乎完成了2/6,然而,它并不清楚它是否完成了任何任务.如果有人能指出我正确的方向完成剩下的任务,我们将不胜感激.

CMSSignedData s = ...
byte[] contentDigest = ...

Store certStore = s.getCertificates();
Store crlStore = s.getCRLs();
SignerInformationStore  signers = s.getSignerInfos();

Collection c = signers.getSigners();
Iterator it = c.iterator();

while (it.hasNext())
{
    SignerInformation   signer = (SignerInformation)it.next();
    Collection certCollection = certStore.getMatches(signer.getSID());

    Iterator certIt = certCollection.iterator();
    X509CertificateHolder cert = (X509CertificateHolder)certIt.next();

    assertEquals(true, signer.verify(new JcaSimpleSignerInfoVerifierBuilder().setProvider(BC).build(cert)));

    if (contentDigest != null)
    {
        assertTrue(MessageDigest.isEqual(contentDigest, signer.getContentDigest()));
    }
}

Collection certColl = certStore.getMatches(null);
Collection crlColl = crlStore.getMatches(null);

assertEquals(certColl.size(), …
Run Code Online (Sandbox Code Playgroud)

java cryptography bouncycastle digital-signature

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