예제 #1
0
  def _EncryptedVolumeAction(self, *unused_args):
    passwd = self.input_pass.get()

    try:
      client_ = self._Authenticate(self.EncryptedVolumePrompt)
    except glue.Error as e:
      return self.ShowFatalError(e)

    action_dict = self.ACTIONS
    self._PrepTop('Doing: %s...' % action_dict[self.action.get()])

    volume_uuid = self.unlock_volume.get()
    message = None

    try:
      passphrase = client_.RetrieveSecret(volume_uuid)
    except base_client.Error as e:
      return self.ShowFatalError(e)

    if self.action.get() == self.REVERT_ACTION:
      corestorage.RevertVolume(volume_uuid, passphrase)
      message = 'Volume reverted successfully: %s' % volume_uuid
    elif self.action.get() == self.UNLOCK_ACTION:
      corestorage.UnlockVolume(volume_uuid, passphrase)
      message = 'Volume unlocked successfully: %s' % volume_uuid
    elif self.action.get() == self.DISPLAY_ACTION:
      self._PrepTop()
      Tkinter.Label(self.top_frame, text='').pack(fill=Tkinter.Y, expand=True)
      Tkinter.Label(
          self.top_frame,
          text='Here is the recovery token.  Be careful with it.').pack()
      e = Tkinter.Entry(self.top_frame, width=self.WRAPLENGTH)
      e.pack(fill=Tkinter.Y, expand=False)
      e.insert(Tkinter.END, passphrase)
      e.configure(state='readonly')
      Tkinter.Label(self.top_frame, text='').pack(fill=Tkinter.Y, expand=True)
      return
    elif self.action.get() == self.ROTATE_KEY_ACTION:
      try:
        recovery_key = glue.UpdateEscrowPassphrase(passwd, passphrase)
      except glue.Error as e:
        return self.ShowFatalError(e.message)

      try:
        client_.UploadPassphrase(volume_uuid, recovery_key)
      except base_client.Error:
        return self.ShowFatalError(glue.ESCROW_FAILED_MESSAGE)
      message = 'Key rotated successfully.'

    if message:
      self._PrepTop(message)
      Tkinter.Button(
          self.top_frame, text='OK', command=self.root.quit
          ).pack()
예제 #2
0
  def _RotateRecoveryKey(self, client_, volume_uuid, passwd):
    """Rotate recovery key."""
    passphrase = None
    first_error = None
    try:
      passphrase = client_.RetrieveSecret(volume_uuid)
    except base_client.Error as e:
      logging.warning(e.message)
      first_error = e

    recovery_key = None
    if passphrase:
      try:
        recovery_key = glue.UpdateEscrowPassphrase(passwd, passphrase)
      except glue.Error as e:
        logging.warning(e.message)
        if not first_error:
          first_error = e
    if not recovery_key:
      try:
        logging.warning('attempting to unlock volume with user key.')
        recovery_key = glue.UpdateEscrowPassphrase(passwd, passwd)
      except glue.Error as e:
        if not first_error:
          first_error = e
        logging.warning(e.message)
        return self.ShowFatalError(first_error.message)

    try:
      client_.UploadPassphrase(volume_uuid, recovery_key)
    except base_client.Error:
      return self.ShowFatalError(glue.ESCROW_FAILED_MESSAGE)
    message = 'Key rotated successfully.'

    self._PrepTop(message)
    Tkinter.Button(
        self.top_frame, text='OK', command=self.root.quit
    ).pack()
예제 #3
0
    def _RotateRecoveryKey(self, client_, volume_uuid, passwd):
        """Rotate the recovery key."""

        recovery_key = None
        try:
            recovery_key = glue.UpdateEscrowPassphrase(self.username, passwd)
        except glue.Error as e:
            logging.warning(e.message)
            return self.ShowFatalError(e.message)

        try:
            client_.UploadPassphrase(volume_uuid, recovery_key)
        except base_client.Error:
            return self.ShowFatalError(glue.ESCROW_FAILED_MESSAGE)
        message = 'Key rotated successfully.'

        self._PrepTop(message)
        Tkinter.Button(self.top_frame, text='OK',
                       command=self.root.quit).pack()