J'ai un simple stream_t
tapez en C avec vos opérations de base de lecture/écriture, et la prise en charge de plusieurs implémentations sous-jacentes en utilisant des pointeurs de fonction. Un flux peut donc être sauvegardé par un fichier, un tampon char, etc.Flux de wrapper SSL en C
Un type de flux est un socket POSIX standard, et je voudrais coder un flux wrapper qui va ajouter le support SSL à un flux existant, similaire à SslStream de .NET. Donc, je pourrais écrire quelque chose comme ceci:
stream_t *socket = something(); // wrap existing stream and perform handshake as client stream_t *ssl_stream = ssl_stream_create(socket); ssl_stream_authenticate_as_user(ssl_stream); // now all read/writes are encrypted and passed through to the wrapped stream
J'ai écrit un code de socket SSL avant d'utiliser BIO_new_connect(...)
etc. OpenSSL mais ceci est une API de niveau plus élevé que ce que je dois. Est-ce que OpenSSL expose les fonctions dont j'aurais besoin pour effectuer manuellement le handshake et le cryptage? Ou y at-il une autre bibliothèque que je peux utiliser?