Ejemplo n.º 1
0
def test_add_round_key():
    ''' XOR state array sa with roundkey rk to return new state array.
        param sa is a 4x4 state array, param rk is a 4-word round key '''
    stateArr = [[newBV(0x04), newBV(0x66), newBV(0x81), newBV(0xe5)], \
                [newBV(0xe0), newBV(0xcb), newBV(0x19), newBV(0x9a)], \
                [newBV(0x48), newBV(0xf8), newBV(0xd3), newBV(0x7a)], \
                [newBV(0x28), newBV(0x06), newBV(0x26), newBV(0x4c)]]
    roundKey = [
        AES.key_to_bv("a0fafe17"),
        AES.key_to_bv("88542cb1"),
        AES.key_to_bv("23a33939"),
        AES.key_to_bv("2a6c7605")
    ]
    expected = [[newBV(0xa4), newBV(0x9c), newBV(0x7f), newBV(0xf2)],\
                [newBV(0x68), newBV(0x9f), newBV(0x35), newBV(0x2b)],\
                [newBV(0x6b), newBV(0x5b), newBV(0xea), newBV(0x43)],\
                [newBV(0x02), newBV(0x6a), newBV(0x50), newBV(0x49)]]
    actual = AES.add_round_key(stateArr, roundKey)
    assert actual == expected

    stateArr = [[newBV(0x58), newBV(0x4d), newBV(0xca), newBV(0xf1)], \
                [newBV(0x1b), newBV(0x4b), newBV(0x5a), newBV(0xac)], \
                [newBV(0xdb), newBV(0xe7), newBV(0xca), newBV(0xa8)], \
                [newBV(0x1b), newBV(0x6b), newBV(0xb0), newBV(0xe5)]]
    roundKey = [
        AES.key_to_bv("f2c295f2"),
        AES.key_to_bv("7a96b943"),
        AES.key_to_bv("5935807a"),
        AES.key_to_bv("7359f67f")
    ]
    expected = [[newBV(0xaa), newBV(0x8f), newBV(0x5f), newBV(0x03)], \
                [newBV(0x61), newBV(0xdd), newBV(0xe3), newBV(0xef)], \
                [newBV(0x82), newBV(0xd2), newBV(0x4a), newBV(0xd2)], \
                [newBV(0x68), newBV(0x32), newBV(0x46), newBV(0x9a)]]
    actual = AES.add_round_key(stateArr, roundKey)
    assert actual == expected

    stateArr = [[newBV(0x75), newBV(0xec), newBV(0x09), newBV(0x93)], \
                [newBV(0x20), newBV(0x0b), newBV(0x63), newBV(0x33)], \
                [newBV(0x53), newBV(0xc0), newBV(0xcf), newBV(0x7c)], \
                [newBV(0xbb), newBV(0x25), newBV(0xd0), newBV(0xdc)]]
    roundKey = [
        AES.key_to_bv("3d80477d"),
        AES.key_to_bv("4716fe3e"),
        AES.key_to_bv("1e237e44"),
        AES.key_to_bv("6d7a883b")
    ]
    expected = [[newBV(0x48), newBV(0x6c), newBV(0x4e), newBV(0xee)], \
                [newBV(0x67), newBV(0x1d), newBV(0x9d), newBV(0x0d)], \
                [newBV(0x4d), newBV(0xe3), newBV(0xb1), newBV(0x38)], \
                [newBV(0xd6), newBV(0x5f), newBV(0x58), newBV(0xe7)]]
    actual = AES.add_round_key(stateArr, roundKey)
    AES.print_state(expected)
    AES.print_state(actual)
    assert actual == expected
Ejemplo n.º 2
0
def test_add_round_key():
    ''' XOR state array sa with roundkey rk to return new state array.
        param sa is a 4x4 state array, param rk is a 4-word round key '''
    stateArr = [[newBV(0x04), newBV(0x66), newBV(0x81), newBV(0xe5)], \
                [newBV(0xe0), newBV(0xcb), newBV(0x19), newBV(0x9a)], \
                [newBV(0x48), newBV(0xf8), newBV(0xd3), newBV(0x7a)], \
                [newBV(0x28), newBV(0x06), newBV(0x26), newBV(0x4c)]]
    roundKey = [AES.key_to_bv("a0fafe17"), AES.key_to_bv("88542cb1"), AES.key_to_bv("23a33939"), AES.key_to_bv("2a6c7605")]
    expected = [[newBV(0xa4), newBV(0x9c), newBV(0x7f), newBV(0xf2)],\
                [newBV(0x68), newBV(0x9f), newBV(0x35), newBV(0x2b)],\
                [newBV(0x6b), newBV(0x5b), newBV(0xea), newBV(0x43)],\
                [newBV(0x02), newBV(0x6a), newBV(0x50), newBV(0x49)]]
    actual = AES.add_round_key(stateArr, roundKey)
    assert actual == expected

    stateArr = [[newBV(0x58), newBV(0x4d), newBV(0xca), newBV(0xf1)], \
                [newBV(0x1b), newBV(0x4b), newBV(0x5a), newBV(0xac)], \
                [newBV(0xdb), newBV(0xe7), newBV(0xca), newBV(0xa8)], \
                [newBV(0x1b), newBV(0x6b), newBV(0xb0), newBV(0xe5)]]
    roundKey = [AES.key_to_bv("f2c295f2"), AES.key_to_bv("7a96b943"), AES.key_to_bv("5935807a"), AES.key_to_bv("7359f67f")]
    expected = [[newBV(0xaa), newBV(0x8f), newBV(0x5f), newBV(0x03)], \
                [newBV(0x61), newBV(0xdd), newBV(0xe3), newBV(0xef)], \
                [newBV(0x82), newBV(0xd2), newBV(0x4a), newBV(0xd2)], \
                [newBV(0x68), newBV(0x32), newBV(0x46), newBV(0x9a)]]
    actual = AES.add_round_key(stateArr, roundKey)
    assert actual == expected

    stateArr = [[newBV(0x75), newBV(0xec), newBV(0x09), newBV(0x93)], \
                [newBV(0x20), newBV(0x0b), newBV(0x63), newBV(0x33)], \
                [newBV(0x53), newBV(0xc0), newBV(0xcf), newBV(0x7c)], \
                [newBV(0xbb), newBV(0x25), newBV(0xd0), newBV(0xdc)]]
    roundKey = [AES.key_to_bv("3d80477d"), AES.key_to_bv("4716fe3e"), AES.key_to_bv("1e237e44"), AES.key_to_bv("6d7a883b")]
    expected = [[newBV(0x48), newBV(0x6c), newBV(0x4e), newBV(0xee)], \
                [newBV(0x67), newBV(0x1d), newBV(0x9d), newBV(0x0d)], \
                [newBV(0x4d), newBV(0xe3), newBV(0xb1), newBV(0x38)], \
                [newBV(0xd6), newBV(0x5f), newBV(0x58), newBV(0xe7)]]
    actual = AES.add_round_key(stateArr, roundKey)
    AES.print_state(expected)
    AES.print_state(actual)
    assert actual == expected
Ejemplo n.º 3
0
def test_inv_mix_columns():
    ''' Inverse mix columns on state array sa to return new state array '''
    expected = [[newBV(0xac), newBV(0xc1), newBV(0xd6), newBV(0xb8)], \
                [newBV(0xef), newBV(0xb5), newBV(0x5a), newBV(0x7b)], \
                [newBV(0x13), newBV(0x23), newBV(0xcf), newBV(0xdf)], \
                [newBV(0x45), newBV(0x73), newBV(0x11), newBV(0xb5)]]
    stateArr = [[newBV(0x75), newBV(0xec), newBV(0x09), newBV(0x93)], \
                [newBV(0x20), newBV(0x0b), newBV(0x63), newBV(0x33)], \
                [newBV(0x53), newBV(0xc0), newBV(0xcf), newBV(0x7c)], \
                [newBV(0xbb), newBV(0x25), newBV(0xd0), newBV(0xdc)]]
    actual = AES.inv_mix_columns(stateArr)
    AES.print_state(expected)
    AES.print_state(actual)
    assert expected == actual

    expected = [[newBV(0x52), newBV(0xa4), newBV(0xc8), newBV(0x94)], \
                [newBV(0x85), newBV(0x11), newBV(0x6a), newBV(0x28)], \
                [newBV(0xe3), newBV(0xcf), newBV(0x2f), newBV(0xd7)], \
                [newBV(0xf6), newBV(0x50), newBV(0x5e), newBV(0x07)]]
    stateArr = [[newBV(0x0f), newBV(0xd6), newBV(0xda), newBV(0xa9)], \
                [newBV(0x60), newBV(0x31), newBV(0x38), newBV(0xbf)], \
                [newBV(0x6f), newBV(0xc0), newBV(0x10), newBV(0x6b)], \
                [newBV(0x5e), newBV(0xb3), newBV(0x13), newBV(0x01)]]
    actual = AES.inv_mix_columns(stateArr)
    assert expected == actual
    
    expected = [[newBV(0xe1), newBV(0xfb), newBV(0x96), newBV(0x7c)], \
                [newBV(0xe8), newBV(0xc8), newBV(0xae), newBV(0x9b)], \
                [newBV(0x35), newBV(0x6c), newBV(0xd2), newBV(0xba)], \
                [newBV(0x97), newBV(0x4f), newBV(0xfb), newBV(0x53)]]
    stateArr = [[newBV(0x25), newBV(0xd1), newBV(0xa9), newBV(0xad)], \
                [newBV(0xbd), newBV(0x11), newBV(0xd1), newBV(0x68)], \
                [newBV(0xb6), newBV(0x3a), newBV(0x33), newBV(0x8e)], \
                [newBV(0x4c), newBV(0x4c), newBV(0xc0), newBV(0xb0)]]
    actual = AES.inv_mix_columns(stateArr)
    assert expected == actual
Ejemplo n.º 4
0
def test_inv_mix_columns():
    ''' Inverse mix columns on state array sa to return new state array '''
    expected = [[newBV(0xac), newBV(0xc1), newBV(0xd6), newBV(0xb8)], \
                [newBV(0xef), newBV(0xb5), newBV(0x5a), newBV(0x7b)], \
                [newBV(0x13), newBV(0x23), newBV(0xcf), newBV(0xdf)], \
                [newBV(0x45), newBV(0x73), newBV(0x11), newBV(0xb5)]]
    stateArr = [[newBV(0x75), newBV(0xec), newBV(0x09), newBV(0x93)], \
                [newBV(0x20), newBV(0x0b), newBV(0x63), newBV(0x33)], \
                [newBV(0x53), newBV(0xc0), newBV(0xcf), newBV(0x7c)], \
                [newBV(0xbb), newBV(0x25), newBV(0xd0), newBV(0xdc)]]
    actual = AES.inv_mix_columns(stateArr)
    AES.print_state(expected)
    AES.print_state(actual)
    assert expected == actual

    expected = [[newBV(0x52), newBV(0xa4), newBV(0xc8), newBV(0x94)], \
                [newBV(0x85), newBV(0x11), newBV(0x6a), newBV(0x28)], \
                [newBV(0xe3), newBV(0xcf), newBV(0x2f), newBV(0xd7)], \
                [newBV(0xf6), newBV(0x50), newBV(0x5e), newBV(0x07)]]
    stateArr = [[newBV(0x0f), newBV(0xd6), newBV(0xda), newBV(0xa9)], \
                [newBV(0x60), newBV(0x31), newBV(0x38), newBV(0xbf)], \
                [newBV(0x6f), newBV(0xc0), newBV(0x10), newBV(0x6b)], \
                [newBV(0x5e), newBV(0xb3), newBV(0x13), newBV(0x01)]]
    actual = AES.inv_mix_columns(stateArr)
    assert expected == actual

    expected = [[newBV(0xe1), newBV(0xfb), newBV(0x96), newBV(0x7c)], \
                [newBV(0xe8), newBV(0xc8), newBV(0xae), newBV(0x9b)], \
                [newBV(0x35), newBV(0x6c), newBV(0xd2), newBV(0xba)], \
                [newBV(0x97), newBV(0x4f), newBV(0xfb), newBV(0x53)]]
    stateArr = [[newBV(0x25), newBV(0xd1), newBV(0xa9), newBV(0xad)], \
                [newBV(0xbd), newBV(0x11), newBV(0xd1), newBV(0x68)], \
                [newBV(0xb6), newBV(0x3a), newBV(0x33), newBV(0x8e)], \
                [newBV(0x4c), newBV(0x4c), newBV(0xc0), newBV(0xb0)]]
    actual = AES.inv_mix_columns(stateArr)
    assert expected == actual