Search in sources :

Example 6 with AS2ClientRequest

use of com.helger.as2lib.client.AS2ClientRequest 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");
}
Also used : X509Certificate(java.security.cert.X509Certificate) HTTPIncomingDumperStreamBased(com.helger.as2lib.util.dump.HTTPIncomingDumperStreamBased) ECryptoAlgorithmSign(com.helger.as2lib.crypto.ECryptoAlgorithmSign) DispositionOptions(com.helger.as2lib.disposition.DispositionOptions) AS2Client(com.helger.as2lib.client.AS2Client) ECryptoAlgorithmCrypt(com.helger.as2lib.crypto.ECryptoAlgorithmCrypt) HTTPOutgoingDumperStreamBased(com.helger.as2lib.util.dump.HTTPOutgoingDumperStreamBased) LoggerFactory(org.slf4j.LoggerFactory) HTTPHelper(com.helger.as2lib.util.http.HTTPHelper) AS2ClientRequest(com.helger.as2lib.client.AS2ClientRequest) NonClosingOutputStream(com.helger.commons.io.stream.NonClosingOutputStream) DataHandler(javax.activation.DataHandler) CMimeType(com.helger.commons.mime.CMimeType) Proxy(java.net.Proxy) FileDataSource(javax.activation.FileDataSource) GlobalDebug(com.helger.commons.debug.GlobalDebug) Logger(org.slf4j.Logger) EContentTransferEncoding(com.helger.mail.cte.EContentTransferEncoding) AS2ClientResponse(com.helger.as2lib.client.AS2ClientResponse) AS2KeyStoreHelper(com.helger.as2lib.util.cert.AS2KeyStoreHelper) ECompressionType(com.helger.as2lib.crypto.ECompressionType) SystemProperties(com.helger.commons.system.SystemProperties) InetSocketAddress(java.net.InetSocketAddress) File(java.io.File) StandardCharsets(java.nio.charset.StandardCharsets) IHTTPOutgoingDumperFactory(com.helger.as2lib.util.dump.IHTTPOutgoingDumperFactory) AS2ClientSettings(com.helger.as2lib.client.AS2ClientSettings) EKeyStoreType(com.helger.security.keystore.EKeyStoreType) InetSocketAddress(java.net.InetSocketAddress) DispositionOptions(com.helger.as2lib.disposition.DispositionOptions) HTTPIncomingDumperStreamBased(com.helger.as2lib.util.dump.HTTPIncomingDumperStreamBased) DataHandler(javax.activation.DataHandler) X509Certificate(java.security.cert.X509Certificate) ECryptoAlgorithmCrypt(com.helger.as2lib.crypto.ECryptoAlgorithmCrypt) AS2ClientSettings(com.helger.as2lib.client.AS2ClientSettings) Proxy(java.net.Proxy) ECompressionType(com.helger.as2lib.crypto.ECompressionType) HTTPOutgoingDumperStreamBased(com.helger.as2lib.util.dump.HTTPOutgoingDumperStreamBased) IHTTPOutgoingDumperFactory(com.helger.as2lib.util.dump.IHTTPOutgoingDumperFactory) FileDataSource(javax.activation.FileDataSource) AS2Client(com.helger.as2lib.client.AS2Client) NonClosingOutputStream(com.helger.commons.io.stream.NonClosingOutputStream) File(java.io.File) AS2ClientRequest(com.helger.as2lib.client.AS2ClientRequest) ECryptoAlgorithmSign(com.helger.as2lib.crypto.ECryptoAlgorithmSign) AS2ClientResponse(com.helger.as2lib.client.AS2ClientResponse)

Aggregations

AS2Client (com.helger.as2lib.client.AS2Client)6 AS2ClientRequest (com.helger.as2lib.client.AS2ClientRequest)6 AS2ClientSettings (com.helger.as2lib.client.AS2ClientSettings)6 File (java.io.File)6 AS2ClientResponse (com.helger.as2lib.client.AS2ClientResponse)4 ECryptoAlgorithmCrypt (com.helger.as2lib.crypto.ECryptoAlgorithmCrypt)4 ECryptoAlgorithmSign (com.helger.as2lib.crypto.ECryptoAlgorithmSign)4 InetSocketAddress (java.net.InetSocketAddress)4 Proxy (java.net.Proxy)4 X509Certificate (java.security.cert.X509Certificate)4 ECompressionType (com.helger.as2lib.crypto.ECompressionType)3 DispositionOptions (com.helger.as2lib.disposition.DispositionOptions)3 AS2KeyStoreHelper (com.helger.as2lib.util.cert.AS2KeyStoreHelper)3 HTTPIncomingDumperStreamBased (com.helger.as2lib.util.dump.HTTPIncomingDumperStreamBased)3 HTTPOutgoingDumperStreamBased (com.helger.as2lib.util.dump.HTTPOutgoingDumperStreamBased)3 IHTTPOutgoingDumperFactory (com.helger.as2lib.util.dump.IHTTPOutgoingDumperFactory)3 HTTPHelper (com.helger.as2lib.util.http.HTTPHelper)3 NonClosingOutputStream (com.helger.commons.io.stream.NonClosingOutputStream)3 CMimeType (com.helger.commons.mime.CMimeType)3 EContentTransferEncoding (com.helger.mail.cte.EContentTransferEncoding)3