<story><title>Swift Crypto</title><url>https://swift.org/blog/crypto/</url></story><parent_chain><item><author>Nullabillity</author><text>&amp;gt; On Apple platforms, Swift Crypto defers directly to CryptoKit, while on all other platforms it uses a brand-new implementation built on top of the BoringSSL library.&lt;p&gt;Oh great, more pointless differences. Just pick one and stick to it. If you trust the BoringSSL version then use it everywhere. If you don&amp;#x27;t, well, why are you using it on the other platforms?&lt;p&gt;I could understand it if it was very platform-specific (async networking, GUI controls, whatever). But come on, BSSL already exists everywhere, you&amp;#x27;re not saving yourself any porting work.</text></item></parent_chain><comment><author>jws</author><text>From most of the way down the page…&lt;p&gt;&lt;i&gt;Given that we had do to this extra work, what advantage is gained from having two backends, instead of consolidating onto a single backend for both CryptoKit and Swift Crypto? The primary advantage is verification. With two independent implementations of the CryptoKit API, we are able to test the implementations against each other as well as their own test suites. This improves reliability and compatibility for both implementations, reducing the changes of regression and making it easy to identify errors by comparing the output of the two implementations.&lt;/i&gt;</text></comment>
<story><title>Swift Crypto</title><url>https://swift.org/blog/crypto/</url></story><parent_chain><item><author>Nullabillity</author><text>&amp;gt; On Apple platforms, Swift Crypto defers directly to CryptoKit, while on all other platforms it uses a brand-new implementation built on top of the BoringSSL library.&lt;p&gt;Oh great, more pointless differences. Just pick one and stick to it. If you trust the BoringSSL version then use it everywhere. If you don&amp;#x27;t, well, why are you using it on the other platforms?&lt;p&gt;I could understand it if it was very platform-specific (async networking, GUI controls, whatever). But come on, BSSL already exists everywhere, you&amp;#x27;re not saving yourself any porting work.</text></item></parent_chain><comment><author>markonen</author><text>Something like hardware offload comes to mind as potentially platform-specific.</text></comment>