@Test(expected = PkiVerificationException.class)
  public void testSignAndVerifyExpired() throws Exception {
    Protos.PaymentRequest.Builder paymentRequest = minimalPaymentRequest().toBuilder();

    // Sign
    KeyStore keyStore =
        X509Utils.loadKeyStore(
            "JKS", "password", getClass().getResourceAsStream("test-expired-cert"));
    PrivateKey privateKey = (PrivateKey) keyStore.getKey("test-expired", "password".toCharArray());
    X509Certificate clientCert = (X509Certificate) keyStore.getCertificate("test-expired");
    PaymentProtocol.signPaymentRequest(
        paymentRequest, new X509Certificate[] {clientCert}, privateKey);

    // Verify
    PaymentProtocol.verifyPaymentRequestPki(paymentRequest.build(), caStore);
  }
  @Test
  public void testSignAndVerifyValid() throws Exception {
    Protos.PaymentRequest.Builder paymentRequest = minimalPaymentRequest().toBuilder();

    // Sign
    KeyStore keyStore =
        X509Utils.loadKeyStore(
            "JKS", "password", getClass().getResourceAsStream("test-valid-cert"));
    PrivateKey privateKey = (PrivateKey) keyStore.getKey("test-valid", "password".toCharArray());
    X509Certificate clientCert = (X509Certificate) keyStore.getCertificate("test-valid");
    PaymentProtocol.signPaymentRequest(
        paymentRequest, new X509Certificate[] {clientCert}, privateKey);

    // Verify
    PkiVerificationData verificationData =
        PaymentProtocol.verifyPaymentRequestPki(paymentRequest.build(), caStore);
    assertNotNull(verificationData);
    assertEquals(caCert, verificationData.rootAuthority.getTrustedCert());
  }
 @Before
 public void setUp() throws Exception {
   caStore =
       X509Utils.loadKeyStore("JKS", "password", getClass().getResourceAsStream("test-cacerts"));
   caCert = (X509Certificate) caStore.getCertificate("test-cacert");
 }