code: 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 kef _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
docs: 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.