Hi everybody,<div><br></div><div>Folks who've been following our issue tracker might have noticed I've been working on a pure-python implementation of key loading, to replace the way we use OpenSSL right now for that. Here's the motivation:</div><div><br></div><div>* The OpenSSL API provides absolutely no flexibility, there's no way to control which encryption algorithms are used for encrypted keys -- this means very old, very bad, algorithms are enabled by default and silently work while providing you basically no protection.</div><div>* The OpenSSL APIs don't handle non-ascii passwords correctly -- I don't know if this is a thing in practice (probably not, chicken and egg)</div><div>* The support key loading algorithms differs quite a bit from backend to backend, this makes the API more consistent depending on which backend you're using.</div><div><br></div><div><br></div><div>So that's the motivation. Before we even start reviewing the patches, I think we need to ask ourselves about the ethical implications of writing this stuff ourselves:</div><div><br></div><div>* Are we qualified to do this? Some of this code, for example the PKCS#12 KDF is straight up crypto. Other parts of it are more-or-less just parsing and ASN.1 handling</div><div>* Parsing and ASN.1 handling still have serious security implications</div><div>* Are we qualified to review this code?</div><div>* On the flip side, we're moving a bunch of code from dangerous C to memory safe Python.</div><div>* We actually write tests, which is probably not true of all of our backends.</div><div><br></div><div>Computationally ethicists, please opine,</div><div>Alex</div>