public void GenerateSignature()
        {
            var certificate = new SignedStaticApplicationData
            {
                HashAlgorithmIndicator      = 0x01,
                DataAuthenticationCode      = "2014".FromHexa(),
                StaticDataToBeAuthenticated = "F04341454E 01".FromHexa()
            };

            var bytes = certificate.GenerateCertificate(new PublicKey(IssuerModulus, IssuerPrivateExponent));

            Console.WriteLine(bytes.ToHexa('\0'));

            Assert.AreEqual(StaticDataAuthenticationCertificateBytes, bytes.ToHexa('\0'));
        }
        public void RecoverFromSignature()
        {
            var certificate = new SignedStaticApplicationData();

            certificate.RecoverFromSignature(StaticDataAuthenticationCertificateBytes.FromHexa(), new PublicKey(IssuerModulus, IssuerPublicExponent));

            Assert.AreEqual(0x6A, certificate.DataHeader);
            Assert.AreEqual(0xBC, certificate.DataTrailer);
            Assert.AreEqual(0x03, certificate.DataFormat);
            Assert.AreEqual(0x01, certificate.HashAlgorithmIndicator);
            Assert.AreEqual(Hash, certificate.HashResult.ToHexa('\0'));
            Assert.AreEqual(Recovered, certificate.Recovered.ToHexa('\0'));

            Assert.AreEqual("2014", certificate.DataAuthenticationCode.ToHexa('\0'));
            Assert.AreEqual(Enumerable.Repeat((byte)0xBB, (IssuerModulus.Length - 2) / 2 - 26).ToArray(), certificate.PadPattern);
        }