コード例 #1
0
ファイル: pincodes.py プロジェクト: ramsemune/firmware
    def __init__(self):
        self.is_secondary = False
        self.pin = None
        self.secret = None
        self.is_empty = None
        self.magic_value = PA_MAGIC_V2 if version.has_608 else PA_MAGIC_V1
        self.delay_achieved = 0  # so far, how much time wasted?
        self.delay_required = 0  # how much will be needed?
        self.num_fails = 0  # for UI: number of fails PINs
        self.attempts_left = 0  # ignore in mk1/2 case, only valid for mk3
        self.state_flags = 0  # useful readback
        self.private_state = 0  # opaque data, but preserve
        self.cached_main_pin = bytearray(32)

        assert MAX_PIN_LEN == 32  # update FMT otherwise
        assert ustruct.calcsize(PIN_ATTEMPT_FMT_V1) == PIN_ATTEMPT_SIZE_V1, \
                            ustruct.calcsize(PIN_ATTEMPT_FMT)
        assert ustruct.calcsize(PIN_ATTEMPT_FMT_V2_ADDITIONS
                                ) == PIN_ATTEMPT_SIZE - PIN_ATTEMPT_SIZE_V1

        self.buf = bytearray(
            PIN_ATTEMPT_SIZE if version.has_608 else PIN_ATTEMPT_SIZE_V1)

        # check for bricked system early
        import callgate
        if callgate.get_is_bricked():
            # die right away if it's not going to work
            callgate.enter_dfu(3)
コード例 #2
0
async def test_ae508a():

    assert not get_is_bricked(), "AE508a is bricked"

    for ph in range(5):
        gg = get_genuine()

        dis.clear()
        if gg:
            dis.text(-1, 8, "Green ON? -->")
        else:
            dis.text(-1, 50, "Red ON? -->")

        dis.show()
        k = await ux_wait_keyup('xy')
        assert k == 'y', "LED bust"

        if ph and gg:
            # stop once it's on and we've tested both states
            return

        # attempt to switch to other state
        if gg:
            clear_genuine()
        else:
            # very slow!
            dis.text(0, 0, "Wait")
            dis.show()
            set_genuine()
            ux_clear_keys()

        ng = get_genuine()
        assert ng != gg, "Could not invert LED"
コード例 #3
0
async def test_secure_element():

    assert not get_is_bricked()         # bricked already

    # test right chips installed
    is_fat = ckcc.is_stm32l496()
    if is_fat:
        assert version.has_608          # expect 608a
        assert version.hw_label == 'mk3'
    else:
        assert not version.has_608      # expect 508a
        assert version.hw_label != 'mk3'

    if ckcc.is_simulator(): return

    for ph in range(5):
        gg = get_genuine()

        dis.clear()
        if gg:
            dis.text(-1, 8, "Green ON? -->")
        else:
            dis.text(-1,50, "Red ON? -->")

        dis.show()
        k = await ux_wait_keyup('xy')
        assert k == 'y'     # "LED bust"

        if ph and gg:
            # stop once it's on and we've tested both states
            return

        # attempt to switch to other state
        if gg:
            clear_genuine()
        else:
            # very slow!
            dis.text(0,0, "Wait")
            dis.show()
            set_genuine()
            ux_clear_keys()

        ng = get_genuine()
        assert ng != gg     # "Could not invert LED"
コード例 #4
0
ファイル: pincodes.py プロジェクト: syscoin/firmware
    def __init__(self):
        self.is_secondary = False
        self.pin = None
        self.secret = None
        self.is_empty = None
        self.delay_achieved = 0  # so far, how much time wasted?
        self.delay_required = 0  # how much will be needed?
        self.num_fails = 0  # for UI: number of fails PINs
        self.attempt_target = 0  # counter number from chip
        self.state_flags = 0  # useful readback
        self.private_state = 0  # opaque data, but preserve

        assert MAX_PIN_LEN == 32  # update FMT otherwise
        assert ustruct.calcsize(
            PIN_ATTEMPT_FMT) == PIN_ATTEMPT_SIZE, ustruct.calcsize(
                PIN_ATTEMPT_FMT)
        self.buf = bytearray(PIN_ATTEMPT_SIZE)

        # check for bricked system early
        import callgate
        if callgate.get_is_bricked():
            # die right away if it's not going to work
            callgate.enter_dfu(3)