public NonceValidator(
  PrivateHashEncoder privateHashEncoder, 
  Base64Converter base64Converter,
  NonceTimeStampParser nonceTimeStampParser, 
  int staleTimeOutInSeconds)
 {
     this.privateHashEncoder = privateHashEncoder;
      this.base64Converter = base64Converter;
      this.nonceTimeStampParser = nonceTimeStampParser;
      this.staleTimeOutInSeconds = staleTimeOutInSeconds;
 }
        public void ShouldIndicateThatNonceIsStaleWithOldTimeStamp()
        {
            var md5Encoder = new MD5Encoder();
             var base64Converter = new Base64Converter();
             var privateHashEncoder = new PrivateHashEncoder(TestResources.PrivateKey, md5Encoder);

             var nonceTimeStampParser = new NonceTimeStampParser();
             var nonceValidator = new NonceValidator(privateHashEncoder, base64Converter, nonceTimeStampParser, 600);
             bool result = nonceValidator.IsStale(TestResources.GeneratedValidNonce);
             Assert.That(result, Is.True);
        }
        public void ShouldPositivelyValidateNonceWhenNonceIsGeneratedUsingPrivateKey()
        {
            var md5Encoder = new MD5Encoder();
             var base64Converter = new Base64Converter();
             var privateHashEncoder = new PrivateHashEncoder(TestResources.PrivateKey, md5Encoder);

             var nonceTimeStampParser = new NonceTimeStampParser();
             var nonceValidator = new NonceValidator(privateHashEncoder, base64Converter, nonceTimeStampParser, 600);
             bool result = nonceValidator.Validate(TestResources.GeneratedValidNonce, TestResources.IpAddress);
             Assert.That(result, Is.True);
        }
        public void ShouldIndicateThatNonceIsNotStale()
        {
            var md5Encoder = new MD5Encoder();
             var base64Converter = new Base64Converter();
             var privateHashEncoder = new PrivateHashEncoder(TestResources.PrivateKey, md5Encoder);

             var nonceTimeStampParser = new NonceTimeStampParser();
             var nonceValidator = new NonceValidator(privateHashEncoder, base64Converter, nonceTimeStampParser, 600);
             var nonceGenerator = new NonceGenerator(privateHashEncoder, base64Converter);

             bool result = nonceValidator.IsStale(nonceGenerator.Generate(TestResources.IpAddress));
             Assert.That(result, Is.False);
        }
        public void ShouldEncodeDateTimeAndPrivateKey()
        {
            var repository = new MockRepository();
             var md5Encoder = repository.StrictMock<MD5Encoder>();
             using (repository.Record())
             {
            string expectedStringToEncode = TestResources.NonceTimeStampAsString + ":" + TestResources.IpAddress + ":" + TestResources.PrivateKey;
            md5Encoder.Expect(encoder => encoder.Encode(expectedStringToEncode)).Return(string.Empty);
             }

             using (repository.Playback())
             {
            var privateHashEncoder = new PrivateHashEncoder(TestResources.PrivateKey, md5Encoder);
            privateHashEncoder.Encode(TestResources.NonceTimeStampAsString, TestResources.IpAddress);
             }
        }
 public static RequestInterceptor Create(string realm, string privateKey, MembershipProvider membershipProvider)
 {
     var base64Converter = new Base64Converter();
      var privateHashEncoder = new PrivateHashEncoder(privateKey, new MD5Encoder());
      var generator = new NonceGenerator(privateHashEncoder, base64Converter);
      var digestHeaderGenerator = new DigestHeaderFactory(generator, realm);
      var digestValidator = new DigestValidator(new DigestEncoders(new MD5Encoder()));
      var digestHeaderExtractor = new DigestHeaderExtractor(new AuthorizationStringExtractor(), new DigestHeaderParser(new HeaderKeyValueSplitter('=')), new MethodExtractor());
      var nonceValidator = new NonceValidator(privateHashEncoder, base64Converter, new NonceTimeStampParser(), 600);
      var digestAuthenticationManager = new DigestAuthenticationManager(
     new ResponseMessageFactory(),
     new IPAddressExtractor(),
     membershipProvider,
     digestHeaderExtractor,
     new ServiceSecurityContextFactory(new AuthorizationPolicyFactory()),
     nonceValidator,
     digestValidator,
     digestHeaderGenerator);
      return new DigestAuthenticationInterceptor(digestAuthenticationManager);
 }
 public void ShouldReturnNullWhenDateTimeArgumentToEncodeIsNull()
 {
     var privateHashEncoder = new PrivateHashEncoder(TestResources.PrivateKey, null);
      var result = privateHashEncoder.Encode(null, TestResources.IpAddress);
      Assert.That(result, Is.Null);
 }
 public NonceGenerator(PrivateHashEncoder privateHashEncoder, Base64Converter base64Converter)
 {
     this.privateHashEncoder = privateHashEncoder;
      this.base64Converter = base64Converter;
 }