Client-Side JavaScript (Web Crypto RSA-PSS SHA-256) File Signer

The Web Crypto JavaScript API makes it possible to perform cryptographic operations entirely on the client. No cryptographic information is created on or sent to a server. So, for example, if you create and save a new key pair, only you (and—ephemerally—your trusted browser) have those keys; there is no opportunity for a server to surreptitiously capture and store them.
create new key pair save private key... save public key...
sign save signature...
verify
reset everything