适配ofd签章SES_Signature

import org.bouncycastle.asn1.*;
import java.io.IOException;
import java.security.cert.Certificate;
import java.security.cert.CertificateEncodingException;
import java.util.Enumeration;/*** 电子签章数据** @author 权观宇* @since 2020-04-19 22:04:04*/
public class SES_Signature extends ASN1Object {/*** 签章信息*/private TBS_Sign toSign;/*** 签章者证书*/private ASN1OctetString cert;/*** 签名算法标识*/private ASN1ObjectIdentifier signatureAlgID;/*** 签名值*/private ASN1BitString signature;/*** 对签名值的时间戳【可选】*/private ASN1BitString timeStamp;public SES_Signature() {super();}public SES_Signature(TBS_Sign toSign,ASN1OctetString cert,ASN1ObjectIdentifier signatureAlgID,ASN1BitString signature,ASN1BitString timeStamp) {this.toSign = toSign;this.cert = cert;this.signatureAlgID = signatureAlgID;this.signature = signature;this.timeStamp = timeStamp;}public SES_Signature(ASN1Sequence seq) {Enumeration<?> e = seq.getObjects();this.toSign = TBS_Sign.getInstance(e.nextElement());Object signInfo = e.nextElement();if (signInfo instanceof ASN1OctetString) {this.cert = ASN1OctetString.getInstance(signInfo);this.signatureAlgID = ASN1ObjectIdentifier.getInstance(e.nextElement());this.signature = DERBitString.getInstance(e.nextElement());if (e.hasMoreElements()) {Object timestamp_asn1 = e.nextElement();if (timestamp_asn1 instanceof DERTaggedObject) {ASN1TaggedObject taggedObj = DERTaggedObject.getInstance((DERTaggedObject) timestamp_asn1);this.timeStamp = DERBitString.getInstance(taggedObj.getObject());} else {this.timeStamp = DERBitString.getInstance(timestamp_asn1);}}} else {this.signature = DERBitString.getInstance(signInfo);}/*Enumeration<?> e = seq.getObjects();toSign = TBS_Sign.getInstance(e.nextElement());cert = ASN1OctetString.getInstance(e.nextElement());signatureAlgID = ASN1ObjectIdentifier.getInstance(e.nextElement());signature = DERBitString.getInstance(e.nextElement());if (e.hasMoreElements()) {Object obj = e.nextElement();if (obj instanceof ASN1TaggedObject) {timeStamp = DERBitString.getInstance(((ASN1TaggedObject) obj).getObject());}}*/}public static SES_Signature getInstance(Object o) {if (o instanceof SES_Signature) {return (SES_Signature) o;} else if (o instanceof byte[]) {ASN1InputStream aIn = new ASN1InputStream((byte[]) o);try {ASN1Primitive obj = aIn.readObject();return new SES_Signature(ASN1Sequence.getInstance(obj));} catch (IOException e) {throw new IllegalArgumentException("电子签章数据v4 无法解析",e );}} else if (o != null) {return new SES_Signature(ASN1Sequence.getInstance(o));}return null;}public TBS_Sign getToSign() {return toSign;}public SES_Signature setToSign(TBS_Sign toSign) {this.toSign = toSign;return this;}public ASN1OctetString getCert() {return cert;}public SES_Signature setCert(ASN1OctetString cert) {this.cert = cert;return this;}public SES_Signature setCert(Certificate cert) throws CertificateEncodingException {this.cert = new DEROctetString(cert.getEncoded());return this;}public ASN1ObjectIdentifier getSignatureAlgID() {return signatureAlgID;}public SES_Signature setSignatureAlgID(ASN1ObjectIdentifier signatureAlgID) {this.signatureAlgID = signatureAlgID;return this;}public ASN1BitString getSignature() {return signature;}public SES_Signature setSignature(ASN1BitString signature) {this.signature = signature;return this;}public SES_Signature setSignature(byte[] signature) {this.signature = new DERBitString(signature);return this;}public ASN1BitString getTimeStamp() {return timeStamp;}public SES_Signature setTimeStamp(ASN1BitString timeStamp) {this.timeStamp = timeStamp;return this;}@Overridepublic ASN1Primitive toASN1Primitive() {ASN1EncodableVector v = new ASN1EncodableVector(5);v.add(toSign);v.add(cert);v.add(signatureAlgID);v.add(signature);if (timeStamp != null) {v.add(new DERTaggedObject(true, 0, timeStamp));}return new DERSequence(v);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

B站 汇编语言 视频 教程

视频资源&#xff1a;https://search.bilibili.com/all?keyword汇编 王爽汇编语言(全) 自学必备&#xff08;311集&#xff09;&#xff1a;https://www.bilibili.com/video/av34455803 小甲鱼零基础汇编真正全集1-17章&#xff08;77集&#xff09;&#xff1a; http…

Android应用程序变量

Android应用程序开发中&#xff0c;有的时候我们在应用程序的任何一个地方都需要访问一个全局变量&#xff0c;也就是在任何一个Activity中都可以访问的变量。它不会因为Activity的生命周期结束而消失。要实现应用程序级的变量&#xff0c;我们可以通过Application这个类来实现…

百度谷歌等联合推出机器学习基准 加速AI软硬件发展

来源&#xff1a;中国新闻网5月2日&#xff0c;由包括百度、谷歌、斯坦福大学、哈佛大学在内的多家企业和高校联合发布了一套用于测量和提高机器学习软硬件性能的国际基准MLPerf。其巨大的学术和产业价值获业界肯定&#xff0c;被认为不仅将加速推进机器学习硬件软件相关技术创…

王爽 汇编语言第三版 第10章 call 和 ret 指令 以及 子程序设计

第10章 call 和 ret 指令 10.1 ret 和 reft 指令 call 和 ret 指令都是转移指令&#xff0c;他们都修改 IP&#xff0c;或同事修改 CS 和 IP 。他们经常被共同来实现子程序的设计。 10.2 call 指令 和 根据位移 转移的call指令 段间转移 的 call 指令 转移地址 在 寄存器 中 的…

org/apache/maven/cli/MavenCli : Unsupported major.minor version 51.0

一、错误现象&#xff1a; 当改变了jdk版本时&#xff0c;在编译java时&#xff0c;会遇到Unsupported major.minor version错误。 jdk版本和stanford parser对应关系 JDK版本和Java编译器内部的版本号 J2SE 8 52, J2SE 7 51, J2SE 6.0 50, J2SE 5.0 49, JDK 1.4 48, J…

ip, tcp, udp, icmp header

Figure 1. IPv4 header Figure 2. TCP header Figure 3. UDP header Figure 4. ICMP header reference:TCP/IP Reference转载于:https://www.cnblogs.com/lbsx/archive/2010/11/30/1891814.html

人民日报三问人工智能,给法律制度带来哪些挑战?

来源&#xff1a;亿欧网 作者&#xff1a;倪弋摘要&#xff1a;人工智能生成物是否具有知识产权&#xff1f;人工智能可以替代司法者吗&#xff1f;人工智能侵权责任如何认定&#xff1f;人工智能的出现会给现行的法律制度带来了不少挑战&#xff0c;只有在法律研究上未雨绸缪…

zip4j包的简单使用

Zip4j学习 之前开发过程中遇到一个需求&#xff1a;需要往压缩文件的某些目录下插入一些文件。之前使用了一些方案&#xff08;例如ZipOutputStream&#xff09;&#xff0c;添加原理是新建一 个压缩文件&#xff0c;然后拷贝所有的文件&#xff0c;拷贝过程中添加新的文件进去…

测试用例设计--判定表

一. 判定表 定义判定表通常由四部分组成&#xff0c;如上图&#xff1a; 条件桩 : 它列出决定一组条件的对象&#xff1b; 条件项: 它列出各种可能的条件组合&#xff1b; 动作桩: 它列出所有的操作; 动作项: 它列出在对应的条件组合下的动作. 应用的范围在多个条件决定多个动…

王爽 汇编语言第三版 第11章 标志寄存器

条件码&#xff1a; ① OF(Overflow Flag)溢出标志&#xff0c;溢出时为1&#xff0c;否则置0.标明一个溢出了的计算&#xff0c;如:结构和目标不匹配.② SF(Sign Flag)符号标志&#xff0c;结果为负时置1&#xff0c;否则置0.③ ZF(Zero Flag)零标志&#xff0c;运算结果为0时…

Gartner:预计2018年人工智能行业总价值达1.2万亿美元

来源&#xff1a;网络大数据市场研究公司Gartner周三发布最新研究报告称&#xff0c;人工智能行业的总价值将在2018年达到1.2万亿美元&#xff0c;比2017年增长70%。其中&#xff0c;创造商业价值最大的领域是客户体验解决方案。该公司还预计&#xff0c;到2022年的时候&#x…

边标志法填充多边形

这里不仔细讲原理&#xff0c;只是把我写的算法发出来&#xff0c;跟大家分享下&#xff0c;如果有错误的话&#xff0c;还请大家告诉我&#xff0c;如果写的不好&#xff0c;也请指出来&#xff0c;一起讨论进步。 基本思想: 先用一种特殊的颜色在帧缓冲器中将多边形的边界(水…

JAVA将html[动态]页面转成图片

近日项目上接到一个任务&#xff0c;设计并编写住院病案首页页面&#xff0c;然后将其转换成图片显示给医生查看。 天哪&#xff0c;住院病案内容那么多&#xff0c;光编写这个页面就已经够呛了&#xff0c;转图片我也没弄过&#xff0c;于是百度了一下&#xff0c;花了两天时间…

王爽 汇编语言第三版 课程设计 1

From&#xff1a;https://www.cnblogs.com/Since-natural-ran/p/6938133.html 汇编语言-课程设计1: https://www.cnblogs.com/tsembrace/p/3267158.html 王爽课程设计1(汇编语言编写): https://www.imooc.com/article/18785 王爽《汇编语言》课程设计1: https://blog.csdn.net/…

挑战权威还是偏离主流?颠覆性研究或将证明神经信号是机械波

来源&#xff1a;科研圈 翻译 马骁骁 编辑 魏潇 廖红艳就职于哥本哈根尼尔斯玻尔研究所&#xff08;Niels Bohr Institute&#xff09;的托马斯亨伯格&#xff08;Thomas Heimburg&#xff09;&#xff0c;是一位研究量子力学和生物物理的物理学家。然而&#xff0c;他却希…

史上最全的女人坐月子注意事項

希望男人们要精心照顾好妻子&#xff0c;让妻子平安度过这一时期&#xff0c;为了宝宝&#xff0c;为了你们的幸福&#xff0c;因为你爱她就要呵护她&#xff0c;她好你也好&#xff0c;她平安就是你们全家的幸福&#xff0c;精致女人把祝福送给你们&#xff01; 传统上人们将产…

java安全解压文件

方法一 public class Decompression {private static final Logger LOGGER Logger.getLogger(Decompression.class);private static final int BUFFER 512;private static final int TOO_BIG 0x6400000;private static final int TOO_MANY 1024;private Decompression() {…

汇编语言 test 和 cmp 区别

From&#xff1a;https://blog.csdn.net/zz709196484/article/details/77755243 看过破解教程&#xff0c;都知道 test&#xff0c;cmp 是比较关键&#xff0c;可是我一直不清楚它们究竟是怎么比较的&#xff0c;最后下决心找了很多资料&#xff0c;和大家一起把它们弄清楚. 首…

斯坦福大学、DARPA与硅谷公司共同分析前沿科技发展趋势

来源&#xff1a;科技日报 作者&#xff1a;张梦然日前&#xff0c;斯坦福大学研究团队、美国国防部高级研究计划局&#xff08;DARPA&#xff09;以及硅谷创投公司和米资本的专家们&#xff0c;共同研讨了技术将如何重塑行业和社会等问题。他们分析了现今全球前沿科技的未来…

利用cookie的跨域单点登录的简单实现

Configuration:1. Web.Config在两个站点的配置配置文件machine节点上相同的validationKey, decryptionKey and validation的值&#xff0c;如<machineKey validationKey"282487E295028E59B8F411ACB689CCD6F39DDD21E6055A3EE480424315994760ADF21B580D8587DB675FA02F791…