Load a private key from disk.  `timestamp` above is intended to be the
    timestamp of the file's last modification. This fn is memoized so if it is
    called with the same path and timestamp (the file's last modified time) the
    second time the result is returned from the memoiziation.  If the file gets
    modified then the params are different and the key is loaded from disk.

def _get_key_with_evict(path, timestamp, passphrase):
    '''
    Load a private key from disk.  `timestamp` above is intended to be the
    timestamp of the file's last modification. This fn is memoized so if it is
    called with the same path and timestamp (the file's last modified time) the
    second time the result is returned from the memoiziation.  If the file gets
    modified then the params are different and the key is loaded from disk.
    '''
    log.debug('salt.crypt._get_key_with_evict: Loading private key')
    if HAS_M2:
        key = RSA.load_key(path, lambda x: six.b(passphrase))
    else:
        with salt.utils.files.fopen(path) as f:
            key = RSA.importKey(f.read(), passphrase)
    return key