Ejemplo n.º 1
0
  @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);
  }
Ejemplo n.º 2
0
  @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());
  }
Ejemplo n.º 3
0
  public void testPaymentRequest() throws Exception {
    // Create
    PaymentRequest paymentRequest =
        PaymentProtocol.createPaymentRequest(
                NETWORK_PARAMS, AMOUNT, TO_ADDRESS, MEMO, PAYMENT_URL, MERCHANT_DATA)
            .build();
    byte[] paymentRequestBytes = paymentRequest.toByteArray();

    // Parse
    PaymentSession parsedPaymentRequest =
        PaymentProtocol.parsePaymentRequest(PaymentRequest.parseFrom(paymentRequestBytes));
    final List<Output> parsedOutputs = parsedPaymentRequest.getOutputs();
    assertEquals(1, parsedOutputs.size());
    assertEquals(AMOUNT, parsedOutputs.get(0).amount);
    assertEquals(
        ScriptBuilder.createOutputScript(TO_ADDRESS).getProgram(), parsedOutputs.get(0).scriptData);
    assertEquals(MEMO, parsedPaymentRequest.getMemo());
    assertEquals(PAYMENT_URL, parsedPaymentRequest.getPaymentUrl());
    assertEquals(MERCHANT_DATA, parsedPaymentRequest.getMerchantData());
  }
Ejemplo n.º 4
0
  @Test
  public void testPaymentAck() throws Exception {
    // Create
    Payment paymentMessage = Protos.Payment.newBuilder().build();
    PaymentACK paymentAck = PaymentProtocol.createPaymentAck(paymentMessage, MEMO);
    byte[] paymentAckBytes = paymentAck.toByteArray();

    // Parse
    PaymentACK parsedPaymentAck = PaymentACK.parseFrom(paymentAckBytes);
    assertEquals(paymentMessage, parsedPaymentAck.getPayment());
    assertEquals(MEMO, parsedPaymentAck.getMemo());
  }
Ejemplo n.º 5
0
  @Test
  public void testPaymentMessage() throws Exception {
    // Create
    List<Transaction> transactions = new LinkedList<Transaction>();
    transactions.add(FakeTxBuilder.createFakeTx(NETWORK_PARAMS, AMOUNT, TO_ADDRESS));
    BigInteger refundAmount = BigInteger.ONE;
    Address refundAddress = new ECKey().toAddress(NETWORK_PARAMS);
    Payment payment =
        PaymentProtocol.createPaymentMessage(
            transactions, refundAmount, refundAddress, MEMO, MERCHANT_DATA);
    byte[] paymentBytes = payment.toByteArray();

    // Parse
    Payment parsedPayment = Payment.parseFrom(paymentBytes);
    List<Transaction> parsedTransactions =
        PaymentProtocol.parseTransactionsFromPaymentMessage(NETWORK_PARAMS, parsedPayment);
    assertEquals(transactions, parsedTransactions);
    assertEquals(1, parsedPayment.getRefundToCount());
    assertEquals(MEMO, parsedPayment.getMemo());
    assertArrayEquals(MERCHANT_DATA, parsedPayment.getMerchantData().toByteArray());
  }