2013-03-03 19 views
8

Qualcuno conosce una buona implementazione per i flussi codificati C++ utilizzando OpenSSL? Qualcosa che si estende o avvolge std :: istream e std :: ostream?Flussi crittografati OpenSSL

So che questo potrebbe essere fatto con boost (flusso di filtraggio) ma non voglio includere boost solo per quello. Qualche suggerimento non boost?

+2

Se si aggiunge una dipendenza in ogni caso, cosa c'è di sbagliato con boost? – rhashimoto

+0

Sì, sembra strano. Si desidera aggiungere OpenSSL come dipendenza, * e * qualche altra dipendenza non specificata che avvolge il primo in un flusso C++. Quindi ... perché questa dipendenza non specificata non può essere una libreria Boost? – jalf

+0

@jalf: OpenSSL è già stato aggiunto come dipendenza. Voglio evitare di usare boost a causa del tempo di compilazione già enorme. Se dovessi scegliere di utilizzare boost, dovrò comunque completarlo e implementare i filtri effettivi. Questo può essere fatto, ma vorrei qualcosa di meglio. – Ha11owed

risposta

1
+0

sfortunatamente i tuoi collegamenti non mostrano come avvolgere std :: istream e std :: ostream, mostrano solo come usarli come input e output per il metodo encrypt-decrypt. – Ha11owed

+0

Desidero avvolgere gli stream in modo che la decrittografia/crittografia possa essere eseguita in modo trasparente dalla mia applicazione senza dover utilizzare un file temporaneo o un blocco di memoria temporaneo. – Ha11owed

1

Se lo vuoi fare da solo:

sottoclasse std :: streambuf per l'uso con TCP o SSL (funzionano praticamente allo stesso modo quando il socket è aperto). Quindi puoi creare std :: istream e std :: ostream usando lo streambuf. Se non vuoi std :: iostream, puoi creare due streambufs, uno per l'input e uno per l'output.

std :: docs streambuf (per lo più concentrarsi solo in caso di overflow e underflow): http://www.cplusplus.com/reference/streambuf/streambuf/

E un piccolo tutorial su come utilizzare direttamente libssl.

http://www.ibm.com/developerworks/linux/library/l-openssl/index.html

+0

+1 Perché questo è vicino a ciò che voglio raggiungere. Questo mi sembra pericoloso, non ho mai implementato qualcosa di simile prima, e molti dei metodi virtuali che avrei dovuto implementare, non solo l'overflow e l'underflow, sono un po 'criptici per me. – Ha11owed

+0

Vale la pena farlo almeno una volta. Soprattutto per imparare come funzionano le funzioni di streaming di stdlib. La documentazione è relativamente semplice. –