コード例 #1
0
  private void checkRequestHash() throws Exception {
    RequestHash requestHashFromResponse = response.getSoap().getHeader().getRequestHash();
    if (requestHashFromResponse != null) {
      byte[] requestHash =
          calculateDigest(
              getAlgorithmId(requestHashFromResponse.getAlgorithmId()), requestSoap.getBytes());

      if (log.isTraceEnabled()) {
        log.trace(
            "Calculated request message hash: {}\n" + "Request message (base64): {}",
            encodeBase64(requestHash),
            encodeBase64(requestSoap.getBytes()));
      }

      if (!Arrays.areEqual(requestHash, decodeBase64(requestHashFromResponse.getHash()))) {
        throw new CodedException(
            X_INCONSISTENT_RESPONSE, "Request message hash does not match request message");
      }
    } else {
      throw new CodedException(
          X_INCONSISTENT_RESPONSE,
          "Response from server proxy is missing request message " + "hash");
    }
  }