예제 #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 *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;
}
예제 #3
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;
}
예제 #4
0
파일: ipc.c 프로젝트: hno/fribid
static void sendSignCommon(PipeInfo *pipeinfo, const Plugin *plugin) {
    pipe_sendString(pipeinfo->out, plugin->info.auth.challenge);
    pipe_sendInt(pipeinfo->out, plugin->info.auth.serverTime);
    pipe_sendOptionalString(pipeinfo->out, plugin->info.auth.policys);
    pipe_sendOptionalString(pipeinfo->out, plugin->info.auth.subjectFilter);
}