from typing import Union from . import bindings from .key import Key def random_nonce() -> bytes: return bytes(bindings.key_crypto_box_random_nonce()) def crypto_box( receiver_key: Key, sender_key: Key, message: Union[bytes, str], nonce: bytes, ) -> bytes: return bytes( bindings.key_crypto_box( receiver_key._handle, sender_key._handle, message, nonce ) ) def crypto_box_open( receiver_key: Key, sender_key: Key, message: Union[bytes, str], nonce: bytes, ) -> bytes: return bytes( bindings.key_crypto_box_open( receiver_key._handle, sender_key._handle, message, nonce ) ) def crypto_box_seal( receiver_key: Key, message: Union[bytes, str], ) -> bytes: return bytes(bindings.key_crypto_box_seal(receiver_key._handle, message)) def crypto_box_seal_open( receiver_key: Key, ciphertext: bytes, ) -> bytes: return bytes(bindings.key_crypto_box_seal_open(receiver_key._handle, ciphertext))