veilid/veilid-python/tests/test_crypto.py

43 lines
1.4 KiB
Python
Raw Normal View History

2023-06-15 20:22:54 -04:00
# Crypto veilid tests
2023-06-14 21:06:10 -04:00
2023-06-15 20:22:54 -04:00
import veilid
2023-06-14 21:06:10 -04:00
import pytest
from . import *
##################################################################
@pytest.mark.asyncio
async def test_best_crypto_system():
2023-06-15 20:22:54 -04:00
async def func(api: veilid.VeilidAPI):
2023-06-14 21:06:10 -04:00
bcs = await api.best_crypto_system()
2023-06-15 20:22:54 -04:00
await simple_connect_and_run(func)
2023-06-14 21:06:10 -04:00
@pytest.mark.asyncio
async def test_get_crypto_system():
2023-06-15 20:22:54 -04:00
async def func(api: veilid.VeilidAPI):
cs = await api.get_crypto_system(veilid.CryptoKind.CRYPTO_KIND_VLD0)
2023-06-14 21:06:10 -04:00
# clean up handle early
del cs
2023-06-15 20:22:54 -04:00
await simple_connect_and_run(func)
2023-06-14 21:06:10 -04:00
@pytest.mark.asyncio
async def test_get_crypto_system_invalid():
2023-06-15 20:22:54 -04:00
async def func(api: veilid.VeilidAPI):
with pytest.raises(veilid.VeilidAPIError):
cs = await api.get_crypto_system(veilid.CryptoKind.CRYPTO_KIND_NONE)
await simple_connect_and_run(func)
2023-06-14 21:06:10 -04:00
2023-06-15 20:22:54 -04:00
@pytest.mark.asyncio
async def test_hash_and_verify_password():
async def func(api: veilid.VeilidAPI):
bcs = await api.best_crypto_system()
nonce = await bcs.random_nonce()
salt = nonce.to_bytes()
# Password match
phash = await bcs.hash_password(b"abc123", salt)
assert await bcs.verify_password(b"abc123", phash)
# Password mismatch
phash2 = await bcs.hash_password(b"abc1234", salt)
assert not await bcs.verify_password(b"abc12345", phash)
await simple_connect_and_run(func)