Как подписать QR-код с pfx-сертификатом в Java? - PullRequest
0 голосов
/ 28 февраля 2020

Мне нужно подписать строку счета-фактуры длиной 44 символа цифровой подписью из pfx-файла (сертификат A1), затем передать ее в качестве параметра в метод и, наконец, распечатать на принтере Zebra ZQ520. Я создал класс Java, который успешно открывает pfx-файл, и другой класс, который генерирует и печатает QR-код. Сейчас я пытаюсь подписать строку, сохранить ее в переменной и передать в качестве параметра в методе printQRCode. Кстати я использую Android Studio .

public class A1Certificate {

        public void openCertificate() throws Exception {

            try {            
                KeyStore keystore = KeyStore.getInstance("PKCS12");
                char[] password = "123456".toCharArray();

                InputStream certificate = getClass().getResourceAsStream("mycertificate.pfx");

                try {
                    keystore.load(certificate ,password);                
                } catch (IOException e) {
                    throw new Exception("Invalid Password");
                }                                        
            } catch (IOException ex) {
                ex.printStackTrace();
            } catch (CertificateException ex) {
                ex.printStackTrace();
            } catch (NoSuchAlgorithmException ex) {
                ex.printStackTrace();
            } catch (UnrecoverableKeyException ex) {
                ex.printStackTrace();
            } catch (KeyStoreException ex) {
                ex.printStackTrace();
            }
        }
public class ZebraZQ520Printer{

        public StringBuilder printQRCode(StringBuilder pfxSignature){
        StringBuilder var = new StringBuilder();                        

        var.append("B QR 80 1800 M 2 U 6");
        var.append("\r\n");
        var.append("MA,"+pfxSignature);
        var.append("\r\n");
        var.append("ENDQR");
        var.append("\r\n");        
        var.append("\r\n");
        return var;
    }
}
...