bool certGetProperty(CertInstance *obj, NPIdentifier name, NPVariant *variant) { NPUTF8* nameString = browserFunctions->utf8fromidentifier(name); EstEID_log("name=%s", (char *)nameString); if(isSameIdentifier(name, "id")){ return copyStringToNPVariant(EstEID_getCertHash(obj->certificate), variant); } if(isSameIdentifier(name, "certificateAsHex") || isSameIdentifier(name, "cert")){ return copyStringToNPVariant(obj->certificateAsHex, variant); } if(isSameIdentifier(name, "issuerCN")){ return copyStringToNPVariant(obj->issuerCN, variant); } if(isSameIdentifier(name, "CN")){ EstEID_log("CN=%s", obj->CN); return copyStringToNPVariant(obj->CN, variant); } if(isSameIdentifier(name, "validTo")){ return copyStringToNPVariant(obj->validTo, variant); } if(isSameIdentifier(name, "validFrom")){ return copyStringToNPVariant(obj->validFrom, variant); } if(isSameIdentifier(name, "keyUsage")){ return copyStringToNPVariant("Non-Repudiation", variant); } return false; }
bool certHasProperty(NPClass *theClass, NPIdentifier name) { FAIL_IF_NOT_ALLOWED_SITE static char *certProperties[] = {"id", "cert", "CN", "issuerCN", "keyUsage", "validFrom", "validTo", "certSerialNumber", "certificateAsPEM", "certificateAsHex"}; for (unsigned i = 0u; i < sizeof(certProperties) / sizeof(char *); i++) { if (isSameIdentifier(name, certProperties[i])) return true; } return false; }
bool pluginInvoke(PluginInstance *obj, NPIdentifier name, NPVariant *args, unsigned argCount, NPVariant *result) { LOG_LOCATION; EstEID_clear_error(); EstEID_setLocale(pluginLanguage); if (isSameIdentifier(name, "sign")) { return doSign(obj, args, argCount, result); } if (isSameIdentifier(name, "getCertificate")) { return doGetCertificate(obj, result); } if (isSameIdentifier(name, "getVersion")) { return pluginGetProperty(obj, browserFunctions->getstringidentifier("version"), result); } EstEID_log("obj=%p, name=%p, argCount=%u", obj, name, argCount); return false; }
bool pluginSetProperty(PluginInstance *obj, NPIdentifier name, const NPVariant *variant) { LOG_LOCATION; if(isSameIdentifier(name, "pluginLanguage")) { memset(pluginLanguage, '\0', 3); if(NPVARIANT_IS_STRING(*variant)) { strncpy(pluginLanguage, NPVARIANT_TO_STRING(*variant).UTF8Characters, 2); return true; } return true; } return false; }
bool pluginHasProperty(NPClass *theClass, NPIdentifier name) { return isSameIdentifier(name, "version") || isSameIdentifier(name, "errorMessage") || isSameIdentifier(name, "errorCode") || isSameIdentifier(name, "authCert") || isSameIdentifier(name, "pluginLanguage") || isSameIdentifier(name, "signCert"); }
bool pluginGetProperty(PluginInstance *obj, NPIdentifier name, NPVariant *variant) { LOG_LOCATION; if (isSameIdentifier(name, "version")) return copyStringToNPVariant(ESTEID_PLUGIN_VERSION, variant); else if (isSameIdentifier(name, "errorMessage")){ EstEID_log("Reading error message: %s", EstEID_error); return copyStringToNPVariant(EstEID_error, variant); } else if (isSameIdentifier(name, "errorCode")) { INT32_TO_NPVARIANT(EstEID_errorCode, *variant); EstEID_log("returning errorCode=%i", EstEID_errorCode); return true; } else if (isSameIdentifier(name, "authCert") || isSameIdentifier(name, "signCert")){ return doGetCertificate(obj, variant); } else if (isSameIdentifier(name, "pluginLanguage")){ return copyStringToNPVariant(pluginLanguage, variant); } EstEID_log("returning false"); return false; }
bool certInvoke(CertInstance *obj, NPIdentifier name, NPVariant *args, uint32_t argCount, NPVariant *result) { if (isSameIdentifier(name, "toString")) { return certGetProperty(obj, browserFunctions->getstringidentifier("CN"), result); } return false; }
bool certHasMethod(NPObject *npobj, NPIdentifier name) { return isSameIdentifier(name, "toString"); }
bool pluginHasMethod(PluginInstance *obj, NPIdentifier name) { return isSameIdentifier(name, "sign") || isSameIdentifier(name, "getCertificate") || isSameIdentifier(name, "getVersion"); }