
    7؁jw!                        d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZ ddlmZ h dZddZddZdd	Zdd
ZddZddZedk(  r e e             y)zEIndependent offline verifier for the Task26 token-rotation successor.    )annotationsN)Path)cast>   candidate-seal.jsonhash-inventory.jsonverifier-input.jsoncandidate-manifest.jsonindependent-verification.jsonc                P    t        j                  | ddd      j                         S )NT),:)	sort_keys
separatorsensure_ascii)jsondumpsencode)values    o/home/cube/projects/richard/traning coach/.omo/senpi-task/task26-token-rotation-st_01a00b29/verify_candidate.py	canonicalr      s!    ::et
QUV]]__    c                H    t        j                  |       j                         S N)hashlibsha256	hexdigest)raws    r   r   r      s    >>#((**r   c                4    t        | j                               S r   )r   
read_bytes)paths    r   sha256_filer!   !   s    $//#$$r   c                    | j                         }| j                         s.t        j                  |j                        r|j
                  dk(  sJ t        j                  |j                        dk(  s
J d|         y )N      zunsealed file: )lstat
is_symlinkstatS_ISREGst_modest_nlinkS_IMODE)r    infos     r   assert_filer-   %   s_    ::<D T\\$,,%?DMMUVDVVV<<%.H/$0HH.r   c                x   | j                         } | j                         r@| j                         s0t        j                  | j                         j
                        dk(  sJ d | j                  d      D        D ]D  }|j                         s1t        j                  |j                         j
                        dk(  rDJ  | dz  }| dz  }| dz  }| dz  }||||fD ]  }t        |        t        t        t        t        f   t        j                  |j                                     }t        t        t        t        f   t        j                  |j                                     }t        t        t        t        f   t        j                  |j                                     }	t        t        t        t        f   t        j                  |j                                     }
t        |d         }t        |      }|d= t        t!        |            |k(  sJ t        t        t        t        f   |d	         }t        t!        |            |d
   k(  sJ |	dd||d
   t#        |      t#        |      |d   d   |d   d   |d   d	k(  sJ |
d|t#        |      t#        |      dk(  sJ t        t$        t        t        t        f      |d         }|D ch c]  }t        |d          }}| j                  d      D ch c]2  }|j'                         s|j)                  |       j+                         4 }}t,        |z  }|||z  k(  sJ t/        |||z  z               t1        |      t1        |      k(  sJ |D ]Q  }| t        |d         z  }t        |       |j                         j2                  |d   k(  rt#        |      |d   k(  rQJ  |d   t1        |      k(  sJ |d   t        t!        |            k(  sJ t#        |      |d   k(  sJ | dz  }t        t        t        t        f   |d         }|j                  d      D cg c]  }|j'                         s| }}t1        |      |d   k(  sJ t#        |dz        |d   k(  sJ t        j                  |dz  j                               }|d   |d   k(  sJ t#        |dz        |d   k(  sJ t5        j6                  t8        j:                  d t        |d!z        t        |      gd"t4        j<                  #       t        t        t        t        f   |d         }| t        |d         z  }t#        |      |d   k(  r |j                         j2                  |d   k(  sJ | d$z  }t?        j@                  |      5 }|jC                         }t1        |      |d%   k(  sJ t1        |D ch c]  }|jD                   c}      t1        |      k(  sJ |D ch c]  }|jF                   c}d&hk(  sJ |D ch c]*  }|jD                  jI                  d'      s|jD                  , }}|j                  d      D ch c]1  }|j'                         r|j)                  |      j+                         3 }}||k(  sJ |D ])  }|jK                  |      ||z  jM                         k(  r)J  d(|v sJ 	 d d d        t        t        t        t        f   t        j                  | d)z  j                                     } | d*   |d   k(  sJ t        t$        t        t        t        f      | d+         }!|!D cg c]  }|d   	 c}g d,k(  sJ |!D ]h  }| d-z  t        |d         z  }"t#        |"      |d.   k(  sJ |d/   |d0   d1k(  r8J | d2z  t        |d         z  }#t#        |#      |d/   k(  r	|d0   d3k(  rhJ  t        t        t        t        f   t        j                  | d4z  j                                     }$|$d5   d6k(  sJ |$d7   d8d9d:d;k(  sJ |$d<   d=d9d>k(  sJ |$d?   d@k(  sJ |$dA   d"u sJ |$dB   d"u sJ |$dC   d"u sJ |$dD   d9k(  sJ |$dE   d9k(  sJ | dFz  }%|%jO                         rSt        |%       t        j                  |%j                               }&|&d5   dGk(  r|&d   |k(  sJ |&dH   t#        |      k(  sJ dIdGd||d
   |d   t1        |      d9t1        |      |d%   |dJ   dKS c c}w c c}w c c}w c c}w c c}w c c}w c c}w # 1 sw Y   \xY wc c}w )LNi@  c              3  B   K   | ]  }|j                         s|  y wr   )is_dir).0r    s     r   	<genexpr>zverify.<locals>.<genexpr>.   s     Ht$++-ds   *r	   r   r   r   full_candidate_digestcore_materialcore_candidate_digestz'task26-token-rotation-successor-seal-v1PASS_SEALED_UNDEPLOYEDprofile_wheelr   predecessorfull_digestverifier_sha256)	schemastatusr4   r6   manifest_sha256inventory_sha256wheel_sha256predecessor_full_digestr;   z3task26-token-rotation-independent-verifier-input-v1)r<   r4   r>   seal_sha256entriesr    bytesentry_countentries_sha256r?   z historical/predecessor-candidate
file_countr>   z.artifacts/hermes_agent-0.17.0-py3-none-any.whlr@   z-Bzverify_candidate.pyT)checkstdoutzsnapshot/package-runtimemember_count)i  r#   r#   r   r   r   zcheckin_cli//checkin_cli/activation_token_rotation_policy.pyzbindings/source-delta.jsonrA   files)zcheckin_cli/customer_admin.pyrK   ztests/test_customer_admin.pyzsource-delta/afterafter_sha256before_sha256changeaddedzsource-delta/beforemodifiedzartifacts/quality-summary.jsonr=   %PASS_WITH_PREEXISTING_STATIC_BASELINEfocused_waiver_tests+   r   U   )passedfailed
deselectedfull_package_testsi  )rV   rW   reproducible_wheel_builds   wheel_builds_byte_identicalwheel_source_paritynew_module_ty_cleanruff_regression_deltaty_diagnostic_deltar
   PASSrB   z/task26-token-rotation-successor-verification-v1package_member_count)r<   r=   stater4   r6   r@   inventory_countunindexed_countpredecessor_file_countwheel_member_countsource_parity_count)(resolver0   r&   r'   r+   r)   rglobr-   r   dictstrobjectr   loads	read_textr   r   r!   listis_filerelative_toas_posixCONTROLSsortedlenst_size
subprocessrunsys
executableDEVNULLzipfileZipFileinfolistfilename	date_time
startswithreadr   exists)'root	directorymanifest_pathinventory_path	seal_pathverifier_input_pathr    manifest	inventorysealverifier_inputfullmanifest_corer5   rC   rowindexedactualallowed_controlsr9   predecessor_infopredecessor_filesprior_manifest
wheel_infowheelsource_rootarchiveinfositempackage_memberssource_membersmemberdeltarL   afterbeforequalityverification_pathreceipts'                                          r   verifyr   +   s	   <<>D;;=!2t||DIIKDWDW7X\a7aaaHtzz#H	'')dll9>>;K;S;S.TX].]]] I 44M11N,,I!66	;NOD PDf%tzz-2I2I2K'LMHT#v+&

>3K3K3M(NOIS&[!4::i.A.A.C#DED$sF{+TZZ8K8U8U8W-XYNx/01DNM-.)M*+t333c6k*H_,EFM)M*+x8O/PPPP;*!%!)*A!B&}5'7 1(;#+M#:=#I#$56
 
 
 
 G!%&}5"9-	    4S&[)*Ii,@AG+237Cs3v;7G3<@JJsO^ODt||~dt$--/OF^&(W///^'L\B\8]1^^/w<3w<'''c#f+&&Dyy{""c'l2{47HCPXM7YYY  ]#s7|333%&&71C*DDDD~&(3E*FFFF;;KDf-x/FG*5*;*;C*@S*@$DLLN*@S !%5l%CCCC{%>>?CSTeCffffZZ/H!H S S UVN126F}6UUUU{%UUVZjkyZzzzzNN	s;1F#FG[IYZ!! d3;'/)BCJ3z&)**EuH!55%**,:N:NR\]dRe:eee33K		7  "5zZ7777e4edDMMe45UCCC+0154516K5LLLL5:gUTdmm>V>VWe>f4==Ug $))#.
.||~ [)224. 	 

 .000%F<<'K&,@+L+L+NNNN &@OSSS 
   c6k"DJJ7S0S/^/^/`$abE*+/?/NNNNd3;'(%.9E#()5CCK5) .   
 ++c#f+.>>5!S%8888'x=G+++11CF4DDFv&#o*>>3x=T^C^^^  4V$djj$9Y2Y1d1d1f&ghG8 GGGG)*qXZ.[[[['(sa,HHHH./144401T999()T111()T111*+q000()Q...>>!%&**.88:;x F*w7N/OSW/WWW}%Y)???? D)!%!)*A!B"8,w<"%&7"8(8)*@A e 4^ T& 51g
 
 	& *sr   d=d!ddd-d*d
d*8dd* d 9d d*6d%3d*	d*d7d**d4c            	     j   t        j                         } | j                  dt               | j	                         }	 t        |j                        }t        t        j                  |d             y# t        $ r6}t        t        j                  dt        |      dd             Y d }~yd }~ww xY w)	Nr   )typeFAIL)r=   errorT)r   r#   r   )argparseArgumentParseradd_argumentr   
parse_argsr   r   	Exceptionprintr   r   rl   )parserargsresultexcs       r   mainr      s    $$&F
T*D		" 
$**Vt
,-	  djjFSX>$OPs   A3 3	B2<,B--B2__main__)r   rm   returnrD   )r   rD   r   rl   )r    r   r   rl   )r    r   r   None)r   r   r   zdict[str, object])r   int)__doc__
__future__r   r   r   r   r'   rx   rz   r}   pathlibr   typingr   rt   r   r   r!   r-   r   r   __name__
SystemExit r   r   <module>r      sk    K "      
   `+%IHV
 z
TV
 r   