def test_box_seal_empty_is_verified(): A_pubkey, A_secretkey = c.crypto_box_keypair() empty = b"" amsg = bytearray(c.crypto_box_seal(empty, A_pubkey)) amsg[-1] ^= 1 msg = bytes(amsg) with pytest.raises(CryptoError): c.crypto_box_seal_open(msg, A_pubkey, A_secretkey)
def test_box_seal_wrong_lengths(): A_pubkey, A_secretkey = c.crypto_box_keypair() with pytest.raises(ValueError): c.crypto_box_seal(b"abc", A_pubkey[:-1]) with pytest.raises(ValueError): c.crypto_box_seal_open(b"abc", b"", A_secretkey) with pytest.raises(ValueError): c.crypto_box_seal_open(b"abc", A_pubkey, A_secretkey[:-1])
def test_box_seal_wrong_lengths(): A_pubkey, A_secretkey = c.crypto_box_keypair() with pytest.raises(ValueError): c.crypto_box_seal(b"abc", A_pubkey[:-1]) with pytest.raises(ValueError): c.crypto_box_seal_open( b"abc", b"", A_secretkey) with pytest.raises(ValueError): c.crypto_box_seal_open( b"abc", A_pubkey, A_secretkey[:-1])
def test_box_seal_empty(): A_pubkey, A_secretkey = c.crypto_box_keypair() empty = b"" msg = c.crypto_box_seal(empty, A_pubkey) decoded = c.crypto_box_seal_open(msg, A_pubkey, A_secretkey) assert decoded == empty
def test_box(): A_pubkey, A_secretkey = c.crypto_box_keypair() assert len(A_secretkey) == c.crypto_box_SECRETKEYBYTES assert len(A_pubkey) == c.crypto_box_PUBLICKEYBYTES B_pubkey, B_secretkey = c.crypto_box_keypair() k1 = c.crypto_box_beforenm(B_pubkey, A_secretkey) assert len(k1) == c.crypto_box_BEFORENMBYTES k2 = c.crypto_box_beforenm(A_pubkey, B_secretkey) assert tohex(k1) == tohex(k2) message = b"message" nonce = b"\x01" * c.crypto_box_NONCEBYTES ct1 = c.crypto_box_afternm(message, nonce, k1) assert len(ct1) == len(message) + c.crypto_box_BOXZEROBYTES ct2 = c.crypto_box(message, nonce, B_pubkey, A_secretkey) assert tohex(ct2) == tohex(ct1) m1 = c.crypto_box_open(ct1, nonce, A_pubkey, B_secretkey) assert m1 == message m2 = c.crypto_box_open_afternm(ct1, nonce, k1) assert m2 == message with pytest.raises(CryptoError): c.crypto_box_open( message + b"!", nonce, A_pubkey, A_secretkey) s1 = c.crypto_box_seal(message, A_pubkey) assert len(s1) == len(message) + c.crypto_box_SEALBYTES m1 = c.crypto_box_seal_open(s1, A_pubkey, A_secretkey) assert m1 == message with pytest.raises(ValueError): c.crypto_box_seal_open(b"!", A_pubkey, A_secretkey) with pytest.raises(CryptoError): c.crypto_box_seal_open(b"!" + s1, A_pubkey, A_secretkey)
def test_box_seal_wrong_types(): A_pubkey, A_secretkey = c.crypto_box_keypair() with pytest.raises(TypeError): c.crypto_box_seal(b"abc", dict()) with pytest.raises(TypeError): c.crypto_box_seal_open(b"abc", None, A_secretkey) with pytest.raises(TypeError): c.crypto_box_seal_open(b"abc", A_pubkey, None) with pytest.raises(TypeError): c.crypto_box_seal_open(None, A_pubkey, A_secretkey)
def test_box_seal_wrong_types(): A_pubkey, A_secretkey = c.crypto_box_keypair() with pytest.raises(TypeError): c.crypto_box_seal(b"abc", dict()) with pytest.raises(TypeError): c.crypto_box_seal_open( b"abc", None, A_secretkey) with pytest.raises(TypeError): c.crypto_box_seal_open( b"abc", A_pubkey, None) with pytest.raises(TypeError): c.crypto_box_seal_open( None, A_pubkey, A_secretkey)