From 512509a90e8f50904ac1dd68d95aa1c061d92ad6 Mon Sep 17 00:00:00 2001 From: Juan Correa Date: Thu, 29 Jun 2017 02:11:29 -0700 Subject: [PATCH 1/2] Initial Java IlpCryptoLib changes --- .../interop/scheme/adapter/IlpCryptoLib.java | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/main/java/com/l1p/interop/scheme/adapter/IlpCryptoLib.java diff --git a/src/main/java/com/l1p/interop/scheme/adapter/IlpCryptoLib.java b/src/main/java/com/l1p/interop/scheme/adapter/IlpCryptoLib.java new file mode 100644 index 0000000..5676212 --- /dev/null +++ b/src/main/java/com/l1p/interop/scheme/adapter/IlpCryptoLib.java @@ -0,0 +1,57 @@ +package com.l1p.interop.scheme.adapter; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.time.ZonedDateTime; +import java.util.Base64; +import java.util.UUID; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import org.interledger.InterledgerAddress; +import org.interledger.InterledgerAddressBuilder; +import org.interledger.codecs.CodecContext; +import org.interledger.codecs.CodecContextFactory; +import org.interledger.ipr.InterledgerPaymentRequest; +import org.interledger.ipr.InterledgerPaymentRequestBuilder; + +public class IlpCryptoLib { + + private static Logger log = LogManager.getLogger(IlpCryptoLib.class); + + public String cryptoEncode (String destAddr, String destAmnt){ + + log.info("received destination address: " + destAddr + " and destination amount: " + destAmnt); + + InterledgerAddress destinationAddress = InterledgerAddressBuilder.builder().value(destAddr).build(); + long destinationAmount = Long.parseLong(destAmnt); + ZonedDateTime expiresAt = ZonedDateTime.now().plusMinutes(1); + byte[] receiverSecret = new byte[32]; + String paymentId = UUID.randomUUID().toString(); + + InterledgerPaymentRequestBuilder builder = new InterledgerPaymentRequestBuilder( + destinationAddress, + destinationAmount, + expiresAt, + receiverSecret); + + builder.setEncrypted(false); + builder.getPskMessageBuilder().addPublicHeader("Payment-Id", paymentId); + + CodecContext context = CodecContextFactory.interledger(); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + + try { + context.write(InterledgerPaymentRequest.class, builder.getIpr(), outputStream); + } catch (IOException e) { + throw new RuntimeException("Error encoding Interledger Packet Request.", e); + } + + String cryptoEncode = Base64.getUrlEncoder().encodeToString(outputStream.toByteArray()); + + log.info("returning the following crypto encode value: " + cryptoEncode); + + return cryptoEncode; + } + +} From eebc5db09ff6cd439186a97833b23f0c67f4079b Mon Sep 17 00:00:00 2001 From: Juan Correa Date: Thu, 29 Jun 2017 02:13:18 -0700 Subject: [PATCH 2/2] Call to Java IlpCryptoLib --- pom.xml | 13 +++++++++++-- src/main/app/scheme-adapter.xml | 10 ++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 37bc41b..f19a48b 100644 --- a/pom.xml +++ b/pom.xml @@ -1,4 +1,4 @@ - + 4.0.0 @@ -21,7 +21,8 @@ 0.1.32 - + 3.8.0 + @@ -78,6 +79,14 @@ 1.3 test + + + org.interledger + java-ilp-core + 0.5.0-SNAPSHOT + + + diff --git a/src/main/app/scheme-adapter.xml b/src/main/app/scheme-adapter.xml index 3e2c075..9b363f6 100644 --- a/src/main/app/scheme-adapter.xml +++ b/src/main/app/scheme-adapter.xml @@ -17,6 +17,9 @@ http://www.springframework.org/schema/beans http://www.springframework.org/schem doc:name="ILP-Service HTTP Request Configuration" responseTimeout="30000" /> + + +