Format: application/octet-stream
⬇ Download File (1.6 KB)
   1  import sys
   2  from _typeshed import ReadableBuffer
   3  from types import ModuleType
   4  from typing import Any, AnyStr, Callable, Optional, Union, overload
   5  
   6  # TODO more precise type for object of hashlib
   7  _Hash = Any
   8  _DigestMod = Union[str, Callable[[], _Hash], ModuleType]
   9  
  10  digest_size: None
  11  
  12  if sys.version_info >= (3, 8):
  13      # In reality digestmod has a default value, but the function always throws an error
  14      # if the argument is not given, so we pretend it is a required argument.
  15      @overload
  16      def new(key: bytes, msg: Optional[ReadableBuffer], digestmod: _DigestMod) -> HMAC: ...
  17      @overload
  18      def new(key: bytes, *, digestmod: _DigestMod) -> HMAC: ...
  19  
  20  elif sys.version_info >= (3, 4):
  21      def new(key: bytes, msg: Optional[ReadableBuffer] = ..., digestmod: Optional[_DigestMod] = ...) -> HMAC: ...
  22  
  23  else:
  24      def new(key: bytes, msg: Optional[ReadableBuffer] = ..., digestmod: Optional[_DigestMod] = ...) -> HMAC: ...
  25  
  26  class HMAC:
  27      if sys.version_info >= (3,):
  28          digest_size: int
  29      if sys.version_info >= (3, 4):
  30          block_size: int
  31          name: str
  32      def __init__(self, key: bytes, msg: Optional[ReadableBuffer] = ..., digestmod: _DigestMod = ...) -> None: ...
  33      def update(self, msg: ReadableBuffer) -> None: ...
  34      def digest(self) -> bytes: ...
  35      def hexdigest(self) -> str: ...
  36      def copy(self) -> HMAC: ...
  37  
  38  @overload
  39  def compare_digest(__a: ReadableBuffer, __b: ReadableBuffer) -> bool: ...
  40  @overload
  41  def compare_digest(__a: AnyStr, __b: AnyStr) -> bool: ...
  42  
  43  if sys.version_info >= (3, 7):
  44      def digest(key: bytes, msg: ReadableBuffer, digest: str) -> bytes: ...
  45