aboutsummaryrefslogtreecommitdiff
path: root/python/tests/sas_test.py
diff options
context:
space:
mode:
authorDamir Jelić <poljar@termina.org.uk>2019-04-02 12:54:00 +0200
committerDamir Jelić <poljar@termina.org.uk>2019-04-02 12:56:53 +0200
commit446628753b6283f6dcbf27589b2c18f93c71768b (patch)
tree18d2a6f6f230d2e1100d37c6e6f0ccada980d335 /python/tests/sas_test.py
parentd5c0eb9d20a17ec596784f53f3c9ffab0e9ad772 (diff)
python: Add Short Authentication String bindings.
This patch adds bindings to the SAS part of the Olm library contained in the sas.h header file. Signed-off-by: Damir Jelić <poljar@termina.org.uk>
Diffstat (limited to 'python/tests/sas_test.py')
-rw-r--r--python/tests/sas_test.py82
1 files changed, 82 insertions, 0 deletions
diff --git a/python/tests/sas_test.py b/python/tests/sas_test.py
new file mode 100644
index 0000000..05013b7
--- /dev/null
+++ b/python/tests/sas_test.py
@@ -0,0 +1,82 @@
+from builtins import bytes
+
+import pytest
+
+from olm import OlmSasError, Sas
+
+MESSAGE = "Test message"
+EXTRA_INFO = "extra_info"
+
+
+class TestClass(object):
+ def test_sas_creation(self):
+ sas = Sas()
+ assert sas.pubkey
+
+ def test_other_key_setting(self):
+ sas_alice = Sas()
+ sas_bob = Sas()
+
+ assert not sas_alice.other_key_set
+ sas_alice.set_their_pubkey(sas_bob.pubkey)
+ assert sas_alice.other_key_set
+
+ def test_bytes_generating(self):
+ sas_alice = Sas()
+ sas_bob = Sas(sas_alice.pubkey)
+
+ assert sas_bob.other_key_set
+
+ with pytest.raises(OlmSasError):
+ sas_alice.generate_bytes(EXTRA_INFO, 5)
+
+ sas_alice.set_their_pubkey(sas_bob.pubkey)
+
+ with pytest.raises(ValueError):
+ sas_alice.generate_bytes(EXTRA_INFO, 0)
+
+ alice_bytes = sas_alice.generate_bytes(EXTRA_INFO, 5)
+ bob_bytes = sas_bob.generate_bytes(EXTRA_INFO, 5)
+
+ assert alice_bytes == bob_bytes
+
+ def test_mac_generating(self):
+ sas_alice = Sas()
+ sas_bob = Sas()
+
+ with pytest.raises(OlmSasError):
+ sas_alice.calculate_mac(MESSAGE, EXTRA_INFO)
+
+ sas_alice.set_their_pubkey(sas_bob.pubkey)
+ sas_bob.set_their_pubkey(sas_alice.pubkey)
+
+ alice_mac = sas_alice.calculate_mac(MESSAGE, EXTRA_INFO)
+ bob_mac = sas_bob.calculate_mac(MESSAGE, EXTRA_INFO)
+
+ assert alice_mac == bob_mac
+
+ def test_cross_language_mac(self):
+ """Test MAC generating with a predefined key pair.
+
+ This test imports a private and public key from the C test and checks
+ if we are getting the same MAC that the C code calculated.
+ """
+ alice_private = [
+ 0x77, 0x07, 0x6D, 0x0A, 0x73, 0x18, 0xA5, 0x7D,
+ 0x3C, 0x16, 0xC1, 0x72, 0x51, 0xB2, 0x66, 0x45,
+ 0xDF, 0x4C, 0x2F, 0x87, 0xEB, 0xC0, 0x99, 0x2A,
+ 0xB1, 0x77, 0xFB, 0xA5, 0x1D, 0xB9, 0x2C, 0x2A
+ ]
+
+ bob_key = "3p7bfXt9wbTTW2HC7OQ1Nz+DQ8hbeGdNrfx+FG+IK08"
+ message = "Hello world!"
+ extra_info = "MAC"
+ expected_mac = "2nSMTXM+TStTU3RUVTNSVVZUTlNWVlpVVGxOV1ZscFY"
+
+ sas_alice = Sas()
+ sas_alice._create_sas(bytes(alice_private), 32)
+ sas_alice.set_their_pubkey(bob_key)
+
+ alice_mac = sas_alice.calculate_mac(message, extra_info)
+
+ assert alice_mac == expected_mac