void regutil_storeCertificates(Plugin *plugin, const char *certs) { PipeInfo pipeinfo; openPipes(&pipeinfo, plugin); sendHeader(&pipeinfo, plugin, PC_StoreCertificates); pipe_sendOptionalString(pipeinfo.out, certs); plugin->lastError = waitReply(&pipeinfo); closePipes(&pipeinfo); }
char *version_getVersion(Plugin *plugin) { PipeInfo pipeinfo; openPipes(&pipeinfo, plugin); sendHeader(&pipeinfo, plugin, PC_GetVersion); pipe_finishCommand(pipeinfo.out); char *version = pipe_readString(pipeinfo.in); closePipes(&pipeinfo); return version; }
int sign_performAction_Authenticate(Plugin *plugin) { PipeInfo pipeinfo; openPipes(&pipeinfo, plugin); sendHeader(&pipeinfo, plugin, PC_Authenticate); sendSignCommon(&pipeinfo, plugin); plugin->lastError = waitReply(&pipeinfo); plugin->info.auth.signature = pipe_readString(pipeinfo.in); closePipes(&pipeinfo); return plugin->lastError; }
int sign_performAction_Sign(Plugin *plugin) { PipeInfo pipeinfo; openPipes(&pipeinfo, plugin); sendHeader(&pipeinfo, plugin, PC_Sign); sendSignCommon(&pipeinfo, plugin); pipe_sendString(pipeinfo.out, plugin->info.sign.message); pipe_sendOptionalString(pipeinfo.out, plugin->info.sign.invisibleMessage); plugin->lastError = waitReply(&pipeinfo); plugin->info.auth.signature = pipe_readString(pipeinfo.in); closePipes(&pipeinfo); return plugin->lastError; }
char *regutil_createRequest(Plugin *plugin) { PipeInfo pipeinfo; openPipes(&pipeinfo, plugin); sendHeader(&pipeinfo, plugin, PC_CreateRequest); // Send password policy pipe_sendInt(pipeinfo.out, plugin->info.regutil.input.minPasswordLength); pipe_sendInt(pipeinfo.out, plugin->info.regutil.input.minPasswordNonDigits); pipe_sendInt(pipeinfo.out, plugin->info.regutil.input.minPasswordDigits); // Send PKCS10 info RegutilPKCS10 *pkcs10 = plugin->info.regutil.input.pkcs10; while (pkcs10) { pipe_sendInt(pipeinfo.out, PLS_MoreData); pipe_sendInt(pipeinfo.out, pkcs10->keyUsage); pipe_sendInt(pipeinfo.out, pkcs10->keySize); pipe_sendOptionalString(pipeinfo.out, pkcs10->subjectDN); pipe_sendInt(pipeinfo.out, pkcs10->includeFullDN); pkcs10 = pkcs10->next; } pipe_sendInt(pipeinfo.out, PLS_End); // Send CMC info RegutilCMC *cmc = &plugin->info.regutil.input.cmc; pipe_sendOptionalString(pipeinfo.out, cmc->oneTimePassword); pipe_sendOptionalString(pipeinfo.out, cmc->rfc2729cmcoid); plugin->lastError = waitReply(&pipeinfo); char *request = pipe_readString(pipeinfo.in); if (plugin->lastError) { free(request); request = NULL; } closePipes(&pipeinfo); return request; }