public AuthorizeChallenge GenerateAuthorizeChallengeAnswer(AuthorizationState authzState, string type)
{
AssertInit();
AssertRegistration();
var c = authzState.Challenges.FirstOrDefault(x => x.Type == type);
if (c == null)
throw new ArgumentOutOfRangeException(nameof(type),
"no challenge found matching requested type");
switch (type)
{
case AcmeProtocol.CHALLENGE_TYPE_DNS:
c.OldChallengeAnswer = c.GenerateDnsChallengeAnswer(authzState.Identifier, Signer);
c.ChallengeAnswerMessage = new AnswerDnsChallengeRequest
{
KeyAuthorization = c.OldChallengeAnswer.Value,
};
break;
case AcmeProtocol.CHALLENGE_TYPE_HTTP:
c.OldChallengeAnswer = c.GenerateHttpChallengeAnswer(authzState.Identifier, Signer);
c.ChallengeAnswerMessage = new AnswerHttpChallengeRequest
{
KeyAuthorization = c.OldChallengeAnswer.Value,
};
break;
case AcmeProtocol.CHALLENGE_TYPE_SNI:
case AcmeProtocol.CHALLENGE_TYPE_PRIORKEY:
throw new ArgumentException("unimplemented or unsupported challenge type", nameof(type));
default:
throw new ArgumentException("unknown challenge type", nameof(type));
}
return c;
}