ACMESharp.AcmeClient.HandleChallenge C# (CSharp) Method

HandleChallenge() public method

public HandleChallenge ( AuthorizationState authzState, string challengeType, string handlerName, object>.IReadOnlyDictionary handlerParams, bool cleanUp = false ) : AuthorizeChallenge
authzState AuthorizationState
challengeType string
handlerName string
handlerParams object>.IReadOnlyDictionary
cleanUp bool
return AuthorizeChallenge
        public AuthorizeChallenge HandleChallenge(AuthorizationState authzState,
                string challengeType,
                string handlerName, IReadOnlyDictionary<string, object> handlerParams,
                bool cleanUp = false)
        {
            var provider = ChallengeHandlerExtManager.GetProvider(handlerName);
            if (provider == null)
                throw new InvalidOperationException("unable to resolve Challenge Handler provider")
                        .With("handlerName", handlerName);

            var authzChallenge = authzState.Challenges.FirstOrDefault(x => x.Type == challengeType);
            if (authzChallenge == null)
                throw new ArgumentOutOfRangeException(nameof(challengeType),
                        "no challenge found matching requested type")
                        .With("challengeType", challengeType);

            if (!provider.IsSupported(authzChallenge.Challenge))
                throw new InvalidOperationException("Challenge Handler does not support given Challenge")
                        .With("handlerName", handlerName)
                        .With("challengeType", authzChallenge.Challenge.Type);

            var handler = provider.GetHandler(authzChallenge.Challenge, handlerParams);
            if (handler == null)
                throw new InvalidOperationException("no Challenge Handler provided for given Challenge")
                        .With("handlerName", handlerName)
                        .With("challengeType", authzChallenge.Challenge.Type);

            authzChallenge.HandlerName = handlerName;

            if (cleanUp)
            {
                handler.CleanUp(authzChallenge.Challenge);
                authzChallenge.HandlerCleanUpDate = DateTime.Now;
            }
            else
            {
                handler.Handle(authzChallenge.Challenge);
                authzChallenge.HandlerHandleDate = DateTime.Now;
            }

            handler.Dispose();

            return authzChallenge;
        }