+
    f7i  c                   s    ^ RI HtHtHtHtHt ^ RIHt ^RIH	t	 ^ RI
t
RtRtRt ! R R	]	P                  4      tR
RRRRR/3R ltR t ! R R]4      tR# )i    )	bytesjoinstrjointobytestostrsafeEval)sstruct)DefaultTableNzJ
	> # big endian
	ulVersion:      L
	usNumSigs:      H
	usFlag:         H
zw
	> # big endian
	ulFormat:       L
	ulLength:       L # length includes DSIG_SignatureBlock header
	ulOffset:       L
zo
	> # big endian
	usReserved1:    H
	usReserved2:    H
	cbSignature:    l # length of following raw pkcs7 data
c                   s<   a  ] tR t^)t o RtR tR tR tR tRt	V t
R# )table_D_S_I_G_zDigital Signature table

The ``DSIG`` table contains cryptographic signatures for the font.

See also https://learn.microsoft.com/en-us/typography/opentype/spec/dsig
c                s   \         P                  ! \        W4      w  r4. ;V n        p\	        V P
                  4       F:  p\         P                  ! \        V\        4       4      w  rtVP                  V4       K<  	  V FA  p\         P                  ! \        WP                  R  V4      w  r4VR VP                   Vn        KC  	  R # N)r   Zunpack2DSIG_HeaderFormatsignatureRecordsZrange	usNumSigsDSIG_SignatureFormatSignatureRecordappendDSIG_SignatureBlockFormatulOffsetcbSignaturepkcs7)selfdatattFontZdummyZnewDataZsigrecsZnsigrecs   &&&     F/usr/lib64/python3.14/site-packages/fontTools/ttLib/tables/D_S_I_G_.py	decompileZtable_D_S_I_G_.decompile1   s     ):DG +-,t~~&A%oo$g/@OF NN6" ' F$__)40A+BFNE ##7V%7%78FL     c                s   \         P                  ! \        V 4      pV.p\        V4      V P                  \         P
                  ! \        4      ,          ,           p. pV P                   F  p\        VP                  4      Vn	        \         P                  ! \        V4      VP                  ,           pVP                  V4       \        V4      Vn        WFn        VP                  \         P                  ! \        V4      4       WFP                  ,          pK  	  V^,          '       d   VP                  R4       \        W5,           4      # )i   s    )r   Zpackr	   Zlenr   Zcalcsizer   r
   r   r   r   r   ZulLengthr   r    )r   r   ZpackedZheadersZoffsetr   r   s   &&     r   compileZtable_D_S_I_G_.compileJ   s    /6(Vt~~0@0@AU0VVV++F!$V\\!2F\\";VDv||SFKK!&kFO$ONN7<<(<fEFoo%F , A::KK((r   c                sD   VP                  R 4       VP                  4        VP                  RV P                  V P                  RV P
                  ,          R7       V P                   F$  pVP                  4        VP                  W4       K&  	  VP                  4        R# )zDnote that the Digital Signature will be invalid after recompilation!tableHeaderz0x%X)versionnumSigsflagN)ZcommentnewlineZ	simpletag	ulVersionr   usFlagr
   toXML)r   Z	xmlWriterr   r   s   &&& r   r"   Ztable_D_S_I_G_.toXML_   s    R	
 	NNNN$++%	 	 	
 ++FLL+ , 	r   c                s0   VR 8X  dO   . V n         \        VR,          4      V n        \        VR,          4      V n        \        VR,          4      V n        R# VR8X  d:   \        4       pVP                  WW44       V P                   P                  V4       R# R# )r   r   r   r   Nr   )r
   r   r    r   r!   r   fromXMLr   )r   nameattrscontentr   r   s   &&&&& r   r#   Ztable_D_S_I_G_.fromXMLo   s    = $&D!%eI&67DN%eI&67DN"5=1DK$$$&FNN48!!((0 %r   )r
   r    r!   r   N)__name__
__module____qualname____firstlineno__Z__doc__r   r   r"   r#   __static_attributes____classdictcell__Z__classdict__   @r   r   r   )   s#     92)* 
1 
1r   r   z-----BEGIN PKCS7-----Tz-----END PKCS7----- c                 sJ    VP                  V P                  4       4      '       * # r   )getZstrip)ZlZspams   &&r   <lambda>r1   |   s     xx	r   c                 s    \         P                  ! V 4      p. pV'       d>   VP                  \        VR ,          4      4       VP                  R4       VR,          pKE  \	        V4      # ):NL   NZ
:r2   NN)base64	b64encoder   r   r   )ZbZsZitemss   &  r   r4   r4      sM    AE
U1S6]#TcF5>r   c                   s2   a  ] tR t^t o R tR tR tRtV tR# )r   c                sT    R V P                   P                  : RV P                  : R2# )Z<z: Z>)	__class__r'   Z__dict__)r   s   &r   __repr__ZSignatureRecord.__repr__   s    !^^44dmmDDr   c                s^   VP                  V P                  P                  V P                  R 7       VP	                  4        VP                  R4       VP                  \        V P                  4      4       VP                  R4       VP                  V P                  P                  4       R# ))formatz-----BEGIN PKCS7-----
z-----END PKCS7-----
N)	Zbegintagr5   r'   ulFormatr   Zwrite_noindentr4   r   Zendtag)r   Zwriterr   s   &&&r   r"   ZSignatureRecord.toXML   su    //F78i

3456dnn--.r   c           
     s*   \        VR ,          4      V n        \        VP                  RR4      4      V n        \        VP                  RR4      4      V n        \
        P                  ! \        \        \        \        V4      4      4      4      V n        R# )r7   Z	reserved1Z0Z	reserved2N)r   r8   r0   usReserved1usReserved2r3   Z	b64decoder   r   Zfilterpem_spamr   )r   r$   r%   r&   r   s   &&&&&r   r#   ZSignatureRecord.fromXML   se     x1#EIIk3$?@#EIIk3$?@%%ggfXw6O.P&QR
r   )r   r8   r9   r:   N)	r'   r(   r)   r*   r6   r"   r#   r+   r,   r-   r.   r   r   r      s     E/S Sr   r   )ZfontTools.misc.textToolsr    r   r   r   r   ZfontTools.miscr   r/   r   r3   r	   r   r   r   r;   r4   Zobjectr   ) r   r   <module>r<      sq    Q Q "     (P1\.. P1h T4 Sf Sr   