Skip to content

Commit

Permalink
release: v0.6.11
Browse files Browse the repository at this point in the history
* Forces text encoding on checksum generation

Co-Authored-by: Lauren-D <[email protected]>
  • Loading branch information
lauren-d committed Aug 17, 2021
1 parent bdae6f1 commit 066f9da
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 12 deletions.
4 changes: 4 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@

Changes
=======
Version 0.6.11 (released 2021-08-17)
**Bug fix:**
* Forces text encoding on checksum generation

Version 0.6.10 (released 2021-08-09)
**Minor change:**
* Improves server logging.
Expand Down
6 changes: 3 additions & 3 deletions invenio_sip2/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,16 +104,16 @@ def __str__(self):
new_message += str(fixed_field)

for idx, variable_field in enumerate(self.variable_fields):
if idx != 0:
new_message += '|'
new_message += str(variable_field)
new_message += '|'

if acs_system.is_error_detection_enabled:
if self.sequence_number:
new_message += f'AY{self.sequence_number}'
new_message += 'AZ'
if not self.checksum:
self.checksum = generate_checksum(new_message)
new_message += f'AZ{self.checksum}'
new_message += self.checksum
new_message += self.line_terminator
self.message_text = new_message
return self.message_text
Expand Down
9 changes: 3 additions & 6 deletions invenio_sip2/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,12 +121,9 @@ def generate_checksum(message):
:param message: SIP2 string message
:returns checksum string
"""
# Calculate CRC
checksum = 0
for n in range(0, len(message)):
checksum = checksum + ord(message[n:n + 1])
crc = format((-checksum & 0xFFFF), 'X')
return crc
# Calculate checksum
checksum = sum([b for b in message.encode(acs_system.text_encoding)])
return format((-checksum & 0xFFFF), 'X')


def verify_checksum(message_str):
Expand Down
2 changes: 1 addition & 1 deletion invenio_sip2/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,4 @@

from __future__ import absolute_import, print_function

__version__ = '0.6.10'
__version__ = '0.6.11'
4 changes: 2 additions & 2 deletions tests/test_actions.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def test_sip2_login_failed(app, dummy_client, failed_login_message):
Message(request=failed_login_message),
client=dummy_client
)
assert str(response) == '940AY0AZFE99\r'
assert str(response) == '940AY0AZFDFE\r'


def test_sip2_login(app, dummy_client, login_message):
Expand All @@ -52,7 +52,7 @@ def test_sip2_login(app, dummy_client, login_message):
Message(request=login_message),
client=dummy_client
)
assert str(response) == '941AY1AZFE97\r'
assert str(response) == '941AY1AZFDFC\r'


def test_sip2_system_status(app, dummy_client, system_status_message):
Expand Down

0 comments on commit 066f9da

Please sign in to comment.