summaryrefslogtreecommitdiff
path: root/src/test/java/at/gv/util/demo/ZuseSSLTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/at/gv/util/demo/ZuseSSLTest.java')
-rw-r--r--src/test/java/at/gv/util/demo/ZuseSSLTest.java136
1 files changed, 136 insertions, 0 deletions
diff --git a/src/test/java/at/gv/util/demo/ZuseSSLTest.java b/src/test/java/at/gv/util/demo/ZuseSSLTest.java
new file mode 100644
index 0000000..359cb4e
--- /dev/null
+++ b/src/test/java/at/gv/util/demo/ZuseSSLTest.java
@@ -0,0 +1,136 @@
+package at.gv.util.demo;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.Socket;
+import java.security.Key;
+import java.security.KeyManagementException;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.Provider;
+import java.security.UnrecoverableKeyException;
+import java.security.cert.CertificateException;
+import java.util.Base64;
+import java.util.Collections;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.conn.ssl.NoopHostnameVerifier;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.ssl.PrivateKeyDetails;
+import org.apache.http.ssl.PrivateKeyStrategy;
+import org.apache.http.ssl.SSLContextBuilder;
+import org.apache.http.util.EntityUtils;
+import org.apache.log4j.lf5.util.StreamUtils;
+
+import at.gv.util.xsd.szr.pvp.sec.Security;
+
+public class ZuseSSLTest {
+
+ public static void main(String[] args) {
+ String keyStoreFile = "F:/Projekte/configs/mis/egiz.gv.at-816-2018-06-07.jks";
+ char[] keyStorePassword = "OSgmSn!".toCharArray();
+ char[] keyPassword = "nichts".toCharArray();
+
+ //String serviceURL = "https://pamgate2.portal.at/at.gv.usp.vdds-ws-q/Synchronisation?wsdl";
+ String serviceURL = "https://pamgate2.portal.at/at.gv.usp.vdds-ws-q/Synchronisation";
+ //serviceURL = "https://eid.egiz.gv.at/sslclientcertdemo/";
+
+ //String payLoadB64 = "PHNvYXA6RW52ZWxvcGUgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8iPg0KCTxzb2FwOkJvZHk+DQoJCTxuczM6TGlzdE1hbmRhdGVzUmVxdWVzdCB4bWxuczpuczM9Imh0dHA6Ly9lYWkuYnJ6Lmd2LmF0L3NlcnZpY2VzL3ZkZHMvc3luYy1tc2dzIiB4bWxucz0iaHR0cDovL2VhaS5icnouZ3YuYXQvc2VydmljZXMvdmRkcy90b2tlbiIgeG1sbnM6bnMyPSJodHRwOi8vZWFpLmJyei5ndi5hdC9zZXJ2aWNlcy92ZGRzL2NvbW1vbiIgeG1sbnM6bnM0PSJodHRwOi8vcmVmZXJlbmNlLmUtZ292ZXJubWVudC5ndi5hdC9uYW1lc3BhY2UvbWFuZGF0ZXMvMjAwNDA3MDEjIiB4bWxuczpuczU9Imh0dHA6Ly9yZWZlcmVuY2UuZS1nb3Zlcm5tZW50Lmd2LmF0L25hbWVzcGFjZS9wZXJzb25kYXRhLzIwMDIwMjI4IyIgeG1sbnM6bnM2PSJodHRwOi8vd3d3LnVzcC5ndi5hdC9uYW1lc3BhY2UvbWFuZGF0ZXMvMjAxNjAzMDEjIiB4bWxuczpuczc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOm5zOD0iaHR0cDovL2VhaS5icnouZ3YuYXQvc2VydmljZXMvdmRkcy9zeW5jaHJvbmlzYXRpb24iPg0KCQkJPG5zMzpNYW5kYXRlQXR0cmlidXRlc1NlYXJjaEZpbHRlcj4NCgkJCQk8bnMzOkZpbHRlciB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6dHlwZT0ibnMzOlNlYXJjaENyaXRlcmlhVGVzdFR5cGUiPg0KCQkJCQk8bnMzOlNlYXJjaENyaXRlcmlhPg0KCQkJCQkJPG5zMzpSZXByZXNlbnRhdGl2ZUlEPg0KCQkJCQkJCTxuczU6VmFsdWU+Z2Q0dTRXTkRqVjN4QllNY3VCbWoydndoSDg4PTwvbnM1OlZhbHVlPg0KCQkJCQkJCTxuczU6VHlwZT51cm46cHVibGljaWQ6Z3YuYXQ6Y2RpZCtaUDwvbnM1OlR5cGU+DQoJCQkJCQk8L25zMzpSZXByZXNlbnRhdGl2ZUlEPg0KCQkJCQk8L25zMzpTZWFyY2hDcml0ZXJpYT4NCgkJCQk8L25zMzpGaWx0ZXI+DQoJCQk8L25zMzpNYW5kYXRlQXR0cmlidXRlc1NlYXJjaEZpbHRlcj4NCgkJPC9uczM6TGlzdE1hbmRhdGVzUmVxdWVzdD4NCgk8L3NvYXA6Qm9keT4NCjwvc29hcDpFbnZlbG9wZT4=";
+ String payLoadB64 = "PHNvYXA6RW52ZWxvcGUgeG1sbnM6c29hcD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZS8iPg0KCTxzb2FwOkJvZHk+DQoJCTxuczM6TGlzdE1hbmRhdGVzUmVxdWVzdCB4bWxuczpuczM9Imh0dHA6Ly9lYWkuYnJ6Lmd2LmF0L3NlcnZpY2VzL3ZkZHMvc3luYy1tc2dzIiB4bWxucz0iaHR0cDovL2VhaS5icnouZ3YuYXQvc2VydmljZXMvdmRkcy90b2tlbiIgeG1sbnM6bnMyPSJodHRwOi8vZWFpLmJyei5ndi5hdC9zZXJ2aWNlcy92ZGRzL2NvbW1vbiIgeG1sbnM6bnM0PSJodHRwOi8vcmVmZXJlbmNlLmUtZ292ZXJubWVudC5ndi5hdC9uYW1lc3BhY2UvbWFuZGF0ZXMvMjAwNDA3MDEjIiB4bWxuczpuczU9Imh0dHA6Ly9yZWZlcmVuY2UuZS1nb3Zlcm5tZW50Lmd2LmF0L25hbWVzcGFjZS9wZXJzb25kYXRhLzIwMDIwMjI4IyIgeG1sbnM6bnM2PSJodHRwOi8vd3d3LnVzcC5ndi5hdC9uYW1lc3BhY2UvbWFuZGF0ZXMvMjAxNjAzMDEjIiB4bWxuczpuczc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyMiIHhtbG5zOm5zOD0iaHR0cDovL2VhaS5icnouZ3YuYXQvc2VydmljZXMvdmRkcy9zeW5jaHJvbmlzYXRpb24iPg0KCQkJPG5zMzpNYW5kYXRlQXR0cmlidXRlc1NlYXJjaEZpbHRlcj4NCgkJCQk8bnMzOkZpbHRlcj4NCgkJCQkJPG5zMzpTZWFyY2hDcml0ZXJpYT4NCgkJCQkJCTxuczM6UmVwcmVzZW50YXRpdmVJRD4NCgkJCQkJCQk8bnM1OlZhbHVlPmdkNHU0V05EalYzeEJZTWN1Qm1qMnZ3aEg4OD08L25zNTpWYWx1ZT4NCgkJCQkJCQk8bnM1OlR5cGU+dXJuOnB1YmxpY2lkOmd2LmF0OmNkaWQrWlA8L25zNTpUeXBlPg0KCQkJCQkJPC9uczM6UmVwcmVzZW50YXRpdmVJRD4NCgkJCQkJPC9uczM6U2VhcmNoQ3JpdGVyaWE+DQoJCQkJPC9uczM6RmlsdGVyPg0KCQkJPC9uczM6TWFuZGF0ZUF0dHJpYnV0ZXNTZWFyY2hGaWx0ZXI+DQoJCTwvbnMzOkxpc3RNYW5kYXRlc1JlcXVlc3Q+DQoJPC9zb2FwOkJvZHk+DQo8L3NvYXA6RW52ZWxvcGU+";
+ try {
+
+ SSLContextBuilder sslContext = new SSLContextBuilder();
+ KeyStore keyStore = KeyStore.getInstance("JKS", "SUN");
+ keyStore.load(new FileInputStream(new File(keyStoreFile)), keyStorePassword);
+
+
+
+ PrivateKeyStrategy aliasStrategy = new PrivateKeyStrategy() {
+ @Override
+ public String chooseAlias(Map<String, PrivateKeyDetails> aliases, Socket socket) {
+ if (aliases != null && !aliases.isEmpty())
+ return aliases.keySet().iterator().next();
+
+ return null;
+ }
+
+ };
+
+ sslContext.loadKeyMaterial(keyStore, keyPassword, aliasStrategy);
+ sslContext.loadTrustMaterial(null, (certificate, authType) -> true);
+
+ CloseableHttpClient client = HttpClients.custom()
+ .setSSLContext(sslContext.build())
+ .setSSLHostnameVerifier(new NoopHostnameVerifier())
+ .build();
+
+ HttpPost httpGet = new HttpPost(serviceURL);
+ //HttpGet httpGet = new HttpGet(serviceURL);
+ //httpGet.setHeader("Accept", "application/xml");
+
+ httpGet.setHeader("SOAPAction", "ListMandates");
+ httpGet.setHeader("Accept", "*/*");
+
+
+ //PVP 1.x header
+ httpGet.setHeader("X-VERSION", "1.8");
+ httpGet.setHeader("X-AUTHENTICATE-UserID", "egiz@egiz.gv.at");
+ httpGet.setHeader("X-AUTHENTICATE-GVGID", "gvGid");
+ httpGet.setHeader("X-AUTHENTICATE-PARTICIPANTID", "AT:B:111");
+ httpGet.setHeader("X-AUTHENTICATE-GVOUID", "EGIZ");
+ httpGet.setHeader("X-AUTHENTICATE-OU", "EGIZ");
+ httpGet.setHeader("X-AUTHENTICATE-GVFUNCTION", "gvFunctio");
+ httpGet.setHeader("X-AUTHORIZE-ROLES", "VDDS-USP-VDDS-PARTNER");
+ httpGet.setHeader("X-AUTHENTICATE-gvSecClass", "2");
+ httpGet.setHeader("X-AUTHENTICATE-cn","E-Government Innovationszentrum");
+ httpGet.setHeader("X-ACCOUNTING-CostCenterId", null);
+ httpGet.setHeader("X-ACCOUNTING-InvoiceRecptId", null);
+
+
+ //PVP 2.x header
+ httpGet.setHeader("X-PVP-EGOVTOKEN-VERSION", "2.1.2");
+ httpGet.setHeader("X-PVP-USERID", "egiz@egiz.gv.at");
+ httpGet.setHeader("X-PVP-GID", "gvGid");
+ httpGet.setHeader("X-PVP-PARTICIPANT-ID", "AT:B:111");
+ httpGet.setHeader("X-PVP-OU-GV-OU-ID", "EGIZ");
+ httpGet.setHeader("X-PVP-OU", "EGIZ");
+ httpGet.setHeader("X-PVP-FUNCTION", "gvFunctio");
+ httpGet.setHeader("X-PVP-ROLES", "VDDS-USP-VDDS-PARTNER");
+ httpGet.setHeader("X-PVP-SECCLASS", "2");
+ httpGet.setHeader("X-PVP-PRINCIPAL-NAME","E-Government Innovationszentrum");
+ httpGet.setHeader("X-PVP-COST-CENTER-ID", null);
+ httpGet.setHeader("X-PVP-INVOICE-RECPT-ID", null);
+ httpGet.setHeader("X-PVP-BINDING", "http");
+
+ StringEntity se = new StringEntity(new String(Base64.getDecoder().decode(payLoadB64), "UTF-8"));
+ httpGet.setEntity(se);
+ System.out.println("Request: " + EntityUtils.toString(httpGet.getEntity()));
+
+ HttpResponse response = client.execute(httpGet);
+
+ System.out.println("HTTP StatusCode: " + response.getStatusLine().getStatusCode());
+
+ if (response.getEntity().getContent() != null )
+ System.out.println("Body: " + org.apache.commons.codec.binary.StringUtils.newStringUtf8(StreamUtils.getBytes(response.getEntity().getContent())));
+
+
+ System.out.println("Test finished");
+
+ } catch (Exception e) {
+ e.printStackTrace();
+
+ }
+
+
+ }
+
+}