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)); }
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); }
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)); }
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); }
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); }
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)); }
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)); }