日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

适配ofd签章SES_Signature

發布時間:2023/12/20 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 适配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);} }

總結

以上是生活随笔為你收集整理的适配ofd签章SES_Signature的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。