コード例 #1
0
        public void Verifier_ShouldNot_VerifyCard_IfWrongVirgilSignature()
        {
            //STC-10
            var rawSignedModel = faker.PredefinedRawSignedModel(null, false, true, false);
            var cardManager    = faker.CardManager();
            var card           = cardManager.ImportCardFromJson(rawSignedModel.ExportAsJson());

            var verifier = new VirgilCardVerifier(new VirgilCardCrypto())
            {
                VerifySelfSignature   = false,
                VerifyVirgilSignature = true,
            };

            Assert.IsFalse(verifier.VerifyCard(card));
        }
コード例 #2
0
        public void Validate_ShouldIgnoreVirgilSignature_IfPropertyDoesntSetToTrue()
        {
            var crypto    = Substitute.For <ICardCrypto>();
            var validator = new VirgilCardVerifier(crypto);
            var card      = this.faker.Card(true, false);

            validator.VerifySelfSignature   = true;
            validator.VerifyVirgilSignature = false;
            crypto.VerifySignature(
                card.Signatures[0].Signature,
                card.ContentSnapshot,
                card.PublicKey).Returns(true);
            var result = validator.VerifyCard(card);

            Assert.IsTrue(result);
        }
コード例 #3
0
        public void Verifier_Should_VerifyCard_IfCardHasAtLeastOneSignatureFromWhitelist()
        {
            //STC-10
            var rawSignedModel = faker.PredefinedRawSignedModel(null, true, true, false);
            var signer         = new ModelSigner(new VirgilCardCrypto());
            var crypto         = new VirgilCrypto();
            var keyPair        = crypto.GenerateKeys();

            signer.Sign(rawSignedModel, new SignParams()
            {
                SignerPrivateKey = keyPair.PrivateKey,
                Signer           = "extra"
            });
            var creds = new VerifierCredentials()
            {
                PublicKeyBase64 = Bytes.ToString(crypto.ExportPublicKey(keyPair.PublicKey),
                                                 StringEncoding.BASE64), Signer = "extra"
            };
            var cardManager = faker.CardManager();
            var card        = cardManager.ImportCardFromJson(rawSignedModel.ExportAsJson());

            var verifier = new VirgilCardVerifier(new VirgilCardCrypto())
            {
                VerifySelfSignature   = true,
                VerifyVirgilSignature = true,
            };
            var vrigilPublicKeyBytes = new VirgilCrypto().ExportPublicKey(faker.PredefinedVirgilKeyPair().PublicKey);

            verifier.ChangeServiceCreds(
                Bytes.ToString(vrigilPublicKeyBytes, StringEncoding.BASE64)
                );

            var whiteList = new Whitelist()
            {
                VerifiersCredentials = new List <VerifierCredentials>()
                {
                    creds,
                    faker.VerifierCredentialAndSignature("extra").Item1
                }
            };

            verifier.Whitelists = new List <Whitelist>()
            {
                whiteList
            };
            Assert.IsTrue(verifier.VerifyCard(card));
        }
コード例 #4
0
        public void Validate_ShouldReturnSuccess_IfSpecifiedWhitelistSignersAreValid()
        {
            var crypto    = Substitute.For <ICardCrypto>();
            var validator = new VirgilCardVerifier(crypto);

            validator.VerifySelfSignature   = false;
            validator.VerifyVirgilSignature = false;
            var signer          = this.faker.VerifierCredentialAndSignature("exta");
            var signerInfo      = signer.Item1;
            var signerSignature = new CardSignature()
            {
                Snapshot  = signer.Item2.Snapshot,
                Signer    = signer.Item2.Signer,
                Signature = signer.Item2.Signature
            };
            //C signer.Item2;}
            var card = this.faker.Card(false, false, new List <CardSignature> {
                signerSignature
            });

            crypto.VerifySignature(
                signerSignature.Signature,
                card.ContentSnapshot,
                Arg.Any <IPublicKey>()).Returns(true);

            var whiteList = new Whitelist
            {
                VerifiersCredentials = new List <VerifierCredentials>()
                {
                    { signerInfo }
                }
            };

            validator.Whitelists = new List <Whitelist>()
            {
                whiteList
            };
            var result = validator.VerifyCard(card);

            Assert.IsTrue(result);
        }
コード例 #5
0
        public void Validate_ShouldNotValidateSelfAndVirgilSignatures_IfBothPropertiesDoesntSetToTrue()
        {
            var crypto    = Substitute.For <ICardCrypto>();
            var validator = new VirgilCardVerifier(crypto);

            validator.VerifySelfSignature   = false;
            validator.VerifyVirgilSignature = false;
            var card = this.faker.Card();

            crypto.VerifySignature(card.Signatures[0].Signature,
                                   card.ContentSnapshot,
                                   card.PublicKey).Returns(false);
            crypto.VerifySignature(
                card.Signatures[1].Signature,
                card.ContentSnapshot,
                Arg.Any <IPublicKey>()).Returns(false);

            var result = validator.VerifyCard(card);

            Assert.IsTrue(result);
        }
コード例 #6
0
        public void Verifier_ShouldNot_VerifyCard_IfWrongSelfSignature()
        {
            //STC-10
            var rawSignedModel = faker.PredefinedRawSignedModel(null, false, false, false);
            var signer         = new ModelSigner(new VirgilCardCrypto());
            var crypto         = new VirgilCrypto();
            var keyPair        = crypto.GenerateKeys();

            signer.Sign(rawSignedModel, new SignParams()
            {
                SignerPrivateKey = keyPair.PrivateKey,
                Signer           = "self"
            });
            var cardManager = faker.CardManager();
            var card        = cardManager.ImportCardFromJson(rawSignedModel.ExportAsJson());

            var verifier = new VirgilCardVerifier(new VirgilCardCrypto())
            {
                VerifySelfSignature   = true,
                VerifyVirgilSignature = false,
            };

            Assert.IsFalse(verifier.VerifyCard(card));
        }
コード例 #7
0
        public void Verifier_ShouldNot_VerifyCard_IfVerifierHasEmptyWhitelist()
        {
            //STC-10
            var rawSignedModel = faker.PredefinedRawSignedModel(null, true, true, false);
            var cardManager    = faker.CardManager();
            var card           = cardManager.ImportCardFromJson(rawSignedModel.ExportAsJson());

            var verifier = new VirgilCardVerifier(new VirgilCardCrypto())
            {
                VerifySelfSignature   = true,
                VerifyVirgilSignature = true,
                Whitelists            = new List <Whitelist>()
                {
                    new Whitelist()
                }
            };
            var vrigilPublicKeyBytes = new VirgilCrypto().ExportPublicKey(faker.PredefinedVirgilKeyPair().PublicKey);

            verifier.ChangeServiceCreds(
                Bytes.ToString(vrigilPublicKeyBytes, StringEncoding.BASE64)
                );

            Assert.IsFalse(verifier.VerifyCard(card));
        }