# `certbot.achallenges`

Client annotated ACME challenges.

Please use names such as `achall` to distinguish from variables “of type” `acme.challenges.Challenge` (denoted by `chall`) and `ChallengeBody` (denoted by `challb`):

    from acme import challenges
    from acme import messages
    from certbot import achallenges

    chall = challenges.DNS(token='foo')
    challb = messages.ChallengeBody(chall=chall)
    achall = achallenges.DNS(chall=challb, domain='example.com')

Note, that all annotated challenges act as a proxy objects:

    achall.token == challb.token

class `certbot.achallenges.``AnnotatedChallenge`(**kwargs)

  Bases: `josepy.util.ImmutableMap`

  Client annotated challenge.

  Wraps around server provided challenge and annotates with data useful for the client.

  Variables: | challb – Wrapped `ChallengeBody`.

class `certbot.achallenges.``KeyAuthorizationAnnotatedChallenge`(**kwargs)

  Bases: `certbot.achallenges.AnnotatedChallenge`

  Client annotated `KeyAuthorizationChallenge` challenge.

  `response_and_validation`(*args, **kwargs)

    Generate response and validation.

class `certbot.achallenges.``DNS`(**kwargs)

  Bases: `certbot.achallenges.AnnotatedChallenge`

  Client annotated “dns” ACME challenge.

  `acme_type`

    alias of `DNS`