renderSigningKeys_() {
    return new goog.Promise(function(resolve, reject) {
      this.actionExecutor_.execute(
          /** @type {!e2e.ext.messages.ApiRequest} */ (
              {action: constants.Actions.LIST_KEYS, content: 'private'}),
          this, goog.bind(function(privateKeyResult) {
            var availableSigningKeys = goog.object.getKeys(privateKeyResult);
            var signerSelect =
                goog.dom.getElement(constants.ElementId.SIGNER_SELECT);
            var signCheck =
                goog.dom.getElement(constants.ElementId.SIGN_MESSAGE_CHECK);

            if (availableSigningKeys.length == 0) {
              signCheck.disabled = true;
              signerSelect.disabled = true;
              var noKeysLabel = document.createTextNode(
                  chrome.i18n.getMessage('promptNoPrivateKeysFound'));
              var fromHolder =
                  goog.dom.getElement(constants.ElementId.FROM_HOLDER);
              fromHolder.appendChild(noKeysLabel);
            } else {
              signCheck.checked = true;
            }

            goog.array.forEach(availableSigningKeys, function(key) {
              var keyElem = document.createElement('option');
              keyElem.textContent = key;
              signerSelect.appendChild(keyElem);
            });
            resolve();
          }, this), goog.bind(function(error) {
            this.errorCallback_(error);
            resolve();
          }, this));
    }, this);
  }
Renders the available signing keys in the UI.
@return {!goog.Promise} Promise resolved when the signing keys have
    been successfully rendered. It's never rejected.
@private