Java中需要一些加密例程的帮助.

鉴于PKCS#7签名,我想验证它对可信商店包含的所有证书.我假设签名中包含的所有证书都以正确的顺序形成有效的证书路径(或链,无论如何),以便这样做

> topmost(#0)是签名证书;

>下一个(#1)是一个中间证书,用于签署#0;

>下一个(#2)是另一个中间证书,用于签署#1;

>依此类推.

最后一个证书(#N)由CA签名.

这就是我到目前为止所做的事情:

// Exception handling skipped for readability

//byte[] signature = ...

pkcs7 = new PKCS7(signature); // `sun.security.pkcs.PKCS7;`

// *** Checking some PKCS#7 parameters here

X509Certificate prevCert = null; // Previous certificate we've found

X509Certificate[] certs = pkcs7.getCertificates(); // `java.security.cert.X509Certificate`

for (int i = 0; i < certs.length; i++) {

// *** Checking certificate validity period here

if (cert != null) {

// Verify previous certificate in chain against this one

prevCert.verify(certs[i].getPublicKey());

}

prevCert = certs[i];

}

//String keyStorePath = ...

KeyStore keyStore = KeyStore.getInstance("JKS"); // `java.security.KeyStore`

keyStore.load(new FileInputStream(keyStorePath), null);

// Get trusted VeriSign class 1 certificate

Certificate caCert = keyStore.getCertificate("verisignclass1ca"); // `java.security.cert.Certificate`

// Verify last certificate against trusted certificate

cert.verify(caCert.getPublicKey());

所以问题是 – 如何使用像CertPath和朋友这样的标准Java类来完成这项工作?我有一种强烈的感觉,我正在重新发明一辆自行车.或者,如果某人有BouncyCastle库的示例,那也没关系.

红利问题:如何针对受信任的商店验证证书,以便自动选择根证书?

java pkcs_用Java验证PKCS#7证书相关推荐

  1. java 验证码透明背景_Java中的证书透明度验证

    java 验证码透明背景 因此,我有一个幼稚的想法,即除了证书有效性检查(在Java中)之外,将证书透明性验证作为每个请求的一部分也很容易. 牺牲了整个周末的一半时间,我可以证明这并不是一件小事. 但 ...

  2. java数字签名(签名生成,用证书验证签名)

    部分签名原理 http://blog.csdn.net/lijiecong/archive/2010/12/24/6096289.aspx (转载序:网上找的好文章,一篇就把我找了几天的所有东西都概括 ...

  3. java pkcs_在 Python 3 (PKCS#1)中,如何正确使用来自 Java (PKCS#8) 的 RSA 私钥,进行数据解密?...

    问题描述 在使用 Python 访问由 Java 写的服务器的时候,服务器返回的资源是通过 RSA 加密的,我有 Java 中生成的 RSA 私钥字符串.但是在解密的时候,出现问题. 后面了解到(看了 ...

  4. Java加密与解密的艺术~数字证书~证书管理openssl

    OpenSSL功能远胜于KeyTool,可用于根证书,服务器证书和客户证书的管理 这里使用的是Win32OpenSSL_Light-1_0_1e.exe http://www.slproweb.com ...

  5. java 庖丁解牛api_Java 微信支付 APIv3 平台证书的命令行下载工具

    Certificate Downloader Certificate Downloader 是 Java 微信支付 APIv3 平台证书的命令行下载工具.该工具可从 https://api.mch.w ...

  6. HIDL示例-JAVA服务创建-Client验证-Android10.0 HwBinder通信原理(四)

    摘要:本节主要来讲解Android10.0 JAVA层的HIDL服务创建和JAVA层的Client验证 阅读本文大约需要花费15分钟. 文章首发微信公众号:IngresGe 专注于Android系统级 ...

  7. 两步验证杀手锏:Java 接入 Google 身份验证器实战

    转载自   两步验证杀手锏:Java 接入 Google 身份验证器实战 什么是两步验证? 大家应该对两步验证都熟悉吧?如苹果有自带的两步验证策略,防止用户账号密码被盗而锁定手机进行敲诈,这种例子屡见 ...

  8. 针对Java中的XSD验证XML

    有许多工具可用于根据XSD 验证XML文档 . 其中包括操作系统脚本和工具,例如xmllint ,XML编辑器和IDE,甚至是在线验证器. 由于前面提到的方法的局限性或问题,我发现拥有自己的易于使用的 ...

  9. 如何在Java中针对XSD验证XML

    Java XML Validation API can be used to validate XML against XSD in java program. javax.xml.validatio ...

最新文章

  1. IDC评述网:7月上旬国内域名解析服务商Top10
  2. java el表达式 if else_jsp EL表达式和JSTL标签if-else if-else用法
  3. Android基础_1 四大基本组件介绍与生命周期
  4. hust1346(两个线段的最近距离和最小距离)
  5. 大白菜pe解锁bitlocker_微PE工具箱 v2.1 官方版,最好用的 Win10PE 系统
  6. java常见的内存溢出
  7. Android 功耗优化(4)---android 7.0低电耗Doze模式
  8. centos7更改默认的python版本,安装python3.6.4
  9. OKR教练:为何落地OKR需要复盘?
  10. Linux系统下如何显示隐藏文件
  11. java取拼音首字母
  12. FTDI的LibMPSSE编译流程
  13. EasyRecovery15手机电脑全功能数据恢复软件
  14. 手撕十大排序算法①——思路讲解
  15. php 砸金蛋抽奖,jQuery抽奖砸金蛋代码
  16. html正片叠底 透明度,css3正片叠底(示例代码)
  17. stata一开始处理wind数据——批量处理标签和标题
  18. 被通知一个月离职,我修改了项目中的所有注释……
  19. php敏感函数,PHP中的敏感函数
  20. 学生计算机组装与维修总结,学生计算机组装与维修总结.docx

热门文章

  1. 机器人学(四):位姿的直线插补
  2. 只有在vc 中才能使用mfc吗?什么是MFC?
  3. CocoaPods的使用--
  4. 新型激光辨识算法助力机器人逃离死胡同
  5. 1.2命题公式及其赋值
  6. Mysql—数据模型
  7. ENVI:分类后处理_小斑块去除_Majority/Minority处理、聚类处理、过滤处理等
  8. 请问投稿中要求上传的author_SCI投稿过程中主要有哪些状态,持续时间大概多久?...
  9. 怎么让网页变成黑白色
  10. VS2013卸载QT插件