public SavingPrivateKeyProvider(
			IPrivateKeyProvider inner,
			ISanePublicKeyDataProvider publicKeyDataProvider
		) {
			m_inner = inner;
			m_publicKeyDataProvider = publicKeyDataProvider;
		}
        public AuthServiceMock(KeyType keyType = KeyType.RSA)
        {
            m_server = HttpMockFactory.Create(out m_host);

#pragma warning disable 618
            m_publicKeyDataProvider = PublicKeyDataProviderFactory.CreateInternal(new InMemoryPublicKeyDataProvider());
#pragma warning restore 618

            TimeSpan keyLifetime       = TimeSpan.FromDays(365);
            TimeSpan keyRotationPeriod = TimeSpan.FromDays(182);

            switch (keyType)
            {
            case KeyType.ECDSA_P256:
            case KeyType.ECDSA_P384:
            case KeyType.ECDSA_P521: {
                CngAlgorithm curve;
                switch (keyType)
                {
                case KeyType.ECDSA_P521:
                    curve = CngAlgorithm.ECDsaP521;
                    break;

                case KeyType.ECDSA_P384:
                    curve = CngAlgorithm.ECDsaP384;
                    break;

                case KeyType.ECDSA_P256:
                default:
                    curve = CngAlgorithm.ECDsaP256;
                    break;
                }

                m_privateKeyProvider = EcDsaPrivateKeyProvider
                                       .Factory
                                       .Create(
                    m_publicKeyDataProvider,
                    keyLifetime,
                    keyRotationPeriod,
                    curve
                    );
                break;
            }

            case KeyType.RSA:
            default: {
                m_privateKeyProvider = RsaPrivateKeyProvider
                                       .Factory
                                       .Create(
                    m_publicKeyDataProvider,
                    keyLifetime,
                    keyRotationPeriod
                    );
                break;
            }
            }

            m_tokenSigner = new TokenSigner(m_privateKeyProvider);
        }
 public SavingPrivateKeyProvider(
     IPrivateKeyProvider inner,
     ISanePublicKeyDataProvider publicKeyDataProvider
     )
 {
     m_inner = inner;
     m_publicKeyDataProvider = publicKeyDataProvider;
 }
 public LocalPublicKeyProvider(
     ISanePublicKeyDataProvider publicKeyDataProvider,
     IInMemoryPublicKeyCache cache
     )
 {
     m_publicKeyDataProvider = publicKeyDataProvider ?? throw new ArgumentNullException(nameof(publicKeyDataProvider));
     m_cache = cache ?? throw new ArgumentNullException(nameof(cache));
 }
		public AuthServiceMock( KeyType keyType = KeyType.RSA ) {
			m_server = HttpMockFactory.Create( out m_host );

#pragma warning disable 618
			m_publicKeyDataProvider = PublicKeyDataProviderFactory.CreateInternal( new InMemoryPublicKeyDataProvider() );
#pragma warning restore 618

			TimeSpan keyLifetime = TimeSpan.FromDays( 365 );
			TimeSpan keyRotationPeriod = TimeSpan.FromDays( 182 );

			switch( keyType ) {
				case KeyType.ECDSA_P256:
				case KeyType.ECDSA_P384:
				case KeyType.ECDSA_P521: {
						CngAlgorithm curve;
						switch( keyType ) {
							case KeyType.ECDSA_P521:
								curve = CngAlgorithm.ECDsaP521;
								break;
							case KeyType.ECDSA_P384:
								curve = CngAlgorithm.ECDsaP384;
								break;
							case KeyType.ECDSA_P256:
							default:
								curve = CngAlgorithm.ECDsaP256;
								break;
						}

						m_privateKeyProvider = EcDsaPrivateKeyProvider
							.Factory
							.Create(
								m_publicKeyDataProvider,
								keyLifetime,
								keyRotationPeriod,
								curve
							);
						break;
					}
				case KeyType.RSA:
				default: {
						m_privateKeyProvider = RsaPrivateKeyProvider
							.Factory
							.Create(
								m_publicKeyDataProvider,
								keyLifetime,
								keyRotationPeriod
							);
						break;
					}
			}

			m_tokenSigner = new TokenSigner( m_privateKeyProvider );
		}
		public LocalPublicKeyProvider(
			ISanePublicKeyDataProvider publicKeyDataProvider,
			IInMemoryPublicKeyCache cache
		) {
			if( publicKeyDataProvider == null ) {
				throw new ArgumentNullException( "publicKeyDataProvider" );
			}

			if( cache == null ) {
				throw new ArgumentNullException( "cache" );
			}

			m_publicKeyDataProvider = publicKeyDataProvider;
			m_cache = cache;
		}
        internal static ISanePublicKeyDataProvider CreateInternal(
            IPublicKeyDataProvider publicKeyDataProvider
            )
        {
            if (publicKeyDataProvider == null)
            {
                throw new ArgumentNullException("publicKeyDataProvider");
            }

            ISanePublicKeyDataProvider saneProvider = publicKeyDataProvider as ISanePublicKeyDataProvider;

            if (saneProvider == null)
            {
                saneProvider = new ExpiringPublicKeyDataProvider(publicKeyDataProvider, DateTimeProvider.Instance);
            }

            return(saneProvider);
        }
        public LocalPublicKeyProvider(
            ISanePublicKeyDataProvider publicKeyDataProvider,
            IInMemoryPublicKeyCache cache
            )
        {
            if (publicKeyDataProvider == null)
            {
                throw new ArgumentNullException("publicKeyDataProvider");
            }

            if (cache == null)
            {
                throw new ArgumentNullException("cache");
            }

            m_publicKeyDataProvider = publicKeyDataProvider;
            m_cache = cache;
        }