public void LegacyExtendStaticTest()
        {
            IKsiSignature signature = new KsiSignatureFactory().Create(File.ReadAllBytes(Path.Combine(TestSetup.LocalPath, Resources.KsiSignature_Ok)));
            Ksi           ksi       = GetStaticKsi(Resources.KsiService_LegacyExtendResponsePdu, 3491956840, null, PduVersion.v1);

            Verify(ksi.Extend(signature));
        }
Esempio n. 2
0
        public void HAExtenderGetConfTest()
        {
            Ksi            ksi  = new Ksi(new HAKsiService(null, ExtendingServices, null));
            ExtenderConfig conf = ksi.GetExtenderConfig();

            Assert.NotNull(conf);
        }
Esempio n. 3
0
        public void HAAggregatorGetConfTest()
        {
            Ksi ksi = new Ksi(new HAKsiService(SigningServices, null, null));
            AggregatorConfig conf = ksi.GetAggregatorConfig();

            Assert.NotNull(conf);
        }
 public void ExtendSuccessWithInvalidSigningPassTest(Ksi ksi)
 {
     Assert.DoesNotThrow(delegate
     {
         ksi.Extend(TestUtil.GetSignature());
     }, "Invalid signing pass should not prevent extending.");
 }
        private static void Verify(Ksi ksi, IKsiSignature signature, DataHash documentHash)
        {
            VerificationContext verificationContext = new VerificationContext(signature)
            {
                DocumentHash     = documentHash,
                PublicationsFile = ksi.GetPublicationsFile()
            };

            AggregationHashChain.Link firstChainLink = signature.GetAggregationHashChains()[0].GetChainLinks()[0];
            if (firstChainLink.Metadata != null && firstChainLink.Metadata.Padding == null)
            {
                throw new Exception("Metadata padding is missing.");
            }

            KeyBasedVerificationPolicy policy = new KeyBasedVerificationPolicy();

            VerificationResult verificationResult = policy.Verify(verificationContext);

            if (verificationResult.ResultCode != VerificationResultCode.Ok)
            {
                Console.WriteLine("Verification result code: " + verificationResult.ResultCode);
                Console.WriteLine("Verification rule name: " + verificationResult.RuleName);
                Console.WriteLine("Verification error: " + verificationResult.VerificationError);
            }
            Assert.AreEqual(VerificationResultCode.Ok, verificationResult.ResultCode, "Signature should verify with key based policy");
        }
        public void BlockSignerGetUniSignaturesOfManyRandomHashesTest(Ksi ksi)
        {
            int              k        = 7;
            Random           random   = new Random();
            IdentityMetadata metadata = new IdentityMetadata("test client id", "test machine id");
            List <DataHash>  hashes   = new List <DataHash>();

            byte[] buffer = new byte[10];

            for (int i = 0; i < k; i++)
            {
                IDataHasher hasher = KsiProvider.CreateDataHasher();
                random.NextBytes(buffer);
                hasher.AddData(buffer);
                hashes.Add(hasher.GetHash());
            }

            BlockSigner blockSigner = new BlockSigner(GetHttpKsiService());

            foreach (DataHash hash in hashes)
            {
                blockSigner.Add(hash, metadata);
            }

            IEnumerable <IKsiSignature> uniSignatures = blockSigner.Sign();
            int n = 0;

            foreach (IKsiSignature signature in uniSignatures)
            {
                Verify(ksi, signature, hashes[n++]);
            }
        }
Esempio n. 7
0
 public void TcpGetExtenderConfigSuccessWithInvalidSigningPortTest(Ksi ksi)
 {
     Assert.DoesNotThrow(delegate
     {
         ksi.GetExtenderConfig();
     }, "Invalid signing port should not prevent getting extender config.");
 }
        public void SignHashWithTcpTimeoutAndBufferSizeTest()
        {
            uint requestTimeout = 9000;
            uint bufferSize     = 1024;
            TcpKsiSigningServiceProtocol protocol = new TcpKsiSigningServiceProtocol(
                IPAddress.Parse(Settings.Default.TcpExtendingServiceIp),
                Settings.Default.TcpSigningServicePort,
                requestTimeout,
                bufferSize);
            HttpKsiServiceProtocol publicationsFileProtocol = new HttpKsiServiceProtocol(
                null,
                null,
                Settings.Default.HttpPublicationsFileUrl);
            Ksi ksi = new Ksi(new KsiService(
                                  protocol,
                                  new ServiceCredentials(Settings.Default.HttpSigningServiceUser, Settings.Default.HttpSigningServicePass,
                                                         TestUtil.GetHashAlgorithm(Settings.Default.HttpSigningServiceHmacAlgorithm)),
                                  null, null, publicationsFileProtocol,
                                  new PublicationsFileFactory(
                                      new PkiTrustStoreProvider(new X509Store(StoreName.Root), CryptoTestFactory.CreateCertificateSubjectRdnSelector("[email protected]")))));

            VerificationResult verificationResult = SignHash(ksi);

            Assert.AreEqual(VerificationResultCode.Ok, verificationResult.ResultCode, "Signature should verify with key based policy");
        }
        public void BlockSignerGetUniSignaturesWithoutHashesTest(Ksi ksi)
        {
            BlockSigner blockSigner            = new BlockSigner(GetHttpKsiService());
            IEnumerable <IKsiSignature> result = blockSigner.Sign();

            Assert.AreEqual(0, result.Count(), "Unexpected signature count");
        }
        public void Verify(Ksi ksi)
        {
            VerificationResult result = ksi.Verify(TestUtil.GetSignature(Resources.KsiSignature_Ok));

            Assert.AreEqual(VerificationResultCode.Ok, result.ResultCode, "Unexpected verification result code.");
            Assert.AreEqual(nameof(DefaultVerificationPolicy), result.RuleName, "Unexpected policy used.");
        }
 public void TcpSignHashSuccessWithInvalidExtendingPortTest(Ksi ksi)
 {
     Assert.DoesNotThrow(delegate
     {
         SignHash(ksi);
     }, "Invalid exteding port should not prevent signing.");
 }
        public void SignWithStreamAndLevelTest(Ksi ksi)
        {
            IKsiSignature signature;

            using (MemoryStream stream = new MemoryStream())
            {
                byte[] data = Encoding.UTF8.GetBytes("This is my document");
                stream.Write(data, 0, data.Length);
                stream.Seek(0, SeekOrigin.Begin);
                signature = ksi.Sign(stream, 3);
            }

            Assert.LessOrEqual(3, signature.GetAggregationHashChains()[0].GetChainLinks()[0].LevelCorrection, "Level correction is invalid.");

            VerificationContext verificationContext = new VerificationContext(signature)
            {
                DocumentHash = new DataHash(HashAlgorithm.Sha2256,
                                            Base16.Decode("D439459856BEF5ED25772646F73A70A841FC078D3CBBC24AB7F47C464683768D")),
                PublicationsFile = ksi.GetPublicationsFile()
            };
            KeyBasedVerificationPolicy policy             = new KeyBasedVerificationPolicy();
            VerificationResult         verificationResult = policy.Verify(verificationContext);

            Assert.AreEqual(VerificationResultCode.Ok, verificationResult.ResultCode, "Signature should verify with key based policy");
        }
        public void ExtendStaticTest()
        {
            IKsiSignature signature = new KsiSignatureFactory().Create(File.ReadAllBytes(Path.Combine(TestSetup.LocalPath, Resources.KsiSignature_Ok)));
            Ksi           ksi       = GetStaticKsi(Resources.KsiService_ExtendResponsePdu_RequestId_1043101455, 1043101455);

            Verify(ksi.Extend(signature));
        }
 public void TcpGetAggregatorConfigWithInvalidExtendingPortTest(Ksi ksi)
 {
     Assert.DoesNotThrow(delegate
     {
         ksi.GetAggregatorConfig();
     }, "Invalid exteding port should not prevent signing.");
 }
Esempio n. 15
0
        public void SignStaticTest()
        {
            Ksi           ksi       = GetStaticKsi(Resources.KsiService_AggregationResponsePdu_RequestId_1584727637, 1584727637);
            DataHash      dataHash  = new DataHash(Base16.Decode("019f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"));
            IKsiSignature signature = ksi.Sign(dataHash);

            Verify(signature, dataHash);
        }
Esempio n. 16
0
        public void GetPublicationsFileStaticTest()
        {
            Ksi ksi = GetKsi();

            IPublicationsFile pubFile = ksi.GetPublicationsFile();

            Assert.AreEqual(1515974400, pubFile.GetLatestPublication().PublicationData.PublicationTime, "Unexpected last publication time");
        }
        public void ExtendStaticWithMultiPayloadsResponseTest()
        {
            IKsiSignature signature = new KsiSignatureFactory().Create(File.ReadAllBytes(Path.Combine(TestSetup.LocalPath, Resources.KsiSignature_Ok)));
            // Response has multiple payloads (2 extending payloads and a configuration payload)
            Ksi ksi = GetStaticKsi(Resources.KsiService_ExtendResponsePdu_Multi_Payloads, 1043101455, new KsiSignatureFactory(new EmptyVerificationPolicy()));

            Verify(ksi.Extend(signature));
        }
        public void VerifyNewSignature(Ksi ksi)
        {
            IKsiSignature      signature = ksi.Sign(new DataHash(Base16.Decode("0111A700B0C8066C47ECBA05ED37BC14DCADB238552D86C659342D1D7E87B8772D")));
            VerificationResult result    = ksi.Verify(signature);

            Assert.AreEqual(VerificationResultCode.Ok, result.ResultCode, "Unexpected verification result code.");
            Assert.AreEqual(nameof(DefaultVerificationPolicy), result.RuleName, "Unexpected policy used.");
        }
        public void VerifyWithDocumentHashAndPublicationsFile(Ksi ksi)
        {
            VerificationResult result = ksi.Verify(TestUtil.GetSignature(Resources.KsiSignature_Ok),
                                                   new DataHash(Base16.Decode("0111A700B0C8066C47ECBA05ED37BC14DCADB238552D86C659342D1D7E87B8772D")), TestUtil.GetPublicationsFile());

            Assert.AreEqual(VerificationResultCode.Ok, result.ResultCode, "Unexpected verification result code.");
            Assert.AreEqual(nameof(DefaultVerificationPolicy), result.RuleName, "Unexpected policy used.");
        }
        public void VerifyWithVerificationContextNull(Ksi ksi)
        {
            ArgumentNullException ex = Assert.Throws <ArgumentNullException>(delegate
            {
                ksi.Verify(new DefaultVerificationPolicy(), null);
            });

            Assert.AreEqual("context", ex.ParamName);
        }
        public void VerifyWithVerificationPolicyNull(Ksi ksi)
        {
            ArgumentNullException ex = Assert.Throws <ArgumentNullException>(delegate
            {
                ksi.Verify((VerificationPolicy)null, null);
            });

            Assert.AreEqual("policy", ex.ParamName);
        }
        public void VerifyWithSignatureNull2(Ksi ksi)
        {
            ArgumentNullException ex = Assert.Throws <ArgumentNullException>(delegate
            {
                ksi.Verify(null, null, TestUtil.GetPublicationsFile());
            });

            Assert.AreEqual("ksiSignature", ex.ParamName);
        }
        public void VerifyWithSignatureNull(Ksi ksi)
        {
            ArgumentNullException ex = Assert.Throws <ArgumentNullException>(delegate
            {
                ksi.Verify(null);
            });

            Assert.AreEqual("ksiSignature", ex.ParamName);
        }
Esempio n. 24
0
        public void CreateKsiWithServiceNull()
        {
            ArgumentNullException ex = Assert.Throws <ArgumentNullException>(delegate
            {
                Ksi ksi = new Ksi(null);
            });

            Assert.AreEqual("ksiService", ex.ParamName);
        }
        public void VerifyFailWithInvalidDocumentHash(Ksi ksi)
        {
            VerificationResult result = ksi.Verify(TestUtil.GetSignature(Resources.KsiSignature_Ok),
                                                   new DataHash(Base16.Decode("01580192B0D06E48884432DFFC26A67C6C685BEAF0252B9DD2A0B4B05D1724C5F2")));

            Assert.AreEqual(VerificationResultCode.Fail, result.ResultCode);
            Assert.AreEqual(VerificationError.Gen01, result.VerificationError);
            Assert.AreEqual(nameof(DefaultVerificationPolicy), result.RuleName, "Unexpected policy used.");
        }
        public void VerifyWithPublicationsFileNull(Ksi ksi)
        {
            ArgumentNullException ex = Assert.Throws <ArgumentNullException>(delegate
            {
                ksi.Verify(TestUtil.GetSignature(Resources.KsiSignature_Ok), null, null);
            });

            Assert.AreEqual("publicationsFile", ex.ParamName);
        }
        public void BlockSignerWithoutServiceTest(Ksi ksi)
        {
            ArgumentNullException ex = Assert.Throws <ArgumentNullException>(delegate
            {
                BlockSigner blockSigner = new BlockSigner(null, true, null);
            });

            Assert.AreEqual("ksiService", ex.ParamName, "Unexpected exception message");
        }
        public void BlockSignerWithoutRandomSeedTest(Ksi ksi)
        {
            BlockSigningException ex = Assert.Throws <BlockSigningException>(delegate
            {
                BlockSigner blockSigner = new BlockSigner(GetHttpKsiService(), true, null);
            });

            Assert.That(ex.Message, Does.StartWith("Random seed cannot be null when using blinding masks"), "Unexpected exception message");
        }
        public void ExtendInvalidPassTest(Ksi ksi)
        {
            Exception ex = Assert.Throws <KsiServiceException>(delegate
            {
                ksi.Extend(TestUtil.GetSignature());
            });

            Assert.AreEqual("Server responded with error message. Status: 258; Message: Failed hmac check.", ex.Message);
        }
        public void ExtendToNearestPublicationTest(Ksi ksi)
        {
            IKsiSignature ksiSignature      = TestUtil.GetSignature();
            IKsiSignature extendedToLatest  = ksi.Extend(ksiSignature, ksi.GetPublicationsFile().GetLatestPublication());
            IKsiSignature extendedToNearest = ksi.Extend(ksiSignature);

            Assert.True(extendedToLatest.PublicationRecord.PublicationData.PublicationTime > extendedToNearest.PublicationRecord.PublicationData.PublicationTime);
            Assert.AreEqual(1455494400, extendedToNearest.PublicationRecord.PublicationData.PublicationTime);
        }