A Web Cryptography API shim that provides consistent crypto functionality for legacy browsers like IE11 and Safari 8-10.
webcrypto-shim is a JavaScript library that provides a shim implementation of the W3C Web Cryptography API for legacy browsers. It enables consistent cryptographic operations across different browsers by fixing incomplete or prefixed implementations in browsers like Internet Explorer 11 and Safari 8-10. The library allows developers to use the standard window.crypto.subtle API without worrying about browser-specific differences.
Web developers building applications that require cryptographic operations and need to support legacy browsers like IE11 and older Safari versions. Frontend engineers maintaining enterprise applications with cross-browser compatibility requirements.
Developers choose webcrypto-shim because it provides a lightweight, focused solution for Web Crypto API compatibility without polyfilling modern browsers. It specifically targets only browsers with broken implementations, maintaining native performance in Chrome, Firefox, Edge, and Safari 11+.
Web Cryptography API shim for legacy browsers
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Specifically patches IE11 and Safari 8-10 to use the standard window.crypto.subtle API, while leaving conforming browsers untouched for optimal performance.
Supports essential algorithms including AES-CBC, RSA-OAEP, and HMAC with SHA hashes, enabling common encryption and signing operations across browsers.
Uses Promise/A+ standards with promiz.js for IE11, ensuring consistent asynchronous crypto operations without rewriting code for different vendors.
Only adds overhead where necessary, avoiding unnecessary polyfills in modern environments and maintaining native speed in Chrome, Firefox, and Edge.
Does not implement deriveKey or deriveBits in IE11 and Safari, which limits functionality for password-based encryption or key agreement scenarios.
Relies on Bower for installation, an obsolete tool in contemporary JavaScript development, complicating integration with npm or yarn-based projects.
For RSA-OAEP wrap/unwrap, only the 'jwk' format is supported, reducing flexibility for key exchange with systems using other formats like 'raw' or 'spki'.
AES-CBC and AES-KW operations have TODO notes for tests in the README, indicating potential stability concerns in production environments.