def test_sign_verify_sha512(): """Test SHA-512 sign and verify the message. """ (pub, priv) = adafruit_rsa.newkeys(752, log_level="DEBUG") msg = "red apple" signature = adafruit_rsa.sign(msg, priv, "SHA-512") adafruit_rsa.verify(msg, signature, pub)
def test_encrypt_decrypt(): # Generate general purpose keys (pub, priv) = adafruit_rsa.newkeys(256, log_level="DEBUG") msg = "blinka".encode("utf-8") msg_enc = adafruit_rsa.encrypt(msg, pub) msg_dec = adafruit_rsa.decrypt(msg_enc, priv) assert msg == msg_dec, "Decrypted message does not match original message"
def test_randomness(): """Encrypt msg 2x yields diff. encrypted values.""" # Generate general purpose keys (pub, priv) = adafruit_rsa.newkeys(256, log_level="DEBUG") msg = "blinka".encode("utf-8") msg_enc_1 = adafruit_rsa.encrypt(msg, pub) msg_enc_2 = adafruit_rsa.encrypt(msg, pub) assert msg_enc_1 != msg_enc_2, "Messages should yield different values."
def test_mod_msg(): """Modifies an enecrypted message, asserts failure""" # Generate general purpose keys (pub, priv) = adafruit_rsa.newkeys(256, log_level="DEBUG") msg = "blinka".encode("utf-8") msg_enc = adafruit_rsa.encrypt(msg, pub) msg_enc = msg_enc[:-1] + b"X" # change the last byte try: adafruit_rsa.decrypt(msg_enc, priv) raise "ERROR: Decrypted message matches original" except adafruit_rsa.pkcs1.DecryptionError: pass
def test_sign_verify_fail(): """Check for adafruit_rsa.pkcs1.VerificationError on a modified message (invalid signature). """ # Generate general purpose keys (pub, priv) = adafruit_rsa.newkeys(256, log_level="DEBUG") msg = "red apple" signature = adafruit_rsa.sign(msg, priv, "SHA-512") msg = "blue apple" try: adafruit_rsa.verify(msg, signature, pub) except adafruit_rsa.pkcs1.VerificationError: # Expected error pass
import adafruit_rsa # Generate a keypair # # Supported Hash method Suggested minimum key size (bits) # SHA-256 496 # SHA-384 624 # SHA-512 752 # (public_key, private_key) = adafruit_rsa.newkeys(496) # Create a new secret message message = 'Meet me at 6pm' # Hash the message using SHA-224 hash_method = "SHA-256" signature = adafruit_rsa.sign(message, private_key, hash_method) # Verify Message Signature if adafruit_rsa.verify(message, signature, public_key) != hash_method: raise ValueError( "Verification failed - signature does not match secret message sent!")