use of com.helger.commons.io.stream.NonClosingOutputStream in project as2-lib by phax.
the class MainSendToMendelsonTestServer method main.
public static void main(final String[] args) throws Exception {
Proxy aHttpProxy = null;
if (false)
aHttpProxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("1.2.3.4", 8080));
IHTTPOutgoingDumperFactory aOutgoingDumperFactory = null;
if (false)
aOutgoingDumperFactory = x -> new HTTPOutgoingDumperStreamBased(System.out);
if (false)
HTTPHelper.setHTTPIncomingDumperFactory(() -> new HTTPIncomingDumperStreamBased(new NonClosingOutputStream(System.out)));
// Start client configuration
final AS2ClientSettings aSettings = new AS2ClientSettings();
aSettings.setKeyStore(EKeyStoreType.PKCS12, new File("src/test/resources/mendelson/key3.pfx"), "test");
// Fixed sender
aSettings.setSenderData("mycompanyAS2", "phax.as2-lib@github.com", "key3");
// Fixed receiver - key alias must be "mendelsontestAS2"
aSettings.setReceiverData("mendelsontestAS2", "mendelsontestAS2", true ? "https://testas2.mendelson-e-c.com:8444/as2/HttpReceiver" : "http://testas2.mendelson-e-c.com:8080/as2/HttpReceiver");
final X509Certificate aReceiverCertificate = AS2KeyStoreHelper.readX509Certificate("src/test/resources/mendelson/key4.cer");
aSettings.setReceiverCertificate(aReceiverCertificate);
// AS2 stuff
aSettings.setPartnershipName(aSettings.getSenderAS2ID() + "_" + aSettings.getReceiverAS2ID());
// When a signed message is used, the algorithm for MIC and message must be
// identical
final ECryptoAlgorithmSign eSignAlgo = ECryptoAlgorithmSign.DIGEST_SHA_512;
// CBC works, GCM is not supported
final ECryptoAlgorithmCrypt eCryptAlgo = ECryptoAlgorithmCrypt.CRYPT_AES128_CBC;
final ECompressionType eCompress = ECompressionType.ZLIB;
final boolean bCompressBeforeSigning = AS2ClientSettings.DEFAULT_COMPRESS_BEFORE_SIGNING;
aSettings.setMDNOptions(new DispositionOptions().setMICAlg(eSignAlgo).setMICAlgImportance(DispositionOptions.IMPORTANCE_REQUIRED).setProtocol(DispositionOptions.PROTOCOL_PKCS7_SIGNATURE).setProtocolImportance(DispositionOptions.IMPORTANCE_REQUIRED));
aSettings.setEncryptAndSign(eCryptAlgo, eSignAlgo);
aSettings.setCompress(eCompress, bCompressBeforeSigning);
aSettings.setMessageIDFormat("github-phax-as2-lib-$date.uuuuMMdd-HHmmssZ$-$rand.1234$@$msg.sender.as2_id$_$msg.receiver.as2_id$");
aSettings.setRetryCount(1);
aSettings.setConnectTimeoutMS(10_000);
aSettings.setReadTimeoutMS(10_000);
aSettings.setHttpOutgoingDumperFactory(aOutgoingDumperFactory);
// Build client request
final AS2ClientRequest aRequest = new AS2ClientRequest("AS2 test message from as2-lib");
aRequest.setData(new DataHandler(new FileDataSource(new File("src/test/resources/mendelson/testcontent.attachment"))));
aRequest.setContentType(CMimeType.TEXT_PLAIN.getAsString());
if (false)
aRequest.setContentTransferEncoding(EContentTransferEncoding.BASE64);
// Send message
final AS2ClientResponse aResponse = new AS2Client().setHttpProxy(aHttpProxy).sendSynchronous(aSettings, aRequest);
if (aResponse.hasException())
LOGGER.info(aResponse.getAsString());
LOGGER.info("Done");
}
use of com.helger.commons.io.stream.NonClosingOutputStream in project ph-commons by phax.
the class JsonWriter method writeToStream.
/**
* Write the JSON to an OutputStream using the provided Charset, and leave the
* OutputStream open.
*
* @param aJson
* The JSON to be written. May not be <code>null</code>.
* @param aOS
* The OutputStream to write to. May not be <code>null</code>.
* @param aCharset
* The character set to be used. May not be <code>null</code>.
* @throws IOException
* On IO error
* @since 9.4.0
*/
public void writeToStream(@Nonnull final IJson aJson, @Nonnull @WillNotClose final OutputStream aOS, @Nonnull final Charset aCharset) throws IOException {
ValueEnforcer.notNull(aJson, "Json");
ValueEnforcer.notNull(aOS, "OutputStream");
ValueEnforcer.notNull(aCharset, "Charset");
// Ensure OutputStream stays open
try (final Writer aWriter = new OutputStreamWriter(new NonClosingOutputStream(aOS), aCharset)) {
writeToWriter(aJson, aWriter);
}
}
use of com.helger.commons.io.stream.NonClosingOutputStream in project as2-lib by phax.
the class MainSendToLocalhost8080 method main.
public static void main(final String[] args) throws Exception {
Proxy aHttpProxy = null;
if (false)
aHttpProxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("1.2.3.4", 8080));
IHTTPOutgoingDumperFactory aOutgoingDumperFactory = null;
if (false)
aOutgoingDumperFactory = x -> new HTTPOutgoingDumperStreamBased(System.out);
if (false)
HTTPHelper.setHTTPIncomingDumperFactory(() -> new HTTPIncomingDumperStreamBased(new NonClosingOutputStream(System.out)));
// Start client configuration
final AS2ClientSettings aSettings = new AS2ClientSettings();
aSettings.setKeyStore(EKeyStoreType.PKCS12, new File("src/test/resources/localhost/certs.p12"), "test");
// Fixed sender
aSettings.setSenderData("mycompanyAS2", "phax.as2-lib@github.com", "openas2a_alias");
// Fixed receiver - key alias must be "openas2b_alias"
aSettings.setReceiverData("openas2b_alias", "openas2b_alias", "http://localhost:8080/as2");
final X509Certificate aReceiverCertificate = AS2KeyStoreHelper.readX509Certificate("src/test/resources/mendelson/key4.cer");
aSettings.setReceiverCertificate(aReceiverCertificate);
// AS2 stuff
aSettings.setPartnershipName(aSettings.getSenderAS2ID() + "_" + aSettings.getReceiverAS2ID());
// When a signed message is used, the algorithm for MIC and message must be
// identical
final ECryptoAlgorithmSign eSignAlgo = ECryptoAlgorithmSign.DIGEST_SHA_256;
final ECryptoAlgorithmCrypt eCryptAlgo = ECryptoAlgorithmCrypt.CRYPT_AES128_GCM;
final ECompressionType eCompress = ECompressionType.ZLIB;
final boolean bCompressBeforeSigning = AS2ClientSettings.DEFAULT_COMPRESS_BEFORE_SIGNING;
aSettings.setMDNOptions(new DispositionOptions().setMICAlg(eSignAlgo).setMICAlgImportance(DispositionOptions.IMPORTANCE_REQUIRED).setProtocol(DispositionOptions.PROTOCOL_PKCS7_SIGNATURE).setProtocolImportance(DispositionOptions.IMPORTANCE_REQUIRED));
aSettings.setEncryptAndSign(eCryptAlgo, eSignAlgo);
aSettings.setCompress(eCompress, bCompressBeforeSigning);
aSettings.setMessageIDFormat("github-phax-as2-lib-$date.uuuuMMdd-HHmmssZ$-$rand.1234$@$msg.sender.as2_id$_$msg.receiver.as2_id$");
aSettings.setRetryCount(1);
aSettings.setConnectTimeoutMS(10_000);
aSettings.setReadTimeoutMS(10_000);
aSettings.setHttpOutgoingDumperFactory(aOutgoingDumperFactory);
// Build client request
final AS2ClientRequest aRequest = new AS2ClientRequest("AS2 test message from as2-lib");
aRequest.setData(new DataHandler(new FileDataSource(new File("src/test/resources/mendelson/testcontent.attachment"))));
aRequest.setContentType(CMimeType.TEXT_PLAIN.getAsString());
if (false)
aRequest.setContentTransferEncoding(EContentTransferEncoding.BASE64);
// Send message
final AS2ClientResponse aResponse = new AS2Client().setHttpProxy(aHttpProxy).sendSynchronous(aSettings, aRequest);
if (aResponse.hasException())
LOGGER.info(aResponse.getAsString());
LOGGER.info("Done");
}
use of com.helger.commons.io.stream.NonClosingOutputStream in project as2-lib by phax.
the class MainSendToMendelsonTestServerPlayground method main.
public static void main(final String[] args) throws Exception {
// Enable or disable debug mode
if (false)
GlobalDebug.setDebugModeDirect(false);
Proxy aHttpProxy = null;
if (false)
aHttpProxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("172.30.9.6", 8080));
IHTTPOutgoingDumperFactory aOutgoingDumperFactory = null;
if (false)
aOutgoingDumperFactory = x -> new HTTPOutgoingDumperStreamBased(System.out);
if (false)
HTTPHelper.setHTTPIncomingDumperFactory(() -> new HTTPIncomingDumperStreamBased(new NonClosingOutputStream(System.out)));
// Start client configuration
final AS2ClientSettings aSettings = new AS2ClientSettings();
aSettings.setKeyStore(EKeyStoreType.PKCS12, new File("src/test/resources/mendelson/key3.pfx"), "test");
// Fixed sender
aSettings.setSenderData("mycompanyAS2", "phax.as2-lib@github.com", "key3");
// Fixed receiver - key alias must be "mendelsontestAS2"
aSettings.setReceiverData("mendelsontestAS2", "mendelsontestAS2", "http://testas2.mendelson-e-c.com:8080/as2/HttpReceiver");
final X509Certificate aReceiverCertificate = AS2KeyStoreHelper.readX509Certificate("src/test/resources/mendelson/key4.cer");
aSettings.setReceiverCertificate(aReceiverCertificate);
// AS2 stuff
aSettings.setPartnershipName(aSettings.getSenderAS2ID() + "_" + aSettings.getReceiverAS2ID());
// When a signed message is used, the algorithm for MIC and message must be
// identical
final ECryptoAlgorithmSign eSignAlgo = ECryptoAlgorithmSign.DIGEST_SHA1;
// Encryption is required for Mendelson
// CRYPT_AES256_GCM is not supported
// CRYPT_AES256_CBC is supported
// CRYPT_AES192_GCM is not supported
// CRYPT_AES192_CBC is supported
// CRYPT_AES128_GCM is not supported
// CRYPT_AES128_CBC is supported
// CRYPT_3DES is supported
final ECryptoAlgorithmCrypt eCryptAlgo = ECryptoAlgorithmCrypt.CRYPT_3DES;
final ECompressionType eCompress = ECompressionType.ZLIB;
final boolean bCompressBeforeSigning = true;
if (eSignAlgo != null)
aSettings.setMDNOptions(new DispositionOptions().setMICAlg(eSignAlgo).setMICAlgImportance(DispositionOptions.IMPORTANCE_REQUIRED).setProtocol(DispositionOptions.PROTOCOL_PKCS7_SIGNATURE).setProtocolImportance(DispositionOptions.IMPORTANCE_REQUIRED));
if (false)
aSettings.setMDNOptions("");
aSettings.setEncryptAndSign(eCryptAlgo, eSignAlgo);
aSettings.setCompress(eCompress, bCompressBeforeSigning);
aSettings.setMessageIDFormat("github-phax-as2-lib-$date.uuuuMMdd-HHmmssZ$-$rand.1234$@$msg.sender.as2_id$_$msg.receiver.as2_id$");
aSettings.setRetryCount(1);
aSettings.setConnectTimeoutMS(10_000);
aSettings.setReadTimeoutMS(10_000);
aSettings.setHttpOutgoingDumperFactory(aOutgoingDumperFactory);
// Build client request
final AS2ClientRequest aRequest = new AS2ClientRequest("AS2 test message from as2-lib");
if (false)
aRequest.setData(new File("src/test/resources/mendelson/testcontent.attachment"), StandardCharsets.ISO_8859_1);
else
aRequest.setData(new DataHandler(new FileDataSource(new File("src/test/resources/mendelson/testcontent.attachment"))));
aRequest.setContentType(CMimeType.TEXT_PLAIN.getAsString());
// "CTE" and "compress before sign" have impact on MIC matching
// EContentTransferEncoding._7BIT MIC is matched
// EContentTransferEncoding._8BIT MIC is matched
// EContentTransferEncoding.BINARY MIC is matched
// EContentTransferEncoding.QUOTED_PRINTABLE - not supported by Mendelson
// EContentTransferEncoding.BASE64 MIC is matched
aRequest.setContentTransferEncoding(EContentTransferEncoding.BASE64);
// Send message
final AS2ClientResponse aResponse = new AS2Client().setHttpProxy(aHttpProxy).sendSynchronous(aSettings, aRequest);
if (aResponse.hasException())
LOGGER.info(aResponse.getAsString());
LOGGER.info("Done");
}
Aggregations