Earlier quoted context omitted.
Since you insist on a longer explanation, here goes: You can have crypto primitives in the browser: AES, RSA, ECDSA, etc. So given a private key and cyphertext you can decrypt it and given a public key and a piece of cyphertext you can encrypt it. The actual crypto code is just a callout to libssl. In this regard, you can do this right now: simply wrap libssl from within Chrome's JS engine and you are done. Now what?…
Except that HTTPS does not let you encrypt/decrypt data using your own key for example. I am thinking of things like S/MIME.
Once again, why would you use S/MIME in the browser? It is an insecure environment BY DESIGN. It cannot be made secure. Ever. So stop thinking of S/MIME. Or think through how you would actually secure it. Then realize that it cannot be done.