+\hp%HdZddlmZddlZddlZddlmZddlmZddlm Z m Z m Z m Z ddl mZddlmZmZmZmZmZdd lmZegd Z Gd d Zed gdZ edgdZ eddgZ ddZ ddZddZddZ ddZ!y)z6Constants and types shared across multiple auth types.) annotationsN)standard_b64encode) namedtuple)AnyDictMappingOptional)Binary)_OIDCAzureCallback_OIDCGCPCallback_OIDCK8SCallback_OIDCProperties_OIDCTestCallback)ConfigurationError)GSSAPI MONGODB-OIDC MONGODB-X509 MONGODB-AWSPLAINz SCRAM-SHA-1z SCRAM-SHA-256DEFAULTc@eZdZdZedZddZddZddZd dZ y) _Cachedatacd|_yNrselfs V/root/niggaflix-v3/playground/venv/lib/python3.12/site-packages/pymongo/auth_shared.py__init__z_Cache.__init__7s  c0t|trytS)NT isinstancerNotImplementedrothers r__eq__z _Cache.__eq__:s eV $r!c0t|trytS)NFr#r&s r__ne__z _Cache.__ne__@s eV $r!c|jSr) _hash_valrs r__hash__z_Cache.__hash__Es ~~r!N)returnNone)r'objectr.bool)r.int) __name__ __module__ __qualname__ __slots__hashr,r r(r*r-r!rrr2s$IXI  r!rMongoCredential) mechanismsourceusernamepasswordmechanism_propertiescacheGSSAPIProperties service_namecanonicalize_host_name service_realm service_host_AWSPropertiesaws_session_tokencHgd}|dvr|dvS||vrtd|d||S)N)FTnoneforwardforwardAndReverse)truefalseTF)rLTzCANONICALIZE_HOST_NAME 'z' not in valid options: ) ValueError)value valid_namess r _validate_canonicalize_host_namerQZsDGK ..&& K3E7:RS^R_`aa Lr!c (|dvr|t|d|dk(r||dk7r td|jdi}|jdd }|jd d}|jd d } t| } |jd } t || | |} t |d||| dS|dk(r/| td||dk7r tdt |d|dddS|dk(r`| | td||dk7r td|jdi}|jd} t | } t |d||| dS|dk(rx|jdi}|jd}|jd}|jd}|jdd}gd}|jd|}|jdd | tdd }| d!}t||s|r| t||r|rd"}t|||d#k(r| d$}t|t}nk|d%k(rd}|s td&t|}nK|d'k(rd}|s td(t|}n+|d)k(r d}t}ntd*|t|t||||||xsd+}t |d|||tS|d,k(r|xs|xsd}t ||||ddS|xs|xsd-}| td.t ||||dtS)/z8Build and return a mechanism specific credentials tuple.)rrrNz requires a usernamerz $externalz:authentication source must be $external or None for GSSAPIauthmechanismproperties SERVICE_NAMEmongodb SERVICE_HOSTCANONICALIZE_HOST_NAMErM SERVICE_REALMrArz+Passwords are not supported by MONGODB-X509z@authentication source must be $external or None for MONGODB-X509rz;username without a password is not supported by MONGODB-AWSz?authentication source must be $external or None for MONGODB-AWSAWS_SESSION_TOKEN)rGr OIDC_CALLBACKOIDC_HUMAN_CALLBACK ENVIRONMENTTOKEN_RESOURCE)z *.mongodb.netz*.mongodb-dev.netz*.mongodb-qa.netz*.mongodbgov.net localhostz 127.0.0.1z::1 ALLOWED_HOSTSz4ALLOWED_HOSTS is only valid with OIDC_HUMAN_CALLBACKzVauthentication with MONGODB-OIDC requires providing either a callback or a environmentz)password is not supported by MONGODB-OIDCz5cannot set both OIDC_CALLBACK and OIDC_HUMAN_CALLBACKtestz;test environment for MONGODB-OIDC does not support usernameazurezTAzure environment for MONGODB-OIDC requires a TOKEN_RESOURCE auth mechanism propertygcpzOGCP provider for MONGODB-OIDC requires a TOKEN_RESOURCE auth mechanism propertyk8sz+unrecognized ENVIRONMENT for MONGODB-OIDC: )callbackhuman_callback environment allowed_hoststoken_resourcer<radminzA password is required) rrNgetrQr@r9rFrr r r rr)mechr;userpasswdextradatabase propertiesrBrE canonicalizerDpropsrG aws_propsrerfenvironridefault_allowedrhmsg oidc_propssource_databases r_build_credentials_tuplerzds BBt| D6)=!>?? x  &K"7YZ ZYY8"= !~~ni@ !~~nd; !~~&>H 7 E "7  %#/'%  t[$tLL    $%RS S  &K"7_` `t[$dDII    $%bc c  &K"7$Q YY8"= &NN+>?"5FG t[$ 4PP  YY8"= >>/2#(=>../#(8"= #H >>/4 0 <AW$%[\ \ d   =C$S) ) ~"(--NM(--  & #WC,S11,.G#%,n.n=E!%,i,N;E!+-(+VW^V_)`aa$S) )$)')ZR  t[$ FHUU  ;H; t_dFD$OO 7H7 >$%=> >t_dFD&(SSr!c djt||Dcgc]\}}t||z gc}}Scc}}w)zXOR two byte strings together.r!)joinzipbytes)firsecxys r_xorrs3 88C >1UAE7^> ??>s< cDtd|jdDS)z-Split a scram response into key, value pairs.c3K|]E}tjtjttf|j ddGyw)=N)typingcastTupler~split).0items r z(_parse_scram_response..s;   FLL. 40CDsA A ,)dictr)responses r_parse_scram_responsers% NN4( r!c|j}|jdjddjdd}tt j d}d|zdz|z}d |t d |zd d d id }|||fS)Nzutf-8rs=3Drs=2C sn=s,r=rsn,,skipEmptyExchangeT) saslStartr:payload autoAuthorizeoptions)r<encodereplacerosurandomr ) credentialsr:r<rmnonce first_barecmds r_authenticate_scram_startrs##H ??7 # + +D& 9 A A$ OD rzz"~ .E&.J&:-.'.  C *c !!r!)rO str | boolr.r)rlstrr; Optional[str]rmrrnrrozMapping[str, Any]rprr.r9)rr~rr~r.r~)rr~r.zDict[bytes, bytes])rr9r:rr.z4tuple[bytes, bytes, typing.MutableMapping[str, Any]])"__doc__ __future__rrrbase64r collectionsrrrrr bsonr pymongo.auth_oidc_sharedr r r rrpymongo.errorsr frozenset MECHANISMSrr9r@rFrQrzrrrr8r!rrs =" %"//.    :.T?c6,/B.CD:{T {T {T {T  {T  {T  {T{T|@ " "-0"9"r!