+>@@  '@%&'' ' ' 'rct|j}t|j|}|rt d|zt|S)zReturn the **binary** (non-printable) digest of the message that has been hashed so far. :return: The hash digest, computed over the data processed so far. Binary form. :rtype: byte string r)r digest_sizer SHA1_digestrrrr)rbfrrs rdigestzSHA1Hash.digestaso#4#344**4;??+<+<+.00  '@%&'' 'c"""rcddd|DS)zReturn the **printable** digest of the message that has been hashed so far. :return: The hash digest, computed over the data processed so far. Hexadecimal encoded. :rtype: string c2g|]}dt|zS)z%02x)bord).0xs r z&SHA1Hash.hexdigest..zs#@@@Qa(@@@r)joinr')rs r hexdigestzSHA1Hash.hexdigestrs-ww@@$++--@@@AAArct}t|j|j}|rt d|z|S)a4Return a copy ("clone") of the hash object. The copy will have the same internal state as the original hash object. This can be used to efficiently compute the digests of strings that share a common initial substring. :return: A hash object of the same type zError %d while copying SHA1)r r SHA1_copyrrr)rcloners rcopyz SHA1Hash.copy|sc (():):).)9)9););==  E:VCDD D rc t|S)z!Create a fresh SHA-1 hash object.)r )rrs rnewz SHA1Hash.news~~rN) __name__ __module__ __qualname____doc__r$ block_sizeoidrrr'r0r4r6rrr r 1s   KJ C     ' ' '###"BBB$rr NcDt|S)aCreate a new hash object. :parameter data: Optional. The very first chunk of the message to hash. It is equivalent to an early call to :meth:`SHA1Hash.update`. :type data: byte string/byte array/memoryview :Return: A :class:`SHA1Hash` hash object )r r6)rs rr6r6s ::>>$  rc ft|tksJ|dksJtt}t|j|j||t|}|rtd|zt|S)z/Compute the expensive inner loop in PBKDF-HMAC.rz(Error %d with PBKDF2-HMAC assis for SHA1) r"r$rrSHA1_pbkdf2_hmac_assistrrr rr)innerouter first_digest iterationsr&rs r_pbkdf2_hmac_assistrFs |   + + + + >>>> { + +C  2 2L$$&&L$$&& Z(( **FNCfLMMM #  rr7)Crypto.Util.py3compatCrypto.Util._raw_apirrrrrr r robjectr r6r$r<rFr>rrrJs*$###////////////////// *)*= (`````v```F     "  r