Although an active area of research for years, formal verification has still not yet reached widespread deployment. We outline the steps needed to move from low-assurance cryptography, as given by libraries such as OpenSSL, to high assurance cryptography in deployment. In detail, we outline the need for a suite of high-assurance cryptographic software with per-microarchitecture optimizations that maintain competitive speeds with existing hand-optimized assembly and the bundling of these cryptographic primitives in a new API that prevents common developer mistakes. A new unified API with both formally verified primitives and an easy-to-use interface is needed to replace OpenSSL in future security-critical applications.1. first defining clear security goals; 2. then identifying the so-called trusted code base (TCB) i.e., the part of the software system that is critical to achieving these goals; 3. isolating the TCB from the rest of the code, and implementing well-defined interfaces between the TCB and the rest of the code; and 4. assuring that the code in the TCB (including the interfaces) achieves the security goals.Unfortunately, almost none of the above-listed trusted systems are systematically built according to this recipe; they are historically grown, without a clear separation between TCB and "non-critical" code; often even without a clear definition of security goals, and essentially everywhere without high-assurance software in the TCB. As a consequence, we are realizing that our society has trust in untrustworthy low-assurance software.