"""
Auto-generated Python stub file from hashlib.__md5.py
Module: hashlib.__md5
"""


import string
import t, c

MD5_BLOCK_LEN:  t.CDefine = 64    # 分组块大小
MD5_DIGEST_LEN: t.CDefine = 16    # 摘要输出长度

def md5_F(x: t.CUInt32T, y: t.CUInt32T, z: t.CUInt32T) -> t.CUInt32T: pass

def md5_G(x: t.CUInt32T, y: t.CUInt32T, z: t.CUInt32T) -> t.CUInt32T: pass

def md5_H(x: t.CUInt32T, y: t.CUInt32T, z: t.CUInt32T) -> t.CUInt32T: pass

def md5_I(x: t.CUInt32T, y: t.CUInt32T, z: t.CUInt32T) -> t.CUInt32T: pass

def md5_rotl(x: t.CUInt32T, n: t.CInt) -> t.CUInt32T: pass


md5_T: t.CExtern | t.CArray[t.CUInt32T, 64]
md5_S: t.CExtern | t.CArray[t.CInt, 64]

@t.Object
class md5:
    state: t.CArray[t.CUInt32T, 4]
    count: t.CUInt64T
    buf: t.CArray[t.CUInt8T, MD5_BLOCK_LEN]
    def __init__(self: md5) -> t.CInt: pass
    def transform(self: md5, block: t.CUInt8T | t.CPtr) -> t.CInt: pass
    def update(self: md5, s: str) -> t.CInt: pass
    def final(self: md5, out: t.CArray[t.CUInt8T, MD5_DIGEST_LEN]) -> t.CInt: pass