forked from rachanon/stdbWeb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
3.4 KiB
83 lines
3.4 KiB
9 years ago
|
jsrsasign
|
||
|
=========
|
||
|
|
||
|
The 'jsrsasign' (RSA-Sign JavaScript Library) is an opensource free pure JavaScript cryptographic library supports RSA/RSAPSS/ECDSA/DSA signing/validation, ASN.1, PKCS#1/5/8 private/public key, X.509 certificate, CRL, CMS SignedData, TimeStamp and CAdES and JSON Web Signature(JWS)/Token(JWT)/Key(JWK).
|
||
|
|
||
|
Public page is http://kjur.github.com/jsrsasign .
|
||
|
|
||
|
[github TOP](http://kjur.github.io/jsrsasign/)|[API doc](http://kjur.github.io/jsrsasign/api/)|[Wiki](https://github.com/kjur/jsrsasign/wiki)|[Node sample](https://github.com/kjur/jsrsasign/tree/master/sample_node)
|
||
|
|
||
|
DIFFERENCE WITH CRYPTO MODULE
|
||
|
-----------------------------
|
||
|
|
||
|
Here is the difference between bundled ['Crypto' module](http://nodejs.org/api/crypto.html)
|
||
|
and this 'jsrsasign' module.
|
||
|
|
||
|
- Crypto module
|
||
|
- fast
|
||
|
- works only on Node.js
|
||
|
- OpenSSL based
|
||
|
- lacking ASN.1 functionality
|
||
|
- provides symmetric ciphers
|
||
|
- lacking RSAPSS signing
|
||
|
- jsrsasign module
|
||
|
- slow
|
||
|
- implemented in pure JavaScript
|
||
|
- works on both Node.js(server) and browsers(client)
|
||
|
- provides ASN.1 parsing/generation functionality
|
||
|
- lacking symmetric ciphers
|
||
|
- provides RSAPSS signing
|
||
|
- also provides support for JSON Web Signatures (JWS) and JSON Web Token (JWT)
|
||
|
|
||
|
AVAILABLE CLASSES AND METHODS
|
||
|
-----------------------------
|
||
|
|
||
|
Most of the classes and methods defined in jsrsasign and jsjws are
|
||
|
available in this jsrsasign npm module.
|
||
|
|
||
|
After loading the module,
|
||
|
|
||
|
> var r = require('jsrsasign');
|
||
|
|
||
|
You can refer name spaces, classes, methods and functions
|
||
|
by following variables:
|
||
|
|
||
|
- r.BigInteger - BigInteger class
|
||
|
- r.RSAKey - [RSAKey class](http://kjur.github.io/jsrsasign/api/symbols/RSAKey.html)
|
||
|
- r.ECDSA - [KJUR.crypto.ECDSA class](http://kjur.github.io/jsrsasign/api/symbols/KJUR.crypto.ECDSA.html)
|
||
|
- r.DSA - [KJUR.crypto.DSA class](http://kjur.github.io/jsrsasign/api/symbols/KJUR.crypto.DSA.html)
|
||
|
- r.Signature - [KJUR.crypto.Signature class](http://kjur.github.io/jsrsasign/api/symbols/KJUR.crypto.Signature.html)
|
||
|
- r.MessageDigest - [KJUR.crypto.MessageDigest class](http://kjur.github.io/jsrsasign/api/symbols/KJUR.crypto.MessageDigest.html)
|
||
|
- r.Mac - [KJUR.crypto.Mac class](http://kjur.github.io/jsrsasign/api/symbols/KJUR.crypto.Mac.html)
|
||
|
- r.KEYUTIL - [KEYUTIL class](http://kjur.github.io/jsrsasign/api/symbols/KEYUTIL.html)
|
||
|
- r.ASN1HEX - [ASN1HEX class](http://kjur.github.io/jsrsasign/api/symbols/ASN1HEX.html)
|
||
|
- r.crypto - [KJUR.crypto name space](http://kjur.github.io/jsrsasign/api/symbols/KJUR.crypto.html)
|
||
|
- r.asn1 - [KJUR.asn1 name space](http://kjur.github.io/jsrsasign/api/symbols/KJUR.asn1.html)
|
||
|
- r.jws - [KJUR.jws name space](http://kjur.github.io/jsjws/api/)
|
||
|
|
||
|
Please see API reference in the above links.
|
||
|
|
||
|
EXAMPLE(1) SIGNATURE
|
||
|
--------------------
|
||
|
|
||
|
Loading encrypted PKCS#5 private key:
|
||
|
|
||
|
> var fs = require('fs');
|
||
|
> var pem = fs.readFileSync('z1.prv.p5e.pem', 'binary');
|
||
|
> var prvKey = a.KEYUTIL.getKey(pem, 'passwd');
|
||
|
|
||
|
Sign string 'aaa' with the loaded private key:
|
||
|
|
||
|
> var sig = new a.Signature({alg: 'SHA1withRSA'});
|
||
|
> sig.init(prvKey);
|
||
|
> sig.updateString('aaa');
|
||
|
> var sigVal = sig.sign();
|
||
|
> sigVal
|
||
|
'd764dcacb...'
|
||
|
|
||
|
MORE TUTORIALS AND SAMPLES
|
||
|
--------------------
|
||
|
- [Tutorials in GitHub Wiki](https://github.com/kjur/jsrsasign/wiki)
|
||
|
- [Sample Node Scripts](https://github.com/kjur/jsrsasign/tree/master/sample_node)
|
||
|
|