|
webpg-npapi 0.6.1
|
Initializes the webpgPlugin and sets the status variables. Definition at line 187 of file webpgPluginAPI.cpp. References get_gpgme_ctx(), getPlugin(), and gpgconf_detected(). Referenced by get_webpg_status(), and webpgPluginAPI(). {
gpgme_ctx_t ctx;
gpgme_error_t err;
FB::VariantMap error_map;
FB::VariantMap response;
FB::VariantMap protocol_info, plugin_info;
gpgme_engine_info_t engine_info;
plugin_info["source_url"] = m_host->getDOMWindow()->getLocation();
plugin_info["path"] = getPlugin()->getPluginPath();
plugin_info["params"] = getPlugin()->getPluginParams();
plugin_info["version"] = FBSTRING_PLUGIN_VERSION;
response["plugin"] = plugin_info;
#ifdef _EXTENSIONIZE
response["extensionize"] = true;
std::string location = m_host->getDOMWindow()->getLocation();
size_t firefox_ext = location.find("chrome://");
size_t chrome_ext = location.find("chrome-extension://");
response["extension"] = (chrome_ext != std::string::npos) ?
"chrome" : (firefox_ext != std::string::npos) ? "firefox" : "unknown";
#endif
/* Initialize the locale environment.
* The function `gpgme_check_version` must be called before any other
* function in the library, because it initializes the thread support
* subsystem in GPGME. (from the info page) */
std::string gpgme_version = (char *) gpgme_check_version(NULL);
setlocale (LC_ALL, "");
gpgme_set_locale (NULL, LC_CTYPE, setlocale (LC_CTYPE, NULL));
#ifdef LC_MESSAGES
gpgme_set_locale (NULL, LC_MESSAGES, setlocale (LC_MESSAGES, NULL));
#endif
err = gpgme_engine_check_version (GPGME_PROTOCOL_OpenPGP);
if (err != GPG_ERR_NO_ERROR)
error_map = get_error_map(__func__, gpgme_err_code (err), gpgme_strerror (err), __LINE__, __FILE__);
if (error_map.size()) {
response["openpgp_valid"] = false;
response["error"] = true;
response["error_map"] = error_map;
webpgPluginAPI::webpg_status_map = error_map;
gpgme_invalid = true;
return;
}
ctx = get_gpgme_ctx();
response["error"] = false;
response["gpgme_valid"] = true;
response["gpgconf_detected"] = gpgconf_detected();
if (!gpgconf_detected())
response["gpgconf_response"] = gpgme_strerror (gpgme_engine_check_version (GPGME_PROTOCOL_GPGCONF));
response["gpgme_version"] = gpgme_version;
engine_info = gpgme_ctx_get_engine_info (ctx);
if (engine_info) {
if (engine_info->file_name)
protocol_info["file_name"] = (char *) engine_info->file_name;
if (engine_info->version)
protocol_info["version"] = (char *) engine_info->version;
if (engine_info->home_dir)
protocol_info["home_dir"] = (char *) engine_info->home_dir;
if (engine_info->req_version)
protocol_info["req_version"] = (char *) engine_info->req_version;
response[(char *) gpgme_get_protocol_name (engine_info->protocol)] = protocol_info;
} else {
response["OpenPGP"] = get_error_map(__func__, gpgme_err_code (err), gpgme_strerror (err), __LINE__, __FILE__);
}
response["GNUPGHOME"] = GNUPGHOME;
// Retrieve the GPG_AGENT_INFO environment variable
char *gpg_agent_info = getenv("GPG_AGENT_INFO");
if (gpg_agent_info != NULL) {
response["gpg_agent_info"] = gpg_agent_info;
} else {
response["gpg_agent_info"] = "unknown";
}
if (ctx)
gpgme_release (ctx);
webpgPluginAPI::webpg_status_map = response;
};
Here is the call graph for this function:
![]() |
1.7.4