Skip to content

Commit

Permalink
Merge pull request #10 from adafruit/pylint-update
Browse files Browse the repository at this point in the history
Ran black, updated to pylint 2.x
  • Loading branch information
kattni authored Mar 13, 2020
2 parents ad95ab1 + d1b0c7f commit 91db76f
Show file tree
Hide file tree
Showing 9 changed files with 808 additions and 410 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
source actions-ci/install.sh
- name: Pip install pylint, black, & Sphinx
run: |
pip install --force-reinstall pylint==1.9.2 black==19.10b0 Sphinx sphinx-rtd-theme
pip install pylint black==19.10b0 Sphinx sphinx-rtd-theme
- name: Library version
run: git describe --dirty --always --tags
- name: PyLint
Expand Down
2 changes: 2 additions & 0 deletions adafruit_hashlib/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
# FIPS secure hash algorithms supported by this library
ALGOS_AVAIL = ["sha1", "md5", "sha224", "sha256", "sha384", "sha512"]


def new(algo, data=b""):
"""Creates a new hashlib object.
:param str algo: Name of the desired algorithm.
Expand All @@ -64,6 +65,7 @@ def new(algo, data=b""):
except KeyError:
raise ValueError(algo)


@property
def algorithms_available():
"""Returns a list containing the names of the hash
Expand Down
8 changes: 5 additions & 3 deletions adafruit_hashlib/_md5.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

# The MIT License (MIT)
#
# Brent Rubell for Adafruit Industries, 2019
Expand Down Expand Up @@ -27,7 +26,10 @@
* Author(s): Brent Rubell
"""
# pylint: disable=too-few-public-methods, invalid-name
class md5():
class md5:
"""RSA MD5 Algorithm class."""

def __init__(self, s=None):
raise NotImplementedError("MD5 digests not currently implemented in this module.")
raise NotImplementedError(
"MD5 digests not currently implemented in this module."
)
49 changes: 27 additions & 22 deletions adafruit_hashlib/_sha1.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,15 @@
K2 = const(0x8F1BBCDC)
K3 = const(0xCA62C1D6)


def _getbuf(data):
"""Converts data into ascii,
returns bytes of data.
:param str bytes bytearray data: Data to convert.
"""
if isinstance(data, str):
return data.encode('ascii')
return data.encode("ascii")
return bytes(data)


Expand All @@ -63,7 +64,8 @@ def _left_rotate(n, b):
:param int b: Desired rotation amount, in bits.
"""
return ((n << b) | (n >> (32 - b))) & 0xffffffff
return ((n << b) | (n >> (32 - b))) & 0xFFFFFFFF


# pylint: disable=invalid-name, too-many-arguments
def _hash_computation(chunk, h0, h1, h2, h3, h4):
Expand All @@ -79,7 +81,7 @@ def _hash_computation(chunk, h0, h1, h2, h3, h4):

# Break chunk into sixteen 4-byte big-endian words w[i]
for i in range(16):
w[i] = struct.unpack(b'>I', chunk[i * 4:i * 4 + 4])[0]
w[i] = struct.unpack(b">I", chunk[i * 4 : i * 4 + 4])[0]

# Extend the sixteen 4-byte words into eighty 4-byte words
for i in range(16, 80):
Expand Down Expand Up @@ -107,42 +109,45 @@ def _hash_computation(chunk, h0, h1, h2, h3, h4):
f = b ^ c ^ d
k = K3

a, b, c, d, e = ((_left_rotate(a, 5) + f + e + k + w[i]) & 0xffffffff,
a, _left_rotate(b, 30), c, d)
a, b, c, d, e = (
(_left_rotate(a, 5) + f + e + k + w[i]) & 0xFFFFFFFF,
a,
_left_rotate(b, 30),
c,
d,
)

# Add to chunk's hash result so far
h0 = (h0 + a) & 0xffffffff
h1 = (h1 + b) & 0xffffffff
h2 = (h2 + c) & 0xffffffff
h3 = (h3 + d) & 0xffffffff
h4 = (h4 + e) & 0xffffffff
h0 = (h0 + a) & 0xFFFFFFFF
h1 = (h1 + b) & 0xFFFFFFFF
h2 = (h2 + c) & 0xFFFFFFFF
h3 = (h3 + d) & 0xFFFFFFFF
h4 = (h4 + e) & 0xFFFFFFFF

return h0, h1, h2, h3, h4


# pylint: disable=too-few-public-methods, invalid-name
class sha1():
class sha1:
"""SHA-1 Hash Object
"""

digest_size = SHA_DIGESTSIZE
block_size = SHA_BLOCKSIZE
name = "sha1"

def __init__(self, data=None):
"""Construct a SHA-1 hash object.
:param bytes data: Optional data to process
"""
# Initial Digest Variables
self._h = (0x67452301,
0xEFCDAB89,
0x98BADCFE,
0x10325476,
0xC3D2E1F0)
self._h = (0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0)

# bytes object with 0 <= len < 64 used to store the end of the message
# if the message length is not congruent to 64
self._unprocessed = b''
self._unprocessed = b""

# Length in bytes of all data that has been processed so far
self._msg_byte_len = 0
Expand All @@ -159,15 +164,15 @@ def _create_digest(self):
message_len = self._msg_byte_len + len(message)

# add trailing '1' bit (+ 0's padding) to string [FIPS 5.1.1]
message += b'\x80'
message += b"\x80"

# append 0 <= k < 512 bits '0', so that the resulting message length (in bytes)
# is congruent to 56 (mod 64)
message += b'\x00' * ((56 - (message_len + 1) % 64) % 64)
message += b"\x00" * ((56 - (message_len + 1) % 64) % 64)

# append ml, the original message length, as a 64-bit big-endian integer.
message_bit_length = message_len * 8
message += struct.pack(b'>Q', message_bit_length)
message += struct.pack(b">Q", message_bit_length)

# Process the final chunk
h = _hash_computation(message[:64], *self._h)
Expand Down Expand Up @@ -205,11 +210,11 @@ def digest(self):
method so far.
"""
return b''.join(struct.pack(b'>I', h) for h in self._create_digest())
return b"".join(struct.pack(b">I", h) for h in self._create_digest())

def hexdigest(self):
"""Like digest() except the digest is returned as a string object of
double length, containing only hexadecimal digits.
"""
return ''.join(['%.2x' % i for i in self.digest()])
return "".join(["%.2x" % i for i in self.digest()])
Loading

0 comments on commit 91db76f

Please sign in to comment.