aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xsrc/python/botan2.py24
-rw-r--r--src/scripts/test_python.py14
2 files changed, 36 insertions, 2 deletions
diff --git a/src/python/botan2.py b/src/python/botan2.py
index 021ac8a61..617efa887 100755
--- a/src/python/botan2.py
+++ b/src/python/botan2.py
@@ -110,6 +110,9 @@ botan.botan_hash_init.errcheck = errcheck_for('botan_hash_init')
botan.botan_hash_destroy.argtypes = [c_void_p]
botan.botan_hash_destroy.errcheck = errcheck_for('botan_hash_destroy')
+botan.botan_hash_name.argtypes = [c_void_p, POINTER(c_char), POINTER(c_size_t)]
+botan.botan_hash_name.errcheck = errcheck_for('botan_hash_name')
+
botan.botan_hash_clear.argtypes = [c_void_p]
botan.botan_hash_clear.errcheck = errcheck_for('botan_hash_clear')
@@ -129,6 +132,9 @@ botan.botan_mac_init.errcheck = errcheck_for('botan_mac_init')
botan.botan_mac_destroy.argtypes = [c_void_p]
botan.botan_mac_destroy.errcheck = errcheck_for('botan_mac_destroy')
+botan.botan_mac_name.argtypes = [c_void_p, POINTER(c_char), POINTER(c_size_t)]
+botan.botan_mac_name.errcheck = errcheck_for('botan_mac_name')
+
botan.botan_mac_clear.argtypes = [c_void_p]
botan.botan_mac_clear.errcheck = errcheck_for('botan_mac_clear')
@@ -151,6 +157,9 @@ botan.botan_cipher_init.errcheck = errcheck_for('botan_cipher_init')
botan.botan_cipher_destroy.argtypes = [c_void_p]
botan.botan_cipher_destroy.errcheck = errcheck_for('botan_cipher_destroy')
+botan.botan_cipher_name.argtypes = [c_void_p, POINTER(c_char), POINTER(c_size_t)]
+botan.botan_cipher_name.errcheck = errcheck_for('botan_cipher_name')
+
botan.botan_cipher_get_default_nonce_length.argtypes = [c_void_p, POINTER(c_size_t)]
botan.botan_cipher_get_default_nonce_length.errcheck = errcheck_for('botan_cipher_get_default_nonce_length')
@@ -226,6 +235,9 @@ botan.botan_pubkey_fingerprint.errcheck = errcheck_for('botan_pubkey_fingerprint
botan.botan_privkey_create.argtypes = [c_void_p, c_char_p, c_char_p, c_void_p]
botan.botan_privkey_create.errcheck = errcheck_for('botan_privkey_create')
+botan.botan_privkey_algo_name.argtypes = [c_void_p, POINTER(c_char), POINTER(c_size_t)]
+botan.botan_privkey_algo_name.errcheck = errcheck_for('botan_privkey_algo_name')
+
botan.botan_privkey_export_pubkey.argtypes = [c_void_p, c_void_p]
botan.botan_privkey_export_pubkey.errcheck = errcheck_for('botan_privkey_export_pubkey')
@@ -454,6 +466,9 @@ class hash_function(object): # pylint: disable=invalid-name
def __del__(self):
botan.botan_hash_destroy(self.hash)
+ def algo_name(self):
+ return _call_fn_returning_string(32, lambda b, bl: botan.botan_hash_name(self.hash, b, bl))
+
def clear(self):
botan.botan_hash_clear(self.hash)
@@ -485,6 +500,9 @@ class message_authentication_code(object): # pylint: disable=invalid-name
def clear(self):
botan.botan_mac_clear(self.mac)
+ def algo_name(self):
+ return _call_fn_returning_string(32, lambda b, bl: botan.botan_mac_name(self.mac, b, bl))
+
def output_length(self):
l = c_size_t(0)
botan.botan_mac_output_length(self.mac, byref(l))
@@ -510,6 +528,9 @@ class cipher(object): # pylint: disable=invalid-name
def __del__(self):
botan.botan_cipher_destroy(self.cipher)
+ def algo_name(self):
+ return _call_fn_returning_string(32, lambda b, bl: botan.botan_cipher_name(self.cipher, b, bl))
+
def default_nonce_length(self):
l = c_size_t(0)
botan.botan_cipher_get_default_nonce_length(self.cipher, byref(l))
@@ -694,6 +715,9 @@ class private_key(object): # pylint: disable=invalid-name
def __del__(self):
botan.botan_privkey_destroy(self.privkey)
+ def algo_name(self):
+ return _call_fn_returning_string(32, lambda b, bl: botan.botan_privkey_algo_name(self.privkey, b, bl))
+
def get_public_key(self):
pub = c_void_p(0)
diff --git a/src/scripts/test_python.py b/src/scripts/test_python.py
index 32e57bc0a..34233f6f9 100644
--- a/src/scripts/test_python.py
+++ b/src/scripts/test_python.py
@@ -70,6 +70,7 @@ class BotanPythonTests(unittest.TestCase):
def test_hmac(self):
hmac = botan2.message_authentication_code('HMAC(SHA-256)')
+ self.assertEqual(hmac.algo_name(), 'HMAC(SHA-256)')
hmac.set_key(hex_decode('0102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20'))
hmac.update(hex_decode('616263'))
@@ -93,6 +94,7 @@ class BotanPythonTests(unittest.TestCase):
def test_hash(self):
h = botan2.hash_function('SHA-256')
+ self.assertEqual(h.algo_name(), 'SHA-256')
assert h.output_length() == 32
h.update('ignore this please')
h.clear()
@@ -109,6 +111,13 @@ class BotanPythonTests(unittest.TestCase):
for mode in ['AES-128/CTR-BE', 'Serpent/GCM', 'ChaCha20Poly1305']:
enc = botan2.cipher(mode, encrypt=True)
+ if mode == 'AES-128/CTR-BE':
+ self.assertEqual(enc.algo_name(), 'CTR-BE(AES-128)')
+ elif mode == 'Serpent/GCM':
+ self.assertEqual(enc.algo_name(), 'Serpent/GCM(16)')
+ else:
+ self.assertEqual(enc.algo_name(), mode)
+
(kmin, kmax) = enc.key_length()
self.assertTrue(kmin <= kmax)
@@ -151,10 +160,11 @@ class BotanPythonTests(unittest.TestCase):
def test_rsa(self):
rng = botan2.rng()
rsapriv = botan2.private_key('RSA', '1024', rng)
- rsapub = rsapriv.get_public_key()
+ self.assertEqual(rsapriv.algo_name(), 'RSA')
- self.assertEqual(rsapub.estimated_strength(), 80)
+ rsapub = rsapriv.get_public_key()
self.assertEqual(rsapub.algo_name(), 'RSA')
+ self.assertEqual(rsapub.estimated_strength(), 80)
enc = botan2.pk_op_encrypt(rsapub, "OAEP(SHA-256)")
dec = botan2.pk_op_decrypt(rsapriv, "OAEP(SHA-256)")