private IDkimRecordParser Create(IRsaPublicKeyEvaluator rsaPublicKeyEvaluator = null) { return(new ServiceCollection() .AddTransient <IDkimRecordParser, DkimRecordParser>() .AddTransient <IDkimSelectorRecordsParser, DkimSelectorRecordsParser>() .AddTransient <IDkimEvaluatorConfig, DkimEvaluatorConfig>() .AddTransient(_ => rsaPublicKeyEvaluator ?? new RsaPublicKeyEvaluator()) .AddTransient <ITagParser, TagParser>() .AddTransient <ITagParserStrategy, PublicKeyTypeParserStrategy>() .AddTransient <ITagParserStrategy, FlagsParserStrategy>() .AddTransient <ITagParserStrategy, HashAlgorithmParserStrategy>() .AddTransient <ITagParserStrategy, NotesParserStrategy>() .AddTransient <ITagParserStrategy, PublicKeyDataParserStrategy>() .AddTransient <ITagParserStrategy, VersionParserStrategy>() .AddTransient <ITagParserStrategy, ServiceTypeParserStrategy>() .AddTransient <IEvaluator <DkimRecord>, Evaluator <DkimRecord> >() .AddTransient <IRule <DkimRecord>, SelectorShouldBeWellConfigured>() .AddTransient <IRule <DkimRecord>, TagShouldHavePublicKeyData>() .AddTransient <IImplicitProvider <Tag>, ImplicitProvider <Tag> >() .AddTransient <IImplicitProviderStrategy <Tag>, FlagTypeImplicitProvider>() .AddTransient <IImplicitProviderStrategy <Tag>, HashAlgorithImplicitProvider>() .AddTransient <IImplicitProviderStrategy <Tag>, NotesImplicitProvider>() .AddTransient <IImplicitProviderStrategy <Tag>, PublicKeyTypeImplicitProvider>() .AddTransient <IImplicitProviderStrategy <Tag>, ServiceTypeImplicitProvider>() .AddTransient <IImplicitProviderStrategy <Tag>, FlagTypeImplicitProvider>() .BuildServiceProvider() .GetRequiredService <IDkimRecordParser>()); }
public void ParseWithRsa1985KeyDkimRecord() { IRsaPublicKeyEvaluator rsaPublicKeyEvaluator = A.Fake <IRsaPublicKeyEvaluator>(); int anOut; A.CallTo(() => rsaPublicKeyEvaluator.TryGetKeyLengthSize(A <string> ._, out anOut)).Returns(true).AssignsOutAndRefParameters(1985); IDkimRecordParser parser = Create(rsaPublicKeyEvaluator); string record = "v=DKIM1;" + "k=rsa;" + "n=hello world;" + "s=*;" + "h=sha256;" + "t=y;" + "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvtzV5FCafF4GWCsuV0qhyDpV8pz7QrFxF8JABDl+kewpUIhTRujuKQbeAIuPzbiTe0djy1tPIyzEASChfPpSg7C9RrJlKlluyYN1H4ORJQsnAuwAy8+Eur+Zjo1o6xItxsac9RUvl4eCm8ZSkhtdu1HMRV0+rq2S1+E0cqwyO7xw2alhLRmu96Dgy2j4dz/8teguAUEaNGQECcd7h7DM" + "8vo8IZgyJHJdaMQHX7zhuRUP8fjsrD5YUfOsm/kzSJfSKEk9cXwKk8p5QoiHG+W4/tc/nyl+uqz9fUF/K0d9qCvHE31mu3to2GCakABPU9XpczhIwYkGB6ASdd53PKhXJwIDAQAB"; DkimRecord dkimRecord = parser.Parse(new DnsRecord(record, new List <string>())); Assert.That(dkimRecord.Errors.Count, Is.EqualTo(1)); Assert.That(dkimRecord.Errors.First().ErrorType, Is.EqualTo(EvaluationErrorType.Warning)); Assert.That(dkimRecord.Errors.First().Id, Is.EqualTo(Guid.Parse("d16be8d5-8ed6-4dd0-a8aa-c8f1380a8d3c"))); }
public void SetUp() { _rsaPublicKeyEvaluator = A.Fake <IRsaPublicKeyEvaluator>(); _selectorShouldBeWellConfigured = new SelectorShouldBeWellConfigured(_rsaPublicKeyEvaluator); }
public SelectorShouldBeWellConfigured(IRsaPublicKeyEvaluator publicKeyEvaluator) { _publicKeyEvaluator = publicKeyEvaluator; }