A proposal like this has popped up before. Perhaps you could address some of the arguments made there. The primary one being that improvements to crypto should happen in OTP.
https://groups.google.com/forum/#!searchin/elixir-lang-core/crypto%7Csort:date/elixir-lang-core/J-Idvs6ije8/eC-pmklSBQAJ Allen Madsen http://www.allenmadsen.com On Wed, Oct 3, 2018 at 7:45 PM Mark Madsen <[email protected]> wrote: > Crypto is super hard. And super important. > > Currently Elixir pushes users to call Erlang when working with crypto. > This doesn't align with Elixirs goal of developer productivity. > > My experience on working with Erlang's crypto application is: > > - It is intimidating for newcomer who are just learning Elixir. > - While Erlang provides documentation, none of it refers back > to Public Key Cryptography Standards directly making it difficult to work > with or understand in the context of other libraries and code. > - Erlang provides building blocks, but they require writing a bunch of > work to be useful (were starting to see this with pbcs extracted out of hex > and now the work to extract plug_crypto out of plug). > - the data structures, for example the data structure for a > certificate, are hard to work with. > > This has resulted in a couple hex packages up to this date to handle > PKCS#5 and PKCS#7 padding. > And more recently PBCS was extracted out of Hex > https://github.com/hexpm/pbcs and there's work ongoing to extract the > crypto out of Plug https://github.com/elixir-plug/plug_crypto > > Another candidate is the certificate generation in Phoenix from > https://github.com/phoenixframework/phoenix/blob/master/lib/mix/tasks/phx.gen.cert.ex > - I think much of the code in there should be extracted. It shouldn't live > in a mix task, but instead should come along with language. (not trying to > pick on @voltone, I am very grateful for his work there, I wouldn't have > done any better.) > > But I'm personally guilty of worse. I have a bunch of code needed to parse > certificates to extract details and provisioning profiles to extract PKCS#7 > signature details. > > Crypto is so important that I think we need a central place to interact > with any of the Public Key Cryptography Standards. Ideally we could have > support for: > > - PublicKey/PrivateKey > - X509 > - PKCS#5 > - PKCS#7/CMS > - PKCS#10 > - PKCS#12 > > It would give us an opportunity to write documentation around the usage of > the functions to help out newcomers and provide data structures that are > easier to work with in Elixir. It also puts as much of this code as > possible in a central place where we can get a lot of eyes > > I know this is going to be a lot of work. If I had to do it myself it'd > probably take a couple years given the time I have to work on this kinda > stuff and that assumes its my only priority (which it isn't). But I also > see some of the pieces of this happening in separate places right now and > if everyone contributed the work they are extracting from their codebases > to one spot we'd probably be 30% or more done. > > Eventually I think this is important enough that it should be part of > Elixir, but to iterate on it initially I think it should be done > separately. > > So I propose that someone makes https://github.com/elixir-lang/crypto and > we start planning this out there. :) > > Thanks > > Mark (@idyll) > > -- > You received this message because you are subscribed to the Google Groups > "elixir-lang-core" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elixir-lang-core/dcf99a35-8a2b-4022-830e-983075b486d1%40googlegroups.com > <https://groups.google.com/d/msgid/elixir-lang-core/dcf99a35-8a2b-4022-830e-983075b486d1%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/CAK-y3CtwAKdpRrGVzBCHGvE7HkfbgYwVe9h8%3Dky2nRNtSTXpZg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
