{"id":37023057,"url":"https://github.com/phax/as2-peppol","last_synced_at":"2026-01-14T02:45:48.078Z","repository":{"id":23009592,"uuid":"26360355","full_name":"phax/as2-peppol","owner":"phax","description":"AS2 handler for the use with Peppol","archived":true,"fork":false,"pushed_at":"2021-03-01T18:21:56.000Z","size":1561,"stargazers_count":7,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-19T15:15:14.016Z","etag":null,"topics":["as2","client","dns-lookup","peppol","ph-bdve","sbdh","smp-client","validation"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phax.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-11-08T12:48:35.000Z","updated_at":"2025-04-24T08:45:02.000Z","dependencies_parsed_at":"2022-08-21T17:31:29.479Z","dependency_job_id":null,"html_url":"https://github.com/phax/as2-peppol","commit_stats":null,"previous_names":["phax/as2-peppol-client"],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/phax/as2-peppol","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phax%2Fas2-peppol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phax%2Fas2-peppol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phax%2Fas2-peppol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phax%2Fas2-peppol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phax","download_url":"https://codeload.github.com/phax/as2-peppol/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phax%2Fas2-peppol/sbom","scorecard":{"id":730703,"data":{"date":"2025-08-11","repo":{"name":"github.com/phax/as2-peppol","commit":"5af30b734b7075d3b0acf137428dd7f04210c1e1"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.8,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact as2-peppol-parent-pom-5.4.0 not signed: https://api.github.com/repos/phax/as2-peppol/releases/28564367","Warn: release artifact as2-peppol-client-3.2.0 not signed: https://api.github.com/repos/phax/as2-peppol/releases/22376490","Warn: release artifact as2-peppol-client-3.1.0 not signed: https://api.github.com/repos/phax/as2-peppol/releases/21791257","Warn: release artifact as2-peppol-client-3.0.9 not signed: https://api.github.com/repos/phax/as2-peppol/releases/20288149","Warn: release artifact as2-peppol-client-3.0.2 not signed: https://api.github.com/repos/phax/as2-peppol/releases/11689596","Warn: release artifact as2-peppol-parent-pom-5.4.0 does not have provenance: https://api.github.com/repos/phax/as2-peppol/releases/28564367","Warn: release artifact as2-peppol-client-3.2.0 does not have provenance: https://api.github.com/repos/phax/as2-peppol/releases/22376490","Warn: release artifact as2-peppol-client-3.1.0 does not have provenance: https://api.github.com/repos/phax/as2-peppol/releases/21791257","Warn: release artifact as2-peppol-client-3.0.9 does not have provenance: https://api.github.com/repos/phax/as2-peppol/releases/20288149","Warn: release artifact as2-peppol-client-3.0.2 does not have provenance: https://api.github.com/repos/phax/as2-peppol/releases/11689596"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:18: pin your Docker image by updating maven:3.6-jdk-8-alpine to maven:3.6-jdk-8-alpine@sha256:16691dc7e18e5311ee7ae38b40dcf98ee1cfe4a487fdd0e57bfef76a0415034a","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":3,"reason":"7 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-3f7h-mf4q-vrm4","Warn: Project is vulnerable to: GHSA-cfxw-4h78-h7fw","Warn: Project is vulnerable to: GHSA-4cx2-fc23-5wg6","Warn: Project is vulnerable to: GHSA-8xfc-gm6g-vgpv","Warn: Project is vulnerable to: GHSA-hr8g-6v94-x4m9","Warn: Project is vulnerable to: GHSA-v435-xc8x-wvr9","Warn: Project is vulnerable to: GHSA-wjxj-5m7g-mg7q"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T14:20:05.562Z","repository_id":23009592,"created_at":"2025-08-22T14:20:05.563Z","updated_at":"2025-08-22T14:20:05.563Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408737,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["as2","client","dns-lookup","peppol","ph-bdve","sbdh","smp-client","validation"],"created_at":"2026-01-14T02:45:46.524Z","updated_at":"2026-01-14T02:45:47.786Z","avatar_url":"https://github.com/phax.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# as2-peppol\n\n[![Build Status](https://travis-ci.com/phax/as2-peppol.svg?branch=master)](https://travis-ci.com/phax/as2-peppol)\n[![javadoc](https://javadoc.io/badge2/com.helger.peppol/as2-peppol-client/javadoc.svg)](https://javadoc.io/doc/com.helger.peppol/as2-peppol-client)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.helger.peppol/as2-peppol-parent-pom/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.helger.peppol/as2-peppol-parent-pom) \n\nAS2 should no longer be used in Peppol - use [phase4](https://github.com/phax/phase4) instead.\nThat's why this project is archived - ping me if you have a good reason to continue this project.\n\n## Status migration AS2 \u0026rarr; AS4\n\nPeppol migrated to AS4 as the mandatory transport protocol as of February 1\u003csup\u003est\u003c/sup\u003e, 2020.\nThe support of AS2 will be gracefully faded out.\nPersonally I wouldn't recommend to start new Peppol AS2 projects.\n\nSee **phase4** as an AS4 solution that can send and receive Peppol Messages: https://github.com/phax/phase4\n\n# Introduction\n﻿\nThis project contains an linkage between AS2 and Peppol.\nIt contains an AS2-Peppol client, a servlet for reuse to receive messages and an example web application.\n\nThis library is based on my **[as2-lib](https://github.com/phax/as2-lib)** and **[peppol-commons](https://github.com/phax/peppol-commons)** libraries.\n\n## Maven usage\n\nAdd the following to your `pom.xml` to use this artifact, replacing `x.y.z` with the effective version:\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.helger.peppol\u003c/groupId\u003e\n  \u003cartifactId\u003eas2-peppol-client\u003c/artifactId\u003e\n  \u003cversion\u003ex.y.z\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.helger.peppol\u003c/groupId\u003e\n  \u003cartifactId\u003eas2-peppol-servlet\u003c/artifactId\u003e\n  \u003cversion\u003ex.y.z\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nNote: prior to v5.4.0 the Maven groupId was `com.helger`.\n\nThe binary versions of the artifacts can be found on http://repo2.maven.org/maven2/com/helger/peppol/ \nIt depends on several other libraries so I suggest you are going for the Maven source integration.\n\n## AS2 Peppol Client\n\nAS2 client to easily send AS2 messages to Peppol.\n\nWhen you are looking for a Peppol AS2 server component you may have a look at **as2-peppol-server** module.\n\nPlease have a look at the [Peppol practical AP guide](http://peppol.helger.com/public/?menuitem=docs-setup-ap)\nfor a detailed description on how it works and how it fits in the overall Peppol transport infrastructure.\n\nThis project is licensed under the Apache 2 License.\n\n### Configuration\n\nA keystore in the format JKS or PKCS12 must be available that must contain your Peppol AP certificate.\n\nSee https://github.com/phax/peppol-commons#peppol-smp-client for the list of configuration items of the Peppol SMP client.\n\n\n### Sending a document\n\nA test class is `src/test/java/.../MainAS2TestClient` and you need to adopt the variables according to your needs to make it work.\n\nBefore being ready to send a document, the recipient participant identifier as well as the test document must be selected. This happens currently directly in the `main` method and you have to choose the recipient you want.\n\nThe test files reside in the `src/main/resources/xml` folder and are referenced via classpath relative lookups.\n\n### Usage of a proxy server\n\nTo use a proxy server, add the following items to the `smp-client.properties` configuration file (of course with adopted values):\n \n```\nhttp.proxyHost=1.2.3.4\nhttp.proxyPort=8080\nhttps.proxyHost=1.2.3.4\nhttps.proxyPort=8080\n```\n\n\n## AS2 Peppol Servlet\n﻿\nA stand alone servlet that takes AS2 requests with Peppol StandardBusinessDocuments and handles them via SPI. This is not a self-contained package, but a good starting point for handling Peppol AS2 messages.\n\nAn example application that uses *as2-peppol-servlet* for receiving Peppol AS2 messages is my **as2-peppol-server** project. It may serve as a practical starting point.\n\nThis package depends on **[ph-commons](https://github.com/phax/ph-commons)**, **[ph-sbdh](https://github.com/phax/ph-sbdh)**, **[as2-lib and as2-servlet](https://github.com/phax/as2-lib)**. This transitively includes Bouncy Castle (1.64) and javax.mail (1.6.4) among other libraries.\n\n*as2-peppol-servlet* handles incoming AS2 messages, and parses them as OASIS Standard Business Documents (SBD). It does not contain extraction of the SBD content or even handling of the UBL content since the purpose of this project is reusability. For validating the SBD against Peppol rules, the project **[peppol-sbdh](https://github.com/phax/peppol-commons)** is available and for handling UBL 2.0 or 2.1 files you may have a look at my **[ph-ubl](https://github.com/phax/ph-ubl)**.\n\nThis project is licensed under the Apache 2 License.\n\n### Usage\nTo use this project you have to do the following:\n  1. Configure the AS2 servlet as specified in the [as2-servlet docs](https://github.com/phax/as2-lib)\n  2. The key store must contain your Peppol AP certificate and the alias of the only entry must be the CN-value of your certificate's subject (e.g. `APP_1000000001`).\n  3. Inside your project create an SPI implementation of the `com.helger.as2servlet.sbd.IAS2IncomingSBDHandlerSPI` interface to handling incoming SBD documents.\n\n\n### SPI implementation\n\nSPI stands for \"Service provider interface\" and is a Java standard feature to enable loose but typed coupling. [Read more on SPI](http://docs.oracle.com/javase/tutorial/ext/basics/spi.html)\n\nA [dummy SPI implementation](https://github.com/phax/as2-peppol/blob/master/as2-peppol-servlet/src/test/java/com/helger/peppol/as2servlet/mock/MockIncomingSBDHandler.java) is contained in the test code of this project. Additionally you need to create a file `META-INF/services/com.helger.peppol.as2servlet.IAS2IncomingSBDHandlerSPI` (in the `src/main/resources/` folder when using Maven) which contains a single line referencing the implementation class. An [example file](https://github.com/phax/as2-peppol/blob/master/as2-peppol-servlet/src/test/resources/META-INF/services/com.helger.peppol.as2servlet.IAS2IncomingSBDHandlerSPI) is located in the test resources of this project.\n\n### Known issues\n\n* Peppol AS2 specifications requires that duplicate incoming message IDs are handled specially, by ignoring multiple transmissions of the same message ID\n\n## AS2 Peppol Demo Server\n\nA demo AS2 server to easily receive AS2 messages from Peppol.\nThis project is only meant as a demo project for illustrative purposes, on how to\nimplement a Peppol AS2 server. This server implementation writes all incoming documents to disc and does not do anything else with them! Additional or different logic must be implemented!\n\nThis AS2 server is based on my **[as2-lib](https://github.com/phax/as2-lib)** library, as well as on **as2-peppol-servlet**, **[peppol-commons](https://github.com/phax/peppol-commons)** and **[ph-ubl](https://github.com/phax/ph-ubl)**.\nA client to send messages to this server is **as2-peppol-client** contained in here.\n\nThis project is licensed under the Apache 2 License.\n\n### Project structure\n\nThis project is a Java 1.8+ web application and as such meant to be used in an application server (like Tomcat, Jetty etc.).\n\nIt consists of the following major components:\n  * A specialized servlet for retrieval: `com.helger.peppol.as2server.servlet.PEPPOLAS2ReceiveServlet` which defines the configuration for processing incoming files. The servlet is referenced from `src/main/webapp/WEB-INF/web.xml`.\n  * The main handler for an incoming SBDH document in class `com.helger.peppol.as2server.handler.AS2IncomingSBDHandler`. This class is referenced via the default SPI lookup mechanism (see `src/main/resources/META-INF/services/`).\n  * Additionally a configuration file `src/main/resources/as2-server.properties` is provided that defines the AS2 specific setup. It contains the path to the keystore as well as in which folders to store what\n  \n### Before you start\nBefore this project can be run in a useful way a PKCS12 keystore with your Peppol AP certificate must be provided. By default the keystore must be located in `src/main/resources/keystore/ap.pilot.p12` and must have the password `peppol`. To change this edit the `as2-server.properties` file.\n\nBtw. you need no database to run this server. If you want one just use one - but you don't need to. \n\n### Run it\n\nThere are two options:\n\n**Running locally on your machine**\n\nTo do so you need to proceed the following steps:\n    * get your machine ready for java development with JDK 1.8.X, maven, some IDE tool, e.g. [Eclipse](https://www.eclipse.org/downloads/)\n    * you generate keystore with your certificate obtained from PEPPOP authority or self-signed (see procedure below)\n    * build the project \n    * execute class `com.helger.peppol.as2server.jetty.RunInJettyPEPPOLAS2` from within your IDE (as a standard Java application). It starts up a minimal server and listens on port 8080. The servlet that receives Peppol messages listens to path `/as2/` and supports only HTTP method POST.\n\n**Run already prepared application in Docker container**\n\nTo do so you have [Docker](https://docs.docker.com/get-started/) installed in your machine.\nThis approach is useful if you need just run the reference implementation against your Peppol Access Point implementation.\n\n**Docker notes**\n\nThe prebuild Dockerfile builds the WAR and runs it in Jetty.\n\nBuild like this: `docker build --pull -t as2-peppol-server .`\n\nRun like this: `docker run -d --name as2-peppol-server -p 8888:8080 as2-peppol-server`\n\nLocate your browser to `http://localhost:8888` to check if it is running.\n\nStop like this: `docker stop as2-peppol-server`\n\nAnd remove like this: `docker rm as2-peppol-server`\n\n### Test it\n\nNow that the AS2 server is running you may have a closer look at **as2-peppol-client** project which lets you send AS2 messages to a server.\nIf both client and server are configured correctly a successful message exchange should be easily possible.\n\n### Notes\n\n**Using Self-signed certificate**\n\n* follow the [instruction](https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs)\n\n**IMPORTANT** \n\n    * CN -- Common Name must follow Peppol AP name convention and be in format : APP_1000000XXX, for example APP_1000000312\n    * it uses PKCS12 keystore\n    * AS2 client uses predefined names for the following items:\n        - aliasname must match to the certificate CN (Common Name)\n        - key store password shall be 'peppol'\n        - keystore filename shall be 'test-client-certs.p12' to work with *as2-peppol-client*\n\nFor example:\n```shell\n    $ openssl req -out teho3-certificate.csr -new -newkey rsa:2048 -nodes -keyout teho3-private.key\n    $ openssl x509 -signkey teho3-private.key -in teho3-certificate.csr -req -days 365 -out teho3.cer\n    $ openssl pkcs12 -export -in teho3.cer -inkey teho3-private.key -out test-client-certs.p12 -passout pass:peppol -name APP_1000000112\n```\n\n\n# News and Noteworthy\n\n* v5.4.4 - work in progress\n    * Updated to peppol-commons 8.4.0\n* v5.4.3 - 2020-11-26\n    * Updated to peppol-commons 8.3.0\n    * Updated to phive-rules-* 2.0.0\n* v5.4.2 - 2020-09-17\n    * Updated to Jakarta JAXB 2.3.3\n    * Updated to peppol-commons 8.2.2\n* v5.4.1 - 2020-08-30\n    * Updated to ph-bdve-rules 1.0.6\n* v5.4.0 - 2020-05-27\n    * Merged `as2-peppol-client`, `as2-peppol-servlet` and `as2-peppol-server` into a single repository\n        * The history of `as2-peppol-servlet` can be found at https://github.com/phax/as2-peppol-servlet#news-and-noteworthy\n* v3.3.2 - 2020-03-12\n    * Added a possibility to retrieve the byte array representation of the created SBDH (see [issue #7](https://github.com/phax/as2-peppol/issues/7))\n* v3.3.1 - 2020-02-17\n    * Updated to ph-web 9.1.9\n* v3.3.0 - 2020-02-07\n    * Updated to peppol-commons 8.x\n    * Changed the priority of AS2 specifications so that Peppol AS2 v2 is preferred over Peppol AS2 v1.\n* v3.2.1 - 2020-01-19\n    * Updated to peppol-commons 7.0.6\n    * Made the used SMP transport profile customizable via `AS2ClientBuilder.setSMPTransportProfiles`\n    * By default both Peppol AS2 V1 and V2 are now handled in the SMP lookup (v2 as the fallback)\n    * Using type `ISMPServiceMetadataProvider` instead of `SMPClient` for improved configurability\n* v3.2.0 - 2019-12-19\n    * Updated to as2-lib 4.5.0\n* v3.1.0 - 2019-11-27\n    * Added static helper methods in `AS2ClientBuilder`\n    * Updated to peppol-commons 7.0.4\n    * Added an extended AP certificate check (see [issue #6](https://github.com/phax/as2-peppol/issues/6))\n    * Added possibility to send a previously created SBDH (see [issue #5](https://github.com/phax/as2-peppol/issues/5))\n    * Improved reusability of existing default values/classes in `AS2ClientBuilder`  \n* v3.0.11 - 2019-11-03\n    * Updated to ph-bdve 5.1.14 with Peppol validation 3.9.0\n* v3.0.10 - 2019-10-11\n    * Updated to as2-lib 4.4.5\n    * Made the usage of `DataHandler` the default, but made it customizable.\n    * Made the outgoing MIME type customizable. \n    * Added possibility to customize incoming dumper on demand.\n* v3.0.9 - 2019-09-26\n    * Updated to as2-lib 4.4.4\n* v3.0.8 - 2019-09-11\n    * Updated to as2-lib 4.4.2\n    * Updated to ph-bdve 5.1.12 with Peppol validation 3.8.1\n* v3.0.7 - 2019-06-17\n    * Updated to as2-lib 4.4.0\n    * Updated to peppol-commons 7.0.0\n    * New interface `IAS2ClientBuilderValidatonResultHandler` to customize validation result handling (see [issue #3](https://github.com/phax/as2-peppol/issues/3))\n    * Added possibility to provide a read-only keystore from a byte array (see [issue #4](https://github.com/phax/as2-peppol/issues/4))\n* v3.0.6 - 2019-05-17\n    * Updated to as2-lib 4.3.0, thereby simplifying the Random topic\n    * Added support for AS2 prefix \"P\" (as in \"PDK\" or \"POP\")\n* v3.0.5 - 2019-05-16\n    * Updated to ph-bdve 5.1.8 to support Peppol Spring Release 2019 validation artefacts\n* v3.0.4 - 2019-03-22\n    * Updated to as2-lib 4.2.2\n* v3.0.3 - 2018-11-26\n    * Requires ph-commons 9.2.0\n    * Includes ph-bdve 5.1.0 with Peppol validation 3.7.0 \n* v3.0.2 - 2018-06-28\n    * Updated to ph-commons 9.1.2\n    * Updated to as2-lib 4.1.0\n    * Updated ph-bdve to 5.0\n    * Removed mandatory dependency to ph-bdve-simplerinvoicing\n* v3.0.1 - 2018-04-05\n    * Updated to as2-lib 4.0.2 fixing usage of BC PKCS 12 keystore instead of JDK PKCS 12 keystore\n    * Exceptions in MDN processing are now propagated to the outside world\n* v3.0.0 - 2018-02-12\n    * Updated to ph-commons 9.0.1\n    * The `StandardBusinessDocument` send out, uses the default XML namespace prefix (\"\") instead of \"sh\"\n    * Updated to BouncyCastle 1.59\n    * Arbitrary key store types can now be used for sending (no more limitation to PKCS12)\n* v2.0.7 - 2017-07-27\n    * Added possibility to customize `Content-Transfer-Encoding` used\n    * Using ph-bdve 3.2.0 which improves validation artefact ClassLoader handling\n* v2.0.6 - 2017-06-19\n    * Updated to ph-bdve 3.1.3 for XSLT validation fix\n* v2.0.5 - 2017-05-23\n    * Added possibility to provide a custom namespace context\n* v2.0.4 - 2017-05-18\n    * Updated to ph-bdve 3.1.0 (Peppol validation 3.4.0)\n* v2.0.3 - 2017-03-20\n    * Improved customizability of `AS2ClientBuilder`\n* v2.0.2 - 2017-03-01\n    * Using ph-bdve 3 for validation\n* v2.0.1 - 2017-01-16\n    * Just a new release with no new features\n    * Binds to ph-commons 8.6.x\n* v2.0.0 - 2016-08-22\n    * Updated to JDK 8\n\n---\n\nMy personal [Coding Styleguide](https://github.com/phax/meta/blob/master/CodingStyleguide.md) |\nOn Twitter: \u003ca href=\"https://twitter.com/philiphelger\"\u003e@philiphelger\u003c/a\u003e |\nKindly supported by [YourKit Java Profiler](https://www.yourkit.com)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphax%2Fas2-peppol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphax%2Fas2-peppol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphax%2Fas2-peppol/lists"}