예제 #1
0
        private static void Verify(IKsiSignature signature, DataHash dataHash)
        {
            IVerificationContext context = new VerificationContext()
            {
                Signature    = signature,
                DocumentHash = dataHash
            };
            VerificationResult result = new InternalVerificationPolicy().Verify(context);

            Assert.AreEqual(VerificationResultCode.Ok, result.ResultCode, "Unexpected verification result");
        }
        private static void Verify(IKsiSignature signature)
        {
            Assert.IsTrue(signature.IsExtended, "");

            IVerificationContext context = new VerificationContext()
            {
                Signature = signature,
            };
            VerificationResult result = new InternalVerificationPolicy().Verify(context);

            Assert.AreEqual(VerificationResultCode.Ok, result.ResultCode, "Unexpected verification result");
        }
        public void AsyncSignHashTest(KsiService service)
        {
            byte[] data = Encoding.UTF8.GetBytes("This is my document");

            IDataHasher dataHasher = KsiProvider.CreateDataHasher();

            dataHasher.AddData(data);
            DataHash dataHash = dataHasher.GetHash();

            ManualResetEvent waitHandle = new ManualResetEvent(false);
            IKsiSignature    signature  = null;

            object testObject          = new object();
            bool   isAsyncStateCorrect = false;

            service.BeginSign(dataHash, delegate(IAsyncResult ar)
            {
                try
                {
                    isAsyncStateCorrect = ar.AsyncState == testObject;
                    signature           = service.EndSign(ar);
                }
                catch (Exception ex)
                {
                    Assert.Fail("Unexpected exception: " + ex);
                }
                finally
                {
                    waitHandle.Set();
                }
            }, testObject);

            Assert.IsTrue(waitHandle.WaitOne(10000), "Wait handle timed out.");

            Assert.IsNotNull(signature, "Signature should not be null.");
            Assert.AreEqual(true, isAsyncStateCorrect, "Unexpected async state.");

            VerificationContext verificationContext = new VerificationContext(signature)
            {
                DocumentHash = dataHash
            };

            InternalVerificationPolicy policy             = new InternalVerificationPolicy();
            VerificationResult         verificationResult = policy.Verify(verificationContext);

            Assert.AreEqual(VerificationResultCode.Ok, verificationResult.ResultCode, "Signature should verify with internal policy");
        }
        private static void CreateSignatureWithAggregationChainAndVerify(IKsiSignature signature, DataHash inputHash, AggregationHashChain.Link[] links,
                                                                         string expectedVerificationErrorCode = null)
        {
            IKsiSignature newSignature = new KsiSignatureFactory(
                new EmptyVerificationPolicy()).CreateSignatureWithAggregationChain(signature, inputHash, HashAlgorithm.Sha2256, links);
            VerificationResult result = new InternalVerificationPolicy().Verify(new VerificationContext(newSignature)
            {
                DocumentHash = inputHash
            });

            if (string.IsNullOrEmpty(expectedVerificationErrorCode))
            {
                Assert.AreEqual(VerificationResultCode.Ok, result.ResultCode, "Unexpected verification result");
            }
            else
            {
                Assert.AreEqual(VerificationResultCode.Fail, result.ResultCode, "Unexpected verification result");
                Assert.AreEqual(expectedVerificationErrorCode, result.VerificationError.Code, "Unexpected verification error code");
            }
        }