2017-07-26 11 views
4

SoapUIは正しくバイナリ応答を処理できないため、SOAP要求が再設計が必要です。 私はそれをJavaベースにすることに決めました。私はthisが本当に役に立ちましたが、わかりませんが、どのように機能がコードスニペットに来るのかを確認しました。私はPKIStatus値でRFC 3161タイムスタンプ応答を確認してください

  • DigestValue
  • SignatureValue
  • のX509Certificate SOAP要求し、私のtsendpintにリクエストを送信するためにこれらの情報を変換する方法がわからない中で定義された

を持っています。 TSAClientBouncyCastleも試しましたが、なぜログイン資格情報が必要なのかわかりません。私は、これらのフィールドを空のまま、それは

メッセージ1f0e140b

TSAClientBouncyCastle @ですべての時間を終えます。

私は、TSAClientBouncyCastleクラスをコンストラクタでMainから呼び出します。

データをデコードする必要があります。

// 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)); 
    } 
+0

私はあなたの質問の要素間の関係を理解する。 1)SOAP要求はRFC3161タイムスタンプを必要としません。 2)タイムスタンプ(質問のタイトル)を確認したい3)しかし、あなたはTSAClientを使って新しいタイムスタンプを要求しています4)エラーはどこから来ますか?あなたはどのデータをタイムスタンプしていますか?コードを表示 – pedrofb

+0

@pedrofb:申し訳ありません、はい、あまり明確ではありません。私は定義されたリクエストを持っていますが、SoapUIの答えは人間が読めるものではありません。未処理の応答には疑問符と四角形も含まれているので、私はSoapUIでasciiベースの情報を取得できないと思います。私はPKIStatusの価値を得る必要があります。それが私が検証と名付けたものです。 TSAClientが必要です.tsendpointの応答から多分ASCII情報を得ることができます。 – plaidshirt

+1

タイムスタンプオーソリティ(TSA)は、特定の時刻より前にデータが存在するという証拠を生成します。 RFC3161で定義されているプロトコルとフォーマットを使用します。それがあなたの意図ならば、TSAで別のメッセージを確認することはできません。奇妙な文字が表示されるのは、メッセージがテキストではなくバイナリであるからです。おそらく、TSAはコンテンツタイプ 'application/timestamp-reply'でエラーを返しています。私はあなたのユースケースをまだ理解していません。私はあなたを助けることができません – pedrofb

答えて

1

タイムスタンプオーソリティ(TSA)は、特定の時刻より前にデータが存在したという証拠を生成します。 RFC3161で定義されているプロトコルとフォーマットを使用します。次のように

タイムスタンプ応答は、(RFC3161-section 2.4.2を参照):

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

あなたが可能な値PKIStatusInfo

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

を得るためBouncyCastleでコンテンツ型application/timestamp-replyの応答を解析することができています

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 } 
+0

ありがとう!私の質問でリンクされたソリューションもこのライブラリを使用していますが、X509Dataだけのユーザー資格情報はありません。 – plaidshirt

関連する問題