You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
# SPDX-FileCopyrightText: 2023 Ledger SAS
|
|
# SPDX-License-Identifier: LicenseRef-LEDGER
|
|
"""
|
|
This module provides Ragger tests Client application.
|
|
It contains the response parsing part.
|
|
"""
|
|
from typing import Tuple
|
|
|
|
|
|
def _pop_sized_buf_from_buffer(buffer:bytes, size:int) -> Tuple[bytes, bytes]:
|
|
"""Parse buffer and returns: remainder, data[size]"""
|
|
|
|
return buffer[size:], buffer[0:size]
|
|
|
|
|
|
def unpack_info_response(response: bytes) -> Tuple[str, str]:
|
|
"""Unpack response for AID:
|
|
RID (5)
|
|
Application (1)
|
|
Version (2)
|
|
Manufacturer (2)
|
|
Serial (4)
|
|
RFU (2)
|
|
"""
|
|
|
|
assert len(response) == 16
|
|
response, rid = _pop_sized_buf_from_buffer(response, 5)
|
|
response, app = _pop_sized_buf_from_buffer(response, 1)
|
|
response, version = _pop_sized_buf_from_buffer(response, 2)
|
|
response, manuf = _pop_sized_buf_from_buffer(response, 2)
|
|
response, serial = _pop_sized_buf_from_buffer(response, 4)
|
|
assert rid.hex() == "d276000124"
|
|
assert app.hex() == "01"
|
|
assert manuf.hex() == "2c97"
|
|
|
|
return (version.hex(), serial.hex())
|