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); }
/// <summary> /// Creates an <see cref="IAccessTokenValidator"/> instance backed by local public keys. /// </summary> /// <param name="publicKeyDataProvider">The <see cref="IPublicKeyDataProvider"/> for the local service</param> /// <returns>A new <see cref="IAccessTokenValidator"/></returns> public static IAccessTokenValidator CreateLocalValidator( IPublicKeyDataProvider publicKeyDataProvider ) { var publicKeyProvider = new LocalPublicKeyProvider( PublicKeyDataProviderFactory.CreateInternal(publicKeyDataProvider), new InMemoryPublicKeyCache() ); var result = new AccessTokenValidator(publicKeyProvider); return(result); }
internal static IPrivateKeyProvider Create( IPublicKeyDataProvider publicKeyDataProvider, TimeSpan keyLifetime, TimeSpan keyRotationPeriod, CngAlgorithm algorithm, IDateTimeProvider dateTimeProvider = null ) { if (keyLifetime < keyRotationPeriod) { throw new ArgumentException("Private key lifetime must exceed the rotation period", "keyLifetime"); } dateTimeProvider = dateTimeProvider ?? DateTimeProvider.Instance; ID2LSecurityTokenFactory d2lSecurityTokenFactory = new D2LSecurityTokenFactory( dateTimeProvider, keyLifetime ); IPrivateKeyProvider privateKeyProvider = new EcDsaPrivateKeyProvider( d2lSecurityTokenFactory, algorithm ); privateKeyProvider = new SavingPrivateKeyProvider( privateKeyProvider, PublicKeyDataProviderFactory.CreateInternal(publicKeyDataProvider) ); privateKeyProvider = new RotatingPrivateKeyProvider( privateKeyProvider, dateTimeProvider, keyRotationPeriod ); return(privateKeyProvider); }