bool doGetCertificate(PluginInstance *obj, NPVariant *result) { LOG_LOCATION; FAIL_IF_NOT_ALLOWED_SITE; char selectedCertID[33]; int dlg_result = 0; dlg_result = promptForCertificate(getNativeWindowHandle(obj), selectedCertID); EstEID_log("Certificate selection dialog result = %i", dlg_result); EstEID_log("Selected certificate ID = %s", selectedCertID); if(dlg_result == IDCANCEL) { sprintf(EstEID_error, "User canceled"); EstEID_errorCode = ESTEID_USER_CANCEL; EstEID_log("EstEID_error = %s", EstEID_error); browserFunctions->setexception(&obj->header, EstEID_error); return false; } CertInstance *certInstance = (CertInstance *)browserFunctions->createobject(obj->npp, certClass()); certInstance->npp = obj->npp; certInstance->certInfo = EstEID_mapClone(EstEID_getNonRepudiationCertById(selectedCertID)); // certInstance->certInfo = EstEID_mapClone(EstEID_getNonRepudiationCert()); EstEID_log("certObject=%p", certInstance); OBJECT_TO_NPVARIANT((NPObject *)certInstance, *result); EstEID_log("result=%p", result); return true; }
bool doGetCertificates(PluginInstance *obj, NPVariant *result) { LOG_LOCATION; EstEID_log("obj=%p, name=doGetCertificates", obj); NPObject *windowObject = NULL; browserFunctions->getvalue(obj->npp, NPNVWindowNPObject, &windowObject); NPVariant array; browserFunctions->invoke(obj->npp, windowObject, browserFunctions->getstringidentifier("Array"), NULL, 0, &array); EstEID_Certs *certs = EstEID_loadCerts(); for (unsigned i = 0u; i < certs->count; i++) { EstEID_Map cert = certs->certs[i]; if (!EstEID_mapGet(cert, "usageNonRepudiation")) continue; CertInstance *certInstance = (CertInstance *)browserFunctions->createobject(obj->npp, certClass()); certInstance->npp = obj->npp; certInstance->certInfo = EstEID_mapClone(cert); browserFunctions->retainobject((NPObject *)certInstance); EstEID_log("certObject=%p", certInstance); NPVariant *arg = (NPVariant *)browserFunctions->memalloc(sizeof(NPVariant)); OBJECT_TO_NPVARIANT((NPObject *)certInstance, *arg); NPVariant ret; browserFunctions->invoke(obj->npp, array.value.objectValue, browserFunctions->getstringidentifier("push"), arg, 1, &ret); } browserFunctions->retainobject(array.value.objectValue); OBJECT_TO_NPVARIANT(array.value.objectValue, *result); return true; }
bool doGetCertificate(PluginInstance *obj, NPVariant *result) { LOG_LOCATION; FAIL_IF_NOT_ALLOWED_SITE; char selectedCertID[33]; int dlg_result = 0; #ifdef _WIN32 HWND ownerWindowHandle = (HWND)getNativeWindowHandle(obj); EstEID_log("owner window handle passed to DialogBoxParam() = %08X", ownerWindowHandle); dlg_result = (int)DialogBoxParam(pluginInstance, MAKEINTRESOURCE(IDD_CERTIFICATESELECTIONDLG), ownerWindowHandle, CertSelectionDialogProc, (LPARAM)selectedCertID); #else dlg_result = promptForCertificate(getNativeWindowHandle(obj), selectedCertID); #endif EstEID_log("Certificate selection dialog result = %i", dlg_result); EstEID_log("Selected certificate ID = %s", selectedCertID); if(dlg_result == IDCANCEL) { sprintf(EstEID_error, "User canceled"); EstEID_errorCode = ESTEID_USER_CANCEL; EstEID_log("EstEID_error = %s", EstEID_error); browserFunctions->setexception(&obj->header, EstEID_error); return false; } if(dlg_result == IDABORT) { sprintf(EstEID_error, "No certificates"); EstEID_errorCode = ESTEID_CERT_NOT_FOUND_ERROR; EstEID_log("EstEID_error = %s", EstEID_error); browserFunctions->setexception(&obj->header, EstEID_error); return false; } CertInstance *certInstance = (CertInstance *)browserFunctions->createobject(obj->npp, certClass()); certInstance->npp = obj->npp; certInstance->certInfo = EstEID_mapClone(EstEID_getNonRepudiationCertById(selectedCertID)); // certInstance->certInfo = EstEID_mapClone(EstEID_getNonRepudiationCert()); EstEID_log("certObject=%p", certInstance); OBJECT_TO_NPVARIANT((NPObject *)certInstance, *result); EstEID_log("result=%p", result); return true; }