M/e "dZddlZddlmZddlmZddlmZddlZddlm Z ddlm Z ddl m Z dd l mZejj!ej"d Zej$d Ze j(d Ze j*d Ze j*d ZeegZde j0de j2de j4fdZeee j8Zeee j8Zeee j8ZeegZ e jBeedZ"e jBeedZ#e jBeedZ$e"e#gZ%de j2de&dee j0dee j2de jNf dZ(y)zACME utilities for testing.N)Any)Dict)Iterable) challenges)messages) auth_handler)utilzrsa512_key.pems+evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ+PCt92wr+oA)tokens 17817c66b60ce2e4012dfad92657527as cafecafecafecafecafecafe0feedbacchallstatusreturnc||jdz|d}|tjk(r/|jdtjj itj di|S)z$Return ChallengeBody from Challenge._uri)r urir validated)typr STATUS_VALIDupdatedatetimenow ChallengeBody)r r kwargss 9/usr/lib/python3/dist-packages/certbot/tests/acme_util.pychall_to_challbrsayy6!F &&& {H$5$5$9$9$;<=  ! ! +F ++z example.comz example.orgzesimerkki.example.org authz_statusdomainchallsstatusesctdt||D}tjtj||d}|tj k(rH|j |tjjtjdzdn|j d|itjdtjd i| S) zGenerate an authorization resource. :param authz_status: Status object :type authz_status: :class:`acme.messages.Status` :param list challs: Challenge objects :param list statuses: status of each challenge object c3:K|]\}}t||yw)N)r).0r r s r zgen_authzr..Bs# E6 v&s)rvalue) identifierr)days)r expiresr z%https://trusted.ca/new-authz-resource)rbodyr) tuplezipr IdentifierIDENTIFIER_FQDNrrrr timedeltaAuthorizationResource Authorization)rrrr challbs authz_kwargss r gen_authzrr48s 2G ))((8$L x,,,"((,,.1C1C1LL   l    ) ) 3  # # 3l 3 r))__doc__rtypingrrrjosepyjoseacmerrcertbot._internalr certbot.testsr JWKload load_vectorload_rsa_private_keyKEYHTTP01DNS01DNS01_2 CHALLENGES ChallengeStatusrrSTATUS_PENDINGHTTP01_PDNS01_P DNS01_P_2 CHALLENGES_Pchallb_to_achallHTTP01_ADNS01_A DNS01_A_2 ACHALLENGESstrr0r4rrrrRs!* hhmm$D$$%567d 01    8 : BC *  !D Ee_  ,:// , ,XMcMc , 68#:#: ; %!8!8 9 GX%<%< = '"  )< ( (3 F ', ' 'm D )L ) ))S:Q R !  X__ c 8JL`L`Ca !(//2 7?7U7U r