
    <[jY                        d dl mZ ddlmZ ddlmZmZmZ ddlm	Z	 ddl
mZmZmZmZmZmZ 	  eddd	           G d
 de	                      Z eddd           G d de                      Z G d de          ZdS )    )	dataclass   )DefaultClientDataCollector)%AuthenticationExtensionsPaymentInputsPaymentCredentialInstrumentPaymentCurrencyAmount)_JsonDataObject)AuthenticatorAttachmentCollectedClientData"PublicKeyCredentialCreationOptions!PublicKeyCredentialRequestOptionsResidentKeyRequirementUserVerificationRequirementFT)eqfrozenkw_onlyc                   `    e Zd ZU eed<   eed<   dZedz  ed<   dZedz  ed<   eed<   eed<   dS )$CollectedClientAdditionalPaymentDatarp_id
top_originN
payee_namepayee_origintotal
instrument)	__name__
__module____qualname__str__annotations__r   r   r   r        U/home/thesage/.hermes/hermes-agent/venv/lib/python3.11/site-packages/fido2/payment.pyr   r   5   sd         JJJOOO!Jd
!!!#L#*###    ++++++r!   r   )initr   r   c                   j     e Zd ZU eed<   def fdZe	 ddedeez  dede	d	e
f
 fd
            Z xZS )CollectedClientPaymentDatapayment
serializedc                     t                                          |           t                              | j        d                   }t
                              | d|           d S )Nr&   )super__init__r   	from_dict_dataobject__setattr__)selfr'   r&   	__class__s      r"   r*   z#CollectedClientPaymentData.__init__C   sS    $$$6@@IAVWW4G44444r!   Ftype	challengeorigincross_originreturnc                      t                      j        d||||t          |                    d                    d|S )Nr&   )r1   r2   r3   r4   r&   r    )r)   createdictpop)clsr1   r2   r3   r4   kwargsr0   s         r"   r7   z!CollectedClientPaymentData.createI   sV     uww~ 
%I..//
 
 
 
 	
r!   )F)r   r   r   r   r   bytesr*   classmethodr   boolr   r7   __classcell__r0   s   @r"   r%   r%   ?   s         111155 5 5 5 5 5 5  #
 

 3;
 	

 
 

 
 
 
 
 [
 
 
 
 
r!   r%   c                   "     e Zd ZdZ fdZ xZS )PaymentClientDataCollectora  ClientDataCollector for the WebAuthn "payment" extension.

    This class can be used together with the CTAP2 "thirdPartyPayment" extension to
    enable third-party payment confirmation. It collects the necessary client data and
    validates the options provided by the client.
    c                    |                      || j                  }|j        pi }t          j        |                    d                    }|r|j        rt          |t                    rl|j	        }|rS|j
        t          j        t          j        fvs4|j        t          j        t          j        fvs|j        t&          j        k    rt)          d          npt          |t*                    r[t,                              d| j        |j        t3          |j        |j        |j        |j        |j        |j                            |fS |                      || j                   tC                      "                    |          S )Nr&   z%Invalid options for payment extensionzpayment.get)r   r   r   r   r   r   )r1   r3   r2   r&   )#	get_rp_id_origin
extensionsr   r+   get
is_payment
isinstancer   authenticator_selectionauthenticator_attachmentr
   PLATFORMCROSS_PLATFORMresident_keyr   REQUIRED	PREFERREDuser_verificationr   
ValueErrorr   r%   r7   r2   r   r   r   r   r   r   r   verify_rp_idr)   collect_client_data)r/   optionsr   inputsdataselr0   s         r"   rT   z.PaymentClientDataCollector.collect_client_datad   s   w55#)r4>vzz)?T?TUU $	DO $	'#EFF #5N3/8/>  '.7.8 
 ,0K0TTT$%LMMM U G%FGG  /55*#|")"3 D"&*'+'+)-):"&*'+! ! !	 6    $ 	%...ww**7333r!   )r   r   r   __doc__rT   r?   r@   s   @r"   rB   rB   \   sB         -4 -4 -4 -4 -4 -4 -4 -4 -4r!   rB   N)dataclassesr   clientr   ctap2.extensionsr   r   r   utilsr	   webauthnr
   r   r   r   r   r   r   r%   rB   r    r!   r"   <module>r_      s  8 " ! ! ! ! ! . . . . . .         
 # " " " " "                eD$///, , , , ,? , , 0/, dD111
 
 
 
 
!4 
 
 21
854 54 54 54 54!; 54 54 54 54 54r!   