Ejemplo n.º 1
0
        public void ValidatePrimesignSignatureTest()
        {
            byte[] certBits = Convert.FromBase64String(CERT64ENCODED);

            var  test = new ReceiptQrCode(QRCODE1);
            bool ok   = test.ValidateSignatureBouncyCastle(certBits);

            Assert.True(ok);
        }
Ejemplo n.º 2
0
        private async void ScanBon_Clicked(object sender, EventArgs e)
        {
            try
            {
                var scanner = DependencyService.Get <IQrScanningService>();
                var result  = await scanner.ScanAsync();

                if (result != null)
                {
                    System.Diagnostics.Debug.WriteLine("QR: " + result);

                    StringBuilder stb = new StringBuilder();
                    stb.AppendLine($"QR: {result}");

                    var qrCode = new ReceiptQrCode(result);
                    if (qrCode.IsValid)
                    {
                        stb.AppendLine($"Cipher Suite: {qrCode.CipherSuite}");
                        if (!qrCode.IstGeschlossenesSystem())
                        {
                            stb.AppendLine($"Cert Id: {qrCode.CertificateSerialAsDecimal}");
                        }
                        else
                        {
                            stb.AppendLine("Kassentyp: geschlossenes System");
                        }
                        stb.AppendLine($"Datum: {qrCode.Date}");
                        stb.AppendLine($"Beträge: {qrCode.BetragSatzNormal} / {qrCode.BetragSatzErmaessigt1} / {qrCode.BetragSatzErmaessigt2} / {qrCode.BetragSatzNull} / {qrCode.BetragSatzBesonders}");

                        if (!qrCode.IstGeschlossenesSystem())
                        {
                            var certificateLookupResult = CertificateLookup.Lookup(qrCode);

                            if (certificateLookupResult.Found)
                            {
                                bool verified = qrCode.ValidateSignatureBouncyCastle(certificateLookupResult.CertificateBinary);
                                stb.AppendLine($"Ergebnis Validierung Signatur: {verified}");
                            }
                            else
                            {
                                stb.AppendLine($"Fehler: Zertifikat nicht gefunden, {certificateLookupResult.ErrorMessage}");
                            }
                        }
                        else
                        {
                            stb.AppendLine($"Ordnungsbegriff des Unternehmers: {qrCode.CertificateSerial}");
                        }
                    }
                    else
                    {
                        stb.AppendLine("Fehler: QR Code ungültig");
                    }

                    VerificationResult.Text = stb.ToString();
                }
            }
            catch (Exception ex)
            {
                await DisplayAlert("Scan Error", ex.ToString(), "OK");
            }
        }