Android Question Integration of a Security Certificate and Print QR-Code on POS Printer

hasexxl1988

Active Member
Licensed User
Longtime User
Hello,
I have found nothing in the Community here, but maybe someone has an idea like me. A Security Certificate from Globalsign via the App resp.

In addition, the conscience information is to be converted into a QR code (ala JHS BARCODES V1). Afterwards, the QR code is to be printed encrypted with this certificate, so that only the certificate holder has access to the information in the QR code.
 

hasexxl1988

Active Member
Licensed User
Longtime User
i have found a Java Code Example for the Certificate in a Android App:

B4X:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.OutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.MalformedURLException;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.cert.X509Certificate;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
public class main {
  public static void main(String[] args) throws MalformedURLException, IOException, KeyManagementException, NoSuchAlgorithmException { 
  
    // Create a trust manager that does not validate certificate chains
        TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
                public void checkClientTrusted(X509Certificate[] certs, String authType) {
                }
                public void checkServerTrusted(X509Certificate[] certs, String authType) {
                }
            }
        };
        // Install the all-trusting trust manager
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        // Create all-trusting host name verifier
        HostnameVerifier allHostsValid = new HostnameVerifier() {
            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        };
    // Install the all-trusting host verifier
    // only for testing!!!
        HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
      
    String urlStr = "https://hs-abnahme.a-trust.at/RegistrierkasseMobile/v1/u123456789/Sign";
    String request = "{\"password\":\"123456789\",\"to_be_signed\":\"c2FtcGxlIHRleHQgZm9yIHNpZ25pbmcgd2l0aCByZWdpc3RyaWVya2Fzc2UubW9iaWxlIG9ubGluZSBzZXJ2aWNl\"}";
    URL url = new URL(urlStr);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("POST");
    conn.setDoOutput(true);
    conn.setDoInput(true);
    conn.setUseCaches(false);
    conn.setAllowUserInteraction(false);
    conn.setRequestProperty("Content-Type", "application/json");
    
    OutputStream out = conn.getOutputStream();
    Writer writer = new OutputStreamWriter(out, "UTF-8");
    writer.write(request);
    writer.close();
    out.close();
    
    if (conn.getResponseCode() != 200) {
      throw new IOException(conn.getResponseMessage());
    }
  
  
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    StringBuilder sb = new StringBuilder();
    String line;
    while ((line = rd.readLine()) != null) {
      sb.append(line);
    }
    rd.close();
    conn.disconnect();
    String responseStr = sb.toString();
    
    System.out.println(responseStr);
}
}

I do not know how I can embed the Java code into the app ...
 
Upvote 0
Top