         return passphrase
     }
     
-    private func decryptThenCopyPassword(passwordEntity: PasswordEntity) {
+    private func decryptThenCopyPassword(from indexPath: IndexPath) {
+        guard self.passwordStore.privateKey != nil else {
+            Utils.alert(title: "Cannot Copy Password", message: "PGP Key is not set. Please set your PGP Key first.", controller: self, completion: nil)
+            return
+        }
+        let passwordEntity = getPasswordEntry(by: indexPath).passwordEntity!
+        UIImpactFeedbackGenerator(style: .medium).impactOccurred()
         SVProgressHUD.setDefaultMaskType(.black)
         SVProgressHUD.setDefaultStyle(.dark)
         SVProgressHUD.show(withStatus: "Decrypting")

        if gesture.state == UIGestureRecognizerState.began {
            let touchPoint = gesture.location(in: tableView)
            if let indexPath = tableView.indexPathForRow(at: touchPoint) {
                copyToPasteboard(from: indexPath)
            }
        }
    }

    }
    
    func tableView(_ tableView: UITableView, accessoryButtonTappedForRowWith indexPath: IndexPath) {
        decryptThenCopyPassword(from: indexPath)
    }
    
    private func requestPGPKeyPassphrase() -> String {
        let sem = DispatchSemaphore(value: 0)
