Implementing key providers is, programmatically, very similar to defining encryption methods (or any other ctools plugins, for that matter). The paramters of a key provider plugin are as follows:
title
  Required. The human-readable name for your key provider. This will appear on the Encrypt admin page.
description
  Required. A brief description of your key provider. Also appears in smaller text on the Encrypt admin page.
key callback
  Required. This is the name of a function that you define in your plugin file. This function will be responsible for return an encryption key of some kind.
dependencies
  Optional. The name of a function in your plugin file that declares whether or not a key provider's dependencies have been met. The function should return an array of error messages (if there are any) or an empty array or FALSE if all dependencies are met. For example:

      /**
       * Callback to see if the MCrypt library is present.
       */
      function _mcrypt_extension_is_present() {
        $errors = array();

        if (!function_exists('mcrypt_encrypt')) {
          $errors[] = t('MCrypt library not installed.');
        }

        return $errors;
      }

submit callback
  Optional. The name of a function that will be called when the encrypt settings form is saved. This allows plugins to perform additional actions when settings are saved. The function should take the $form and $form_state as arguments, just like most other form submit handlers. See the file key provider plugin for an example.