Example #1
0
 def test_load_public_key_failure_filename_passed_is_not_a_file(self):
     ''' load_public_key should fail if filename passed is not a file '''
     filename = '/tmp'
     self.assertTrue(os.path.isdir(filename))
     with self.assertRaises(OSError) as cm:
         crypto.load_public_key(filename)
     self.assertEqual(cm.exception.errno, 21)
Example #2
0
 def test_load_public_key_failure_invalid_key_file(self):
     ''' load_public_key should fail if we pass an invalid key file '''
     filename = '/tmp/random_file_' + ''.join(
         random.SystemRandom().choice(string.ascii_uppercase +
                                      string.digits) for _ in range(10))
     with os.fdopen(os.open(filename, os.O_WRONLY | os.O_CREAT, 0o600),
                    'w') as handle:
         handle.write('invalid_key')
     with self.assertRaises(ValueError) as cm:
         crypto.load_public_key(filename)
     os.remove(filename)
Example #3
0
 def test_load_public_key_failure_no_read_permission(self):
     ''' load_public_key should fail if we have no read permission over filename '''
     filename = '/tmp/random_file_' + ''.join(
         random.SystemRandom().choice(string.ascii_uppercase +
                                      string.digits) for _ in range(10))
     with os.fdopen(os.open(filename, os.O_WRONLY | os.O_CREAT, 0o200),
                    'w') as handle:
         handle.write('')
     with self.assertRaises(OSError) as cm:
         crypto.load_public_key(filename)
     os.remove(filename)
     self.assertEqual(cm.exception.errno, 13)
Example #4
0
 def test_load_public_key_failure_private_key_filename_passed(self):
     ''' load_public_key should fail if we pass the private key file instead of the private one '''
     random_string = ''.join(
         random.SystemRandom().choice(string.ascii_uppercase +
                                      string.digits) for _ in range(10))
     privkey_file = os.path.join('/tmp/', random_string + '.priv')
     pubkey_file = os.path.join('/tmp/', random_string + '.pub')
     privkey = crypto.generate_rsa_key()
     pubkey_generated = privkey.public_key()
     crypto.store_keys(privkey=privkey,
                       privkey_file=privkey_file,
                       pubkey_file=pubkey_file)
     with self.assertRaises(UnsupportedAlgorithm) as cm:
         loadedkey = crypto.load_public_key(privkey_file)
     os.remove(privkey_file)
     os.remove(pubkey_file)
Example #5
0
 def test_load_public_key_success(self):
     ''' load_public_key should succeed and return the public key '''
     random_string = ''.join(
         random.SystemRandom().choice(string.ascii_uppercase +
                                      string.digits) for _ in range(10))
     privkey_file = os.path.join('/tmp/', random_string + '.priv')
     pubkey_file = os.path.join('/tmp/', random_string + '.pub')
     privkey = crypto.generate_rsa_key()
     pubkey_generated = privkey.public_key()
     crypto.store_keys(privkey=privkey,
                       privkey_file=privkey_file,
                       pubkey_file=pubkey_file)
     pubkey_loaded = crypto.load_public_key(pubkey_file)
     os.remove(privkey_file)
     os.remove(pubkey_file)
     self.assertIsNotNone(pubkey_loaded)
     self.assertEqual(crypto.serialize_public_key(pubkey_generated),
                      crypto.serialize_public_key(pubkey_loaded))
Example #6
0
 def test_load_public_key_failure_non_existent_file(self):
     ''' load_public_key should fail if filename does not exists '''
     filename = '/a/path/to/nonexistentfile'
     with self.assertRaises(OSError) as cm:
         crypto.load_public_key(filename)
     self.assertEqual(cm.exception.errno, 2)