Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Full OpenSSL Implementation #87

Open
sempervictus opened this issue Jan 29, 2018 · 5 comments
Open

Full OpenSSL Implementation #87

sempervictus opened this issue Jan 29, 2018 · 5 comments

Comments

@sempervictus
Copy link

The current OpenSSL bindings are rather scarce, normal crypto and validation ops available in Ruby, Python, etc arent there. At present, the openssl.cr shard is also out of order at least on arch due to missing functions in the libssl version compared to what that shard was written for, leaving no good options on the table. Brixen's rubysl openssl might be a good reference implementation, although its written in C bindings instead of FFI.

@RX14
Copy link

RX14 commented Jan 29, 2018

Also, in the future we're probably going to remove the OpenSSL module in the stdlib, and replace it with small implementation-portable modules for specific tasks, for example Digest, TLS, MAC etc. The full abilities of openssl definitely shouldn't make it into the stdlib for crystal 1.0. Having a shard to point people to would be a good thing as we're removing OpenSSL.

@sempervictus
Copy link
Author

sempervictus commented Jan 29, 2018 via email

@RX14
Copy link

RX14 commented Jan 29, 2018

@sempervictus Oh I absolutely realise the need for a full openssl binding.

I just absolutely think it shouldn't be in the stdlib, it should be an official shard.

@sempervictus
Copy link
Author

sempervictus commented Jan 30, 2018 via email

@RX14
Copy link

RX14 commented Jan 30, 2018

@sempervictus we'll provide generic interfaces over simple, easy to use functions like TLS, SHA1, HMAC, etc in the stdlib.

These will be implemented likely at first with openssl, but the implementation will be generic so that for example libressl's libtls can be supported, or gnutls (for TLS), or libsodium (for other crypto stuff), or maybe native implementations. It doesn't matter what implements these APIs, just that they can be implemented by other libraries, instead of being deeply tied to openssl's API. The latter is what I want to avoid getting into 1.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants