Beispiel #1
0
        public void ParseQrCodeGeschlossenesSystemTest()
        {
            var    test = new ReceiptQrCode(QRCODE1);
            string Ordnungsbegriff_des_Unternehmers = test.CertificateSerial;

            Assert.True(test.IstGeschlossenesSystem());
            Assert.Equal("U:ATU46674503-01", Ordnungsbegriff_des_Unternehmers);
        }
Beispiel #2
0
        public void ValidatePrimesignSignatureTest()
        {
            byte[] certBits = Convert.FromBase64String(CERT64ENCODED);

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

            Assert.True(ok);
        }
        public void JwsHashTest()
        {
            var test = new ReceiptQrCode(QRCODE1);

            byte[] hash          = test.GetJwsHash();
            string convertedHash = Convert.ToBase64String(hash);

            Assert.Equal("RQvAE3zXoCVonYn8D5KIOZbcTxM+O0lOtOXBTqWarqM=", convertedHash);
        }
        public void VerifySignatureTest()
        {
            byte[] certBits = Convert.FromBase64String(CERT64ENCODED);

            var  test     = new ReceiptQrCode(QRCODE1);
            bool verified = test.ValidateSignature(certBits);

            Assert.True(verified);
        }
Beispiel #5
0
        public void LookupPrimesignCertificateTest()
        {
            var    test       = new ReceiptQrCode(QRCODE1);
            string certSerial = test.CertificateSerial;

            // Lookup needs serial in decimal
            long certificateSerialDecimal = Convert.ToInt64(certSerial, 16);

            Assert.Equal(491306597551448, certificateSerialDecimal);

            // Sample Primesign lookup for above serial
            var    result        = CertificateLookup.Primesign(certificateSerialDecimal);
            string cert64Encoded = Convert.ToBase64String(result.CertificateBinary);

            Assert.Equal(CERT64ENCODED, cert64Encoded);
        }
        public void LookupATrustCertificateTest()
        {
            var    test       = new ReceiptQrCode(QRCODE1);
            string certSerial = test.CertificateSerial;

            // Lookup needs serial in decimal
            int certificateSerialDecimal = Convert.ToInt32(certSerial, 16);

            Assert.Equal(2065058440, certificateSerialDecimal);

            // Sample A-Trust lookup for above serial
            var    result        = CertificateLookup.ATrust(certificateSerialDecimal);
            string cert64Encoded = Convert.ToBase64String(result.CertificateBinary);

            Assert.Equal(CERT64ENCODED, cert64Encoded);
        }
        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");
            }
        }
        public void SignatureValueExtractionTest()
        {
            var test = new ReceiptQrCode(QRCODE1);

            Assert.Equal("irdxIo1TAowB1OzpU+dgeAS887k8AuT09jrcMjZx95xHzbKp5pLQcupkbpZK5UxtDaxj08+8bRO30Y4wxiwonw==", test.SignatureValue);
        }