Skip to content

Commit 9a3c0fe

Browse files
authored
Merge pull request #18 from lampkicking/fix/stripping_padding_py27
Fix for padding stripping in Python2
2 parents 304189f + 5eb1031 commit 9a3c0fe

File tree

11 files changed

+109
-41
lines changed

11 files changed

+109
-41
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,11 @@ test suite on Python 2.6 (2.6.9 in our case, as installed with `pyenv`).
8888

8989
To install all the Python versions this SDK has been tested against run:
9090

91-
$ for version in 2.6.9 2.7.12 3.3.6 3.4.5 3.5.2 3.6.0b1; do pyenv install $version; done
91+
$ for version in 2.6.9 2.7.12 3.3.6 3.4.5 3.5.2 3.6.0b3; do pyenv install $version; done
9292

9393
activate the installed interpreters (execute in this directory):
9494

95-
$ pyenv local 2.6.9 2.7.12 3.3.6 3.4.5 3.5.2 3.6.0b1
95+
$ pyenv local 2.6.9 2.7.12 3.3.6 3.4.5 3.5.2 3.6.0b3
9696

9797
run the tests:
9898

requirements_tox.txt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
click==6.6
2+
Django==1.10.2
3+
Flask==0.11.1
4+
itsdangerous==0.24
5+
Jinja2==2.8
6+
MarkupSafe==0.23
7+
mock==2.0.0
8+
pbr==1.10.0
9+
pytest==3.0.3
10+
six==1.10.0
11+
tox>=1.7.2
12+
virtualenv==13.1.2
13+
future==0.15.2
14+
Werkzeug==0.11.11
15+
wheel==0.24.0

tox.ini

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,54 @@
11
[tox]
22
envlist = py26,py27,py33,py34,py35,py36
33
{py26,py27,py33,py34,py35,py36}-{oldest,cryptography14,requests26,protobuf30}
4-
py36-macOS
4+
{py26,py36}-macOS
55
py36-macOS-{oldest,cryptography14,requests26,protobuf30}
66
skip_missing_interpreters = True
77

88
[testenv]
99
commands = py.test -c {posargs:pytest.ini}
1010
whitelist_externals = py.test
1111
macOS: env
12-
deps = future011,oldest: future==0.11.0
12+
13+
14+
; Tox doesn't allow us to combine main requirements.txt with specific deps versions,
15+
; since it will result in 'multiple deps error'.
16+
; The solution is to omit those deps in a tox-specific requirements.txt file
17+
; and maintain 2 sets of deps by explicitly stating them in tox.ini
18+
deps =
1319
protobuf30,oldest: protobuf==3.0.0
1420
requests20,oldest: requests==2.0.0
1521
cryptography14,oldest: cryptography==1.4
16-
future013: future>=0.13,<0.14
1722
requests26: requests>=2.6,<2.7
23+
-rrequirements_tox.txt
24+
25+
[testenv:py26]
26+
; Make sure those are the same as in requirements.txt
27+
; they will be used in envs that do not specify specific, older versions of these packages.
28+
deps =
29+
cryptography==1.5.2
30+
protobuf==3.1.0.post1
31+
requests==2.11.1
32+
-rrequirements_tox.txt
1833

19-
[testenv:py36]
2034
platform = win32|linux2|linux|cygwin
2135

36+
[testenv:py27]
37+
deps = {[testenv:py26]deps}
38+
39+
[testenv:py33]
40+
deps = {[testenv:py26]deps}
41+
42+
[testenv:py34]
43+
deps = {[testenv:py26]deps}
44+
45+
[testenv:py35]
46+
deps = {[testenv:py26]deps}
47+
48+
[testenv:py36]
49+
platform = {[testenv:py26]platform}
50+
deps = {[testenv:py26]deps}
51+
2252
[testenv:py36-oldest]
2353
platform = {[testenv:py36]platform}
2454

@@ -38,6 +68,10 @@ platform = {[testenv:py36]platform}
3868
install_command = env LDFLAGS="-L/usr/local/opt/openssl/lib" CFLAGS="-I/usr/local/opt/openssl/include" pip install {opts} {packages}
3969
platform = darwin
4070

71+
[testenv:py26-macOS]
72+
install_command = {[testenv:macOS]install_command}
73+
platform = {[testenv:macOS]platform}
74+
4175
[testenv:py36-macOS]
4276
install_command = {[testenv:macOS]install_command}
4377
platform = {[testenv:macOS]platform}

yoti/crypto.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,5 +65,12 @@ def decipher(key, iv, cipher_text):
6565

6666
@staticmethod
6767
def strip_pkcs5_padding(data):
68+
if isinstance(data, str):
69+
data = bytearray(data)
70+
6871
number_of_padded_bytes = data[-1]
69-
return data[:-number_of_padded_bytes]
72+
stripped = data[:-number_of_padded_bytes]
73+
74+
if isinstance(stripped, bytearray):
75+
stripped = str(stripped)
76+
return stripped

yoti/tests/conftest.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
AUTH_KEY_FILE_PATH = join(FIXTURES_DIR, 'auth_key.txt')
1313
AUTH_DIGEST_FILE_PATH = join(FIXTURES_DIR, 'auth_digest.txt')
1414

15-
YOTI_CLIENT_SDK_ID = 'd13224e6-c8f4-4991-a703-b05fba4d4fdb'
15+
YOTI_CLIENT_SDK_ID = '737204aa-d54e-49a4-8bde-26ddbe6d880c'
1616

1717

1818
@pytest.fixture(scope='module')
@@ -34,8 +34,8 @@ def encrypted_request_token():
3434

3535
@pytest.fixture(scope='module')
3636
def decrypted_request_token():
37-
return 'NpdmVVGC-8b1e5780-6073-47d6-8d54-66ddcb34041b-ec7d01d4-fb9f-' \
38-
'4abb-97ad-5bd2ad5818f1'
37+
return 'd1JtHdjH-2c161003-cbaf-4080-b2a8-5a6d86577334-3f9d9a9a-' \
38+
'470c-48e5-8ceb-25cf86674ba4'
3939

4040

4141
@pytest.fixture(scope='module')
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
eagIzocJNgWhLj3LzfJKCZ11ZCGaRKm8gn6PCENuDz2QGTg+XrS8XlWwRv4WWmnpvCc2tWbX80KKT3HZupjllCE97R5NJOeB7YvbGnwQF7PvWlWk1fmn+GbuWR+uPP6dQVDfn5RDZpVpftl6fIsrxWCaAbLI0gJcUxPPb50vZpKX+kTZXpiZ7h8q7GH35Wm15qTC1m1GHST+UoRGpAUb7Mx0XOOxP39rmFA4LjwfBymRzLuIK8bU4qmRgNRIS/59V47IC3gqFcSclIhQXw++gFyFDRuzseDPbmE6TJS8R66pBwX0kiiHcOcW4dBikQkZFETT02lHVNK1LBCRKYwaHA==
1+
pEzXGoyTwknVwi6k1b6Cpl5l+EDT32IqrHUOj79nohPs8VSYpiBz3JjSTrPQN8XyEFEf6glGsaeXanqfM0yClwx9/vLYjGNB+CliUt0wL27xmxrEgA2tMx28q8W9OMcl5Go2rwLbLV+rmm0TUE4yBwnTp0zzj4p3vQTChNKKkaZLNoQAAF5nGEza/jDc/HZDg7u1c84i5Z/aoycaiBtmwWpi0/Hm882FmYGEEi5yeuwccoE1y4a/dhbCrSetr4mowRw1mNM3nyeA2AA4+nU3hag5FGvC1WLbnwXtMeKKgorZIY4BoXh4jJ/4RcKwrbz8olQ93sHYPvElbr+4Fnnnyg==

yoti/tests/fixtures/auth_key.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsL5M7YtbaGjzS9l4op+6sOh+wvEZoJI0KDRDuffVsu7QNrXjT8aKjfAdmqC2PNjqsMF9ejc1v3yUyg427+QksRmEjrxu/m5ApoV9V0882KANsdJ8lsRO94P/h+Sq2vo6wVMR9KSkE5/64XAMGqZiGcBwPukA3SGr5VaM4eFdgvX+5T90QbVoVyb4JDynYuukGnRQ3r9lzkcpvZBbW5SX/PkuMfstVid51Xrr9Jl4mZgc9M4XEE7mkSfs8BOk+XJe0JoYIuL/yfmFlE99mn8gKidLTA++HiRDGHKTUNfyBfdN+1cAl7fTFLIBFfhNHQSVFRrZeHwBmSSLnQhEmdD74QIDAQAB
1+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuYoTrpI7lykIiuvExuysE5NshCF1aIH+QBv/sGzlL6Xz/rsmNHqwlRcHXlnunA9yrPTxz88TFXynk3oh+Ud2bVVVsXxN4qK/41VNQRg2Irs2/RIEqOVgqr9KljIVPlxo0yqzAoXg4M/0+QpNIY6cYxlqvohP6s3Fd3lkn1eA6+6VXRCJ6PdRM56fTqyihIuWfVYHi9emg8Moof3LPkuaIDNzwDHwe2C/3L9gXKX7hhsFzIJert7r9jbetaifVruyRB3lBCJhcjU2/YW8pmJ5EDUSUg4iBDxOdpXGElYg4rRGfydVYJ1GpC2HtwJrQzrWvzgTok+m2xAkoy6kucYkxQIDAQAB
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
kLvmNY4xSNLki_fYfpBrz2-u3k09j_oE1Oz3L_8DhDr3pM1KvtlJ6Bn8mtEppt64bBxOMjusrs5AcAymDs63iR91c2fq799FAr3eGPSQLsKN0SSBYmPh_0T61zj07Z0eBZcddlIur2UoLhBkouAXpJLgrUFWRRw2Cl0DAKDQAxipfRSZcVvrmy18jP1bpeQQHAlVXLkW9J4IvlHtnXFJbn1ws33p_-U8EyyHUi_9sUOp-xDVQ105mdPth2-3Xho3Wln96__jtagSwfL2kwdjzkwl_u8eKINTg8cOsutgQ64vQFKUCfr-41c34rGmOneMM1xjcBu0vYJM8m8KZjIxZg==
1+
brwZ8V9owp7EGeMIsFZqRb95P6QJt7tZXAYxjCnRnXg8xbTfmeVSYrabpZXxiVgYWBOLUYQn_zguQzGGf3eu4dQwKCfg7aA9ior4hQapRa8rnBWfPvSHIsAB994laNE9Zc1tzdtUCmpO_GcQLK8iwavUrnoSMLzQOpsgq4D-rlmwSWb01oDrpKDWG1U_H7njgjMs7gwJwF9lxj-nEX5EKQanhBvA-RunGpZ2yyPrr4kNiqqx0xZ87JS2vToHHIJyBQUFNIXKnj6Gk8mRCQdWf-S1YtC4fSXImH8-s4AbRVnFR1oVf_ON4FibfPHWCH8mSnwD74T6bdMwkoWc2xzT3g==

yoti/tests/fixtures/response.txt

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

yoti/tests/fixtures/sdk-test.pem

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
-----BEGIN RSA PRIVATE KEY-----
2-
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
2727
-----END RSA PRIVATE KEY-----

0 commit comments

Comments
 (0)