I am working on a project for pets, which (in the end, when it is done) will allow for secure file transfer (there is more than simple, but the rest is not particularly relevant). I would like to use the OpenSSL library as it seems to be the most complete free cryptography library (and I need basic symmetric encryption and hash support in addition to SSL / TLS).
I am looking for an implementation of a security scheme similar to SSH. Basically, a user will connect to my computer using TLSv1 (SSLv3.1). I want the connection to be successful, regardless of security. Then I want to check the public key (not a full certificate) that the user used. This key will be compared with the known public keys, and if it matches, then the user will be allowed access to a specific set of commands. If this does not match, the user will have the opportunity to use the connection to apply, so that his / her public key is added to my collection, but apart from this, he could not access my services.
I have no particular need for certificates. It would be much easier for me if I could just skip all the certificate data and work only with raw encryption keys. This is because this model follows the web trust model, not the hierarchical model used by most SSL / TLS connections, so I don't need CA certificates or subscriptions.
Unfortunately, the documentation for most OpenSSL, well, is generally missing. All the relevant articles that I find seem to be busy setting up a “standard” SSL / TLS connection, where the server certificate is verified down to the set of root certificates. This may be useful, but it’s hard for me to figure out how to connect to these non-traditional SSL connections.
Can anyone suggest any articles or documents that can help me figure out how to do this?
(The use of OpenSSL is not set in stone, and I can switch to another library if it provides a better way to do this, as well as hashing [SHA-512] and symmetric encryption [AES]. With the goal of targeting Linux, but it would be nice, if the end product were portable for Windows so my friends could use it too.)
Ethan
source share