示例#1
0
        public async Task TestInvoiceHashMismatchShouldReturnFalse()
        {
            var dltPayload = new InvoicePayload(Encoding.UTF8.GetBytes("Somebody once told me"),
                                                Encoding.UTF8.GetBytes("the world is gonna roll me"));

            var invoiceRepository = new Mock <IInvoiceRepository>();

            invoiceRepository.Setup(i => i.LoadInvoiceInformationAsync(It.IsAny <Hash>())).ReturnsAsync(dltPayload);

            var verificator = new InvoiceVerificator(invoiceRepository.Object, new Mock <IKvkRepository>().Object);

            Assert.IsFalse(await verificator.IsValid(new Invoice
            {
                Hash = Hash.Empty, KvkNumber = "123456789", Payload = Encoding.UTF8.GetBytes("Somebody once")
            }));
        }
示例#2
0
        public async Task SetupAsync()
        {
            var invoiceRepository = new IotaInvoiceRepository(IotaRepository);
            var kvkRepository     = new RestKvkRepository(new RestClient("https://localhost:44381"));

            //var companyKeys = Encryption.Create();
            //var document = Encoding.UTF8.GetBytes("NL63ABNA0265980487");

            //var bundleHash = await invoiceRepository.PublishInvoiceHashAsync(document, companyKeys);
            //await kvkRepository.RegisterCompanyPublicKeyAsync("401196200", companyKeys);

            var parsedInvoice = await ImageParser.Parse("C:\\Projects\\Odyssey\\IMG_20190413_170510.jpg");

            parsedInvoice.Hash      = new Hash("EJKEGJVZVBCPWWSBCGGJUFNSXLVAPJSIUOUHEILDEIL9QTKZPKBIUWMHPALQDQ9IDWJEJCZSSBSPKVGB9");
            parsedInvoice.KvkNumber = "401196200";

            var invoiceVerificator = new InvoiceVerificator(invoiceRepository, kvkRepository);
            var result             = await invoiceVerificator.IsValid(parsedInvoice);
        }
示例#3
0
        public async Task TestSignatureMatchShouldReturnTrue()
        {
            var invoice = new Invoice
            {
                Hash = Hash.Empty, KvkNumber = "123456789", Payload = Encoding.UTF8.GetBytes("Somebody once told me")
            };
            var signatureScheme = Encryption.CreateSignatureScheme(Encryption.Create());

            var dltPayload = new InvoicePayload(DocumentHash.Create(invoice.Payload),
                                                signatureScheme.SignData(invoice.Payload));

            var invoiceRepository = new Mock <IInvoiceRepository>();

            invoiceRepository.Setup(i => i.LoadInvoiceInformationAsync(It.IsAny <Hash>())).ReturnsAsync(dltPayload);

            var kvkRepository = new Mock <IKvkRepository>();

            kvkRepository.Setup(k => k.GetCompanyPublicKeyAsync(It.IsAny <string>()))
            .ReturnsAsync(signatureScheme.Key.Export(CngKeyBlobFormat.EccFullPublicBlob));

            var verificator = new InvoiceVerificator(invoiceRepository.Object, kvkRepository.Object);

            Assert.IsTrue(await verificator.IsValid(invoice));
        }