昨日あたりからpure JavaScriptの暗号ライブラリjsrsasignと、JSON Web Token (JWT)やJSON Web Signatures (JWS)を生成、検証できるライブラリjsjwsを合体させて、最近流行りらしいサーバーサイドJavaScriptであるNode.js用のパッケージ https://npmjs.org/package/jsrsasign として公開しています。
Node.jsでは、基本的にOpenSSLベースの標準モジュールCryptoがあって、あまりjsrsasignの出番は少ないとも思うんですが、コマンドラインインタープリタで例えばASN.1作ったり、読んだり、 JWS ができたりして結構楽しめます。そういう意味では惜しげもなくほとんどすべてのクラス、名前空間、メソッドにNode.jsからアクセスできるようにしています。
Node.jsは適当に検索してインストールしてもらうとして、jsrsasignのnpmをインストールするにはこんな感じ。
% npm install jsrsasign
で、Node.jsインタプリタを起動します。
% node
下準備としてファイル入出力とjsrsasignをロードしておきます。
> var r = require('jsrsasign');
> var fs = require('fs');
そんで、試しに暗号化されたPKCS#5 RSA秘密鍵ファイルを読み込んでみましょう。
> var pem = fs.fileReadSync('z1.prv.p5e.pem', 'ascii');
> var prvKey = r.KEYUTIL.getKey(pem, 'passwd');
試しにプリントする
> prvKey
{ n:
{ '0', 18414937 ...
ふむふむ大丈夫そうだ。
ほいで、JWS署名なんかしてみちゃいましょう。
> r.jws.JWS.sign(null, '{"alg":"RS256"}', '{"fruit":"orange"}', prvKey);
'eyJhbGciOiJSUzI1NiJ9.eyJmcnVpdCI6Im9yYW5nZSJ9.uuYgjlhRGbQyxw-Zx0sqgrbc5WNIUh7ow
M1m_lLM_JpRJuL8XdgANr7hkp09yFSxK7EzqZYrC_iMQjz72d7-wg'
読めないでしょうけど(汗)、JWSはちゃんとできてるっぽいですね。ってなわけで、コマンドラインでJWS作ったり、署名したり、ハッシュ計算したり、ASN.1作ったりいろいろできるので遊んでみてください。
今日はこんなとこで