gpt4 book ai didi

java - 使用 PKIStatus 值验证 RFC 3161 时间戳响应

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:49:56 25 4
gpt4 key购买 nike

我有一个 SOAP 请求,需要重新设计,因为 SoapUI 无法正确处理二进制响应。我决定让它基于 Java。我发现 this 真的很有用,但不确定函数是如何出现在代码片段上的。我有

  • 摘要值
  • 签名值
  • X509证书

SOAP 请求中定义,但不确定如何转换这些信息以将请求发送到我的 tsendpint。我也试过 TSAClientBouncyCastle,但不确定为什么我们需要登录凭据。我把那些字段留空了,但它总是以

结束

TSAClientBouncyCastle@1f0e140b

消息。

我使用构造函数从 Main 调用 TSAClientBouncyCaSTLe 类。

它是主要部分,它应该解码数据。

   // Get TSA response as a byte array
InputStream inp = tsaConnection.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = inp.read(buffer, 0, buffer.length)) >= 0) {
baos.write(buffer, 0, bytesRead);
}
byte[] respBytes = baos.toByteArray();

String encoding = tsaConnection.getContentEncoding();
if (encoding != null && encoding.equalsIgnoreCase("base64")) {
respBytes = Base64.decode(new String(respBytes));
}

最佳答案

时间戳机构 (TSA) 生成一个证明,证明某个数据在特定时间之前就已经存在。它使用 RFC3161 中定义的协议(protocol)和格式。

时间戳响应如下(参见 RFC3161-section 2.4.2 ):

TimeStampResp ::= SEQUENCE  {
status PKIStatusInfo,
timeStampToken TimeStampToken OPTIONAL }

您可以使用 BouncyCastle 解析内容类型 application/timestamp-reply 的响应获取PKIStatusInfo

TimeStampResponse response = new TimeStampResponse(tsaInputStream);
int status = response.getStatus();

可能的值是

PKIStatus ::= INTEGER {
granted (0),
-- when the PKIStatus contains the value zero a TimeStampToken, as
requested, is present.
grantedWithMods (1),
-- when the PKIStatus contains the value one a TimeStampToken,
with modifications, is present.
rejection (2),
waiting (3),
revocationWarning (4),
-- this message contains a warning that a revocation is
-- imminent
revocationNotification (5)
-- notification that a revocation has occurred }

关于java - 使用 PKIStatus 值验证 RFC 3161 时间戳响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45322918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com