Пример #1
0
 def test_load_private_key_failure_filename_passed_is_not_a_file(self):
     ''' load_private_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_private_key(filename)
     self.assertEqual(cm.exception.errno, 21)
Пример #2
0
 def test_load_private_key_failure_invalid_key_file(self):
     ''' load_private_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_private_key(filename)
     os.remove(filename)
Пример #3
0
 def test_load_private_key_failure_no_read_permission(self):
     ''' load_private_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_private_key(filename)
     os.remove(filename)
     self.assertEqual(cm.exception.errno, 13)
Пример #4
0
 def test_load_private_key_failure_public_key_filename_passed(self):
     ''' load_private_key should fail if we pass the public 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(ValueError) as cm:
         loadedkey = crypto.load_private_key(pubkey_file)
     os.remove(privkey_file)
     os.remove(pubkey_file)
Пример #5
0
def get_private_key():
    privkey_file = config.config.key
    if not os.path.isfile(privkey_file):
        logging.logger.debug('Generating RSA keys...')
        key_dir=os.path.dirname(privkey_file)
        pubkey_file=os.path.join(key_dir,defaults.RSA_PUB_KEY)
        privkey=crypto.generate_rsa_key()
        crypto.store_keys(privkey=privkey, privkey_file=privkey_file, pubkey_file=pubkey_file)
        logging.logger.debug('Keys stored successfully on disk')
        pubkey=privkey.public_key()
        key_str=crypto.get_printable_pubkey(pubkey)
        logging.logger.info('This is the public key, add it to your Komlog account:\n'+key_str)
        return privkey
    else:
        privkey=crypto.load_private_key(privkey_file)
        return privkey
Пример #6
0
 def test_load_private_key_success(self):
     ''' load_private_key should succeed and return the private 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)
     loadedkey = crypto.load_private_key(privkey_file)
     pubkey_loaded = privkey.public_key()
     os.remove(privkey_file)
     os.remove(pubkey_file)
     self.assertIsNotNone(loadedkey)
     self.assertEqual(crypto.serialize_public_key(pubkey_generated),
                      crypto.serialize_public_key(pubkey_loaded))
Пример #7
0
 def test_load_private_key_failure_non_existent_file(self):
     ''' load_private_key should fail if filename does not exists '''
     filename = '/a/path/to/nonexistentfile'
     with self.assertRaises(OSError) as cm:
         crypto.load_private_key(filename)
     self.assertEqual(cm.exception.errno, 2)