+
    kHàj  ã                  óJ  € R t ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIHtH	t	 ^R,          R",
          R,
          t
RtR#tRtR$t]	]]]3,          ,          tR R	 ltR
 R ltR R ltR R ltR R lt]3R R lltR R ltR R ltRR/R R lltR R ltRRRRRR/R  R! lltR# )%zVDependency-free Nostr signing (secp256k1 / BIP-340) for Buzz WebSocket authentication.)ÚannotationsN)ÚAnyÚOptionalé   iÑ  l   AAl 3z’~»i«9nWº~ÿÿÿÿÿÿÿÿ Ú qpzry9x8gf2tvdw0s3jn54khce6mua7lc               ó    € V ^8„  d   QhRRRR/# )é   Úvaluesú	list[int]ÚreturnÚint© )Úformats   "ÚF/home/ubuntu/.hermes/hermes-agent/plugins/platforms/buzz/nostr_auth.pyÚ__annotate__r      s   € ÷ ñ ˜Ið ¨#ñ ó    c                óÊ   € ^pV  FZ  pV^,	          pVR,          ^,          V,          p\        \        4       F$  w  rEW4,	          ^,          '       g   K  W,          pK&  	  K\  	  V# )é   iÿÿÿ)Ú	enumerateÚ_BECH32_GENERATORS)r	   ÚchecksumÚvalueÚtopÚindexÚ	generators   &     r   Ú_bech32_polymodr      s]   € Ø€HÛˆØ˜"�nˆØ 	Õ)¨aÕ/°5Õ8ˆÜ )Ô*<Ö =ÑˆEØ• ×!Ö!ØÕ%’ó !>ñ ð €Or   c               ó    € V ^8„  d   QhRRRR/# )r   ÚhrpÚstrr   r
   r   )r   s   "r   r   r   #   s   € ÷ Uñ U˜Cð U Iñ Ur   c                ó¸   € V  Uu. uF  p\        V4      ^,	          NK  	  up^ .,           V  Uu. uF  p\        V4      ^,          NK  	  up,           # u upi u upi )é   )Úord)r   Úchars   & r   Ú_bech32_hrp_expandr#   #   sO   € Ù'*Ó+¡s˜tŒC�‹I˜�NˆN¡sÑ+¨q¨cÕ1ÑPSÓ4TÑPSÈ´S¸³YÀ·^°^ÑPSÑ4TÕTÐTùÒ+ùÒ4Ts
   …A®Ac               ó    € V ^8„  d   QhRRRR/# )r   r   r   r   Úbytesr   )r   s   "r   r   r   '   s   € ÷ ñ ˜ð  ñ r   c                ó˜  € V P                  4       V 8w  d!   V P                  4       V 8w  d   \        R 4      hV P                  4       pVP                  R4      pV^8  g   V^,           \	        V4      8”  d   \        R4      hVRV pVR8w  d   \        R4      h W^,           R  Uu. uF  p\
        P                  V4      NK  	  pp\        \        T4      T,           4      ^8w  d   \        R4      h^ ;rx\        4       p	TRR
  FL  p
T^,          T
,          pT^,          pT^8¼  g   K%  T^,          pT	P                  Yx,	          ^ÿ,          4       K2  	  T'       d)   T^T,          ^,
          ,          '       d   \        R4      h\	        T	4      ^ 8w  d   \        R	4      h\        T	4      # u upi   \         d   p\        R4      ThRp?ii ; i)z$nsec cannot mix upper- and lowercaseÚ1zinvalid nsec encodingNÚnsecz$private key must use the nsec prefixzinvalid character in nseczinvalid nsec checksumznon-zero nsec paddingz!nsec must encode exactly 32 bytesiúÿÿÿ)ÚlowerÚupperÚ
ValueErrorÚrfindÚlenÚBECH32_CHARSETr   r   r#   Ú	bytearrayÚappendr%   )r   Ú
normalizedÚ	separatorr   r"   ÚdataÚexcÚaccumulatorÚbitsÚdecodedÚvalue5s   &          r   Ú_decode_nsecr9   '   sž  € Ø‡{�{ƒ}˜Ô %§+¡+£-°5Ô"8ÜÐ?Ó@Ð@Ø—‘“€JØ× Ñ  Ó%€IØ�1„}˜	 A�¬¨J«Ô7ÜÐ0Ó1Ð1Ø
�Z�iÐ
 €CØ
ˆf„}ÜÐ?Ó@Ð@ð?Ø7AÈaÅ-À/Ñ7RÓSÑ7R¨t”×$Ñ$ TÖ*Ñ7RˆÐSô Ô)¨#Ó.°Õ5Ó6¸!Ô;ÜÐ0Ó1Ð1ØÐ€KÜ‹k€GØ�s˜“)ˆØ" aÕ'¨6Õ1ˆØ��	ˆØ�aŽiØ�A�IˆDØ�N‰N˜KÕ/°4Õ7Ö8ñ ÷ �  d¥¨a¥×0Ô0ÜÐ0Ó1Ð1Ü
ˆ7ƒ|�rÔÜÐ<Ó=Ð=Ü�‹>Ðùò# TøÜô ?ÜÐ4Ó5¸3Ð>ûð?ús*   ÂF- Â%F(ÃF- Æ(F- Æ-G	Æ8GÇG	c               ó    € V ^8„  d   QhRRRR/# )r   r   r   r   r   r   )r   s   "r   r   r   F   s   € ÷ ñ ˜cð  cñ r   c                ó”  € V P                  4       pVP                  4       P                  R 4      '       d   \        V4      pM1 \        P                  V4      p\        T4      ^ 8w  d   \        R4      h\        P                  VR4      p^Tu;8:  d   \        8  g   M \        R4      hV#   \         d   p\        R4      ThRp?ii ; i)Únsec1z-private key must be 64 hex characters or nsecNzprivate key must be 32 bytesÚbigz*private key is outside the secp256k1 range)Ústripr)   Ú
startswithr9   r%   Úfromhexr+   r-   r   Ú
from_bytesÚCURVE_ORDER)r   ÚrawÚ	key_bytesr4   Úkeys   &    r   Údecode_private_keyrF   F   s­   € Ø
�+‰+‹-€CØ
‡y�yƒ{×Ñ˜g×&Ò&Ü  Ó%‰	ð	WÜŸ™ cÓ*ˆIô ˆy‹>˜RÔÜÐ;Ó<Ð<Ü
�.‰.˜ EÓ
*€CØ�Ö!”kÖ!ÜÐEÓFÐFØ€Jøô ô 	WÜÐLÓMÐSVÐVûð	Wús   ÁB+ Â+CÂ6CÃCc               ó$   € V ^8„  d   QhRRRRRR/# )r   ÚleftÚPointÚrightr   r   )r   s   "r   r   r   W   s!   € ÷ 6ñ 6�Uð 6 5ð 6¨Uñ 6r   c                óâ  € V e   Vf	   V f   V# T # V w  r#Vw  rEW$8X  dT   W5,           \         ,          ^ 8X  d   R # ^V,          V,          \        ^V,          \         ^,
          \         4      ,          pM/WS,
          \        WB,
          \         ^,
          \         4      ,          pV\         ,          pWf,          V,
          V,
          \         ,          pWvW',
          ,          V,
          \         ,          3# ©N)ÚFIELD_ORDERÚpow)rH   rJ   Úx1Úy1Úx2Úy2ÚslopeÚx3s   &&      r   Ú
_point_addrU   W   s·   € Ø‚|�u’}ØšˆuÐ.¨$Ð.Ø�F€BØ�F€BØ	„xØ�G”{Õ" aÔ'ÙØ�R•˜"•¤ A¨¥F¬K¸!­O¼[Ó IÕI‰à•œC ¥¬°q­¼+ÓFÕFˆØ	Œ[Õ€EØ
�-˜"Õ
˜rÕ
!¤[Õ	0€BØ˜�Õ! BÕ&¬+Õ5Ð5Ð5r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úscalarr   ÚpointrI   r   r   )r   s   "r   r   r   g   s!   € ÷ ñ ˜Cð ¨ð ¸eñ r   c                ó~   € R pTpV '       d1   V ^,          '       d   \        W#4      p\        W34      pV ^,          p K8  V# rL   )rU   )rW   rX   ÚresultÚaddends   &&  r   Ú_point_multiplyr\   g   s:   € Ø€FØ€Fß
Ø�A�:Œ:Ü Ó/ˆFÜ˜FÓ+ˆØ�1�ŠØ€Mr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Útagr   Úpayloadr%   r   r   )r   s   "r   r   r   r   s&   € ÷ Bñ B�cð B Eð B¨eñ Br   c                óÈ   € \         P                  ! V P                  4       4      P                  4       p\         P                  ! W",           V,           4      P                  4       # rL   )ÚhashlibÚsha256ÚencodeÚdigest)r^   r_   Útag_hashs   && r   Ú_tagged_hashrf   r   s?   € Ü�~Š~˜cŸj™j›lÓ+×2Ñ2Ó4€HÜ�>Š>˜(Õ-°Õ7Ó8×?Ñ?ÓAÐAr   c               ó    € V ^8„  d   QhRRRR/# )r   Úprivate_keyr   r   r   )r   s   "r   r   r   w   s   € ÷ .ñ . ð .¨ñ .r   c                ó–   € \        \        V 4      4      pVf   \        R4      hV^ ,          P                  ^ R4      P	                  4       # )Núinvalid private keyr=   )r\   rF   r+   Úto_bytesÚhex)rh   rX   s   & r   Úpublic_key_hexrm   w   sC   € ÜÔ.¨{Ó;Ó<€EØ‚}ÜÐ.Ó/Ð/Ø��8×Ñ˜R Ó'×+Ñ+Ó-Ð-r   Úauxiliary_randomnessc               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Úmessager%   rh   r   rn   úOptional[bytes]r   r   )r   s   "r   r   r   ~   s/   € ÷ hñ h˜%ð h¨cð hÈOð hÐglñ hr   c               óê  € \        V 4      ^ 8w  d   \        R4      h\        V4      p\        V4      pVf   \        R4      hV^ ,          P	                  ^ R4      pV^,          ^,          ^ 8X  d   TM\
        V,
          pVe   TM\        P                  ! ^ 4      p\        V4      ^ 8w  d   \        R4      hV\        P                  \        RV4      R4      ,          P	                  ^ R4      p\        P                  \        RW…,           V ,           4      R4      \
        ,          p	V	^ 8X  d   \        R4      h\        V	4      p
V
f   \        R4      hV
^ ,          P	                  ^ R4      pV
^,          ^,          ^ 8X  d   T	M\
        V	,
          p\        P                  \        R	Wµ,           V ,           4      R4      \
        ,          pW¼WÖ,          ,           \
        ,          P	                  ^ R4      ,           # )
é    zBIP-340 signs a 32-byte messagerj   r=   z%auxiliary randomness must be 32 byteszBIP0340/auxzBIP0340/noncezBIP-340 produced a zero noncez'BIP-340 produced an invalid nonce pointzBIP0340/challenge)r-   r+   rF   r\   rk   rB   ÚsecretsÚtoken_bytesr   rA   rf   ÚRuntimeError)rp   rh   rn   ÚsecretÚpublic_pointÚpublic_xÚadjusted_secretÚauxÚmaskedÚnonceÚnonce_pointÚnonce_xÚadjusted_nonceÚ	challenges   &&$           r   Úschnorr_signr‚   ~   s¢  € Ü
ˆ7ƒ|�rÔÜÐ:Ó;Ð;Ü Ó,€FÜ" 6Ó*€LØÒÜÐ.Ó/Ð/Ø˜A�×'Ñ'¨¨EÓ2€HØ ,¨Q¥°!Õ 3°qÔ 8‘f¼kÈFÕ>R€OØ"6Ò"BÑ
Ì×H[ÒH[Ð\^ÓH_€CÜ
ˆ3ƒx�2„~ÜÐ@ÓAÐAØ¤§¡¬|¸MÈ3Ó/OÐQVÓ WÕW×aÑaÐbdÐfkÓl€FÜ�N‰Nœ<¨¸Õ9JÈWÕ9TÓUÐW\Ó]Ô`kÕk€EØ�„zÜÐ:Ó;Ð;Ü! %Ó(€KØÒÜÐDÓEÐEØ˜!�n×%Ñ% b¨%Ó0€GØ)¨!�n¨qÕ0°AÔ5‘U¼;ÈÕ;N€NÜ—‘œ|Ð,?ÀÕASÐV]ÕA]Ó^Ð`eÓfÔitÕt€IØ¨	Õ(CÕCÄ{ÕR×\Ñ\Ð]_ÐafÓgÕgÐgr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rC   r   Úlabelr   r   z	list[str]r   )r   s   "r   r   r   —   s!   € ÷ 	ñ 	˜ð 	 Cð 	¨Iñ 	r   c                ó°  € \        V \        4      '       d    \        P                  ! V 4      p \        V \        4      '       dY   \        V 4      ^8w  gI   V ^ ,          R8w  g;   \        ;QJ d    R V  4       F  '       d   K   RM	  RM! R V  4       4      '       g   \        V R24      hV #   \        P                   d   p\        T R24      ThRp?ii ; i)zUValidate a NIP-OA owner-attestation tag (JSON text or list) -> ``["auth", a, b, c]``.z is not valid JSONNÚauthc              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5irL   )Ú
isinstancer   )Ú.0Úps   & r   Ú	<genexpr>Ú!parse_auth_tag.<locals>.<genexpr>ž   s    é € ÐPqÑmpÐhiÔQ[Ð\]Ô_b×QcÐQcÓmpùs   ‚FTz must be a four-string auth tag)	rˆ   r   ÚjsonÚloadsÚJSONDecodeErrorr+   Úlistr-   Úall)rC   r„   r4   s   && r   Úparse_auth_tagr’   —   s¯   € ä�#”s×Òð	DÜ—*’*˜S“/ˆCô �cœ4× Ò ¤C¨£H°¤M°S¸µV¸vÔ5EÏSËSÑPqÑmpÓPqÏSÏSÊSÑPqÑmpÓPq×MqÒMqÜ˜E˜7Ð"AÐBÓCÐCØ€Jøô	 ×#Ñ#ô 	DÜ ˜wÐ&8Ð9Ó:ÀÐCûð	Dús   ˜B, Â,CÃCÃCÚauth_tag_jsonÚ Ú
created_atc               ó4   € V ^8„  d   QhRRRRRRRRRRRR	R
R/# )r   rh   r   r�   Ú	relay_urlr“   r•   zOptional[int]rn   rq   r   zdict[str, Any]r   )r   s   "r   r   r   £   sF   € ÷ ñ ØðØ$'ðØ47ðØHKðàðà<Kðð ñr   c                óò  € R V.RV..pVP                  4       '       d   VP                  \        VR4      4       \        V 4      pVf   \	        \
        P
                  ! 4       4      M
\	        V4      p\        P                  ! ^ WxRVR.RRR7      P                  4       p	\        P                  ! V	4      P                  4       p
RV
P                  4       RVR	VR
RRVRRR\        W VR7      P                  4       /# )Úrelayr�   ÚBUZZ_AUTH_TAGiâV  r”   F)Ú
separatorsÚensure_asciiÚidÚpubkeyr•   ÚkindÚtagsÚcontentÚsig)rn   )Ú,Ú:)r>   r0   r’   rm   r   Útimer�   Údumpsrc   ra   rb   rd   rl   r‚   )rh   r�   r—   r“   r•   rn   r    rž   Ú	timestampÚ
serializedÚevent_ids   $$$$$$     r   Úbuild_auth_eventrª   £   sâ   € ð & yÐ1°KÀÐ3KÐL€DØ×Ñ×ÒØ�‰”N =°/ÓBÔCÜ˜KÓ(€FØ$.Ò$6””D—I’I“KÔ ¼CÀ
»O€IÜ—’˜Q °5¸$ÀÐCÐPZÐinÔo×vÑvÓx€JÜ�~Š~˜jÓ)×0Ñ0Ó2€Hàˆh�l‰l‹n˜h¨°¸iÈÐQVÐX^Ð`dÐfoÐqsØŒ|˜HÐH\Ô]×aÑaÓcðð r   l        )l   ˜ð-l”O•Å9Ë6þM:WZEuw>?3¾yl   ¸T!v?B>b™AªP)Úý("8pß'ÚUŒx¨I;m:H)i²Wj;imŽP&iú¡iÝ3B=i³b*)Ú__doc__Ú
__future__r   ra   r�   rt   r¥   Útypingr   r   rM   rB   Ú	GENERATORr.   r   Útupler   rI   r   r#   r9   rF   rU   r\   rf   rm   r‚   r’   rª   r   r   r   Ú<module>r°      s¾   ðÙ \å "ã Û Û Û ß  ð ��f�u�n˜sÕ"€ØP€ð€	ð 4€ØQÐ à��s˜C�x•Õ!€õõUõõ>õ"6ð  1:÷ õBõ
.ðhÐ^b÷ hõ2	ðØNPðà $ðàNR÷ñ r   