• Home
  • Raw
  • Download

Lines Matching +full:- +full:- +full:no +full:- +full:self +full:- +full:update

1 """HMAC (Keyed-Hashing for Message Authentication) module.
32 blocksize = 64 # 512-bit HMAC; can be changed in subclasses.
38 def __init__(self, key, msg=None, digestmod=''): argument
60 self._init_hmac(key, msg, digestmod)
62 self._init_old(key, msg, digestmod)
64 self._init_old(key, msg, digestmod)
66 def _init_hmac(self, key, msg, digestmod): argument
67 self._hmac = _hashopenssl.hmac_new(key, msg, digestmod=digestmod)
68 self.digest_size = self._hmac.digest_size
69 self.block_size = self._hmac.block_size
71 def _init_old(self, key, msg, digestmod): argument
79 self._hmac = None
80 self._outer = digest_cons()
81 self._inner = digest_cons()
82 self.digest_size = self._inner.digest_size
84 if hasattr(self._inner, 'block_size'):
85 blocksize = self._inner.block_size
88 'default of %d.' % (blocksize, self.blocksize),
90 blocksize = self.blocksize
92 _warnings.warn('No block_size attribute on given digest object; '
93 'Assuming %d.' % (self.blocksize),
95 blocksize = self.blocksize
100 # self.blocksize is the default blocksize. self.block_size is
102 self.block_size = blocksize
105 self._outer.update(key.translate(trans_5C))
106 self._inner.update(key.translate(trans_36))
108 self.update(msg)
111 def name(self): argument
112 if self._hmac:
113 return self._hmac.name
115 return f"hmac-{self._inner.name}"
117 def update(self, msg): member in HMAC
119 inst = self._hmac or self._inner
120 inst.update(msg)
122 def copy(self): argument
125 An update to this copy won't affect the original object.
128 other = self.__class__.__new__(self.__class__)
129 other.digest_size = self.digest_size
130 if self._hmac:
131 other._hmac = self._hmac.copy()
135 other._inner = self._inner.copy()
136 other._outer = self._outer.copy()
139 def _current(self): argument
144 if self._hmac:
145 return self._hmac
147 h = self._outer.copy()
148 h.update(self._inner.digest())
151 def digest(self): argument
158 h = self._current()
161 def hexdigest(self): argument
164 h = self._current()
180 You can now feed arbitrary bytes into the object using its update()
214 key = key + b'\x00' * (blocksize - len(key))
215 inner.update(key.translate(trans_36))
216 outer.update(key.translate(trans_5C))
217 inner.update(msg)
218 outer.update(inner.digest())