コード例 #1
0
ファイル: ipc.c プロジェクト: hno/fribid
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);    
}
コード例 #2
0
ファイル: ipc.c プロジェクト: hno/fribid
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;
}
コード例 #3
0
ファイル: ipc.c プロジェクト: hno/fribid
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;
}
コード例 #4
0
ファイル: ipc.c プロジェクト: streambag/fribid
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;
}
コード例 #5
0
ファイル: ipc.c プロジェクト: hno/fribid
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;
}