12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- "use strict";
- // ./test.js
- var assert = require("assert")
- , Keygrip = require("./")
- , keylist, keys, hash, index
- // keygrip takes an array of keys. If missing or empty, it will throw.
- assert.throws(function() {
- keys = new Keygrip(/* empty list */);
- }, /must be provided/);
- // Randomly generated key - don't use this for something real. Don't be that person.
- keys = new Keygrip(['06ae66fdc6c2faf5a401b70e0bf885cb']);
- // .sign returns the hash for the first key
- // all hashes are SHA1 HMACs in url-safe base64
- hash = keys.sign("bieberschnitzel")
- assert.ok(/^[\w\-]{27}$/.test(hash))
- // but we're going to use our list.
- // (note that the 'new' operator is optional)
- keylist = ["SEKRIT3", "SEKRIT2", "SEKRIT1"] // keylist will be modified in place, so don't reuse
- keys = Keygrip(keylist)
- testKeygripInstance(keys);
- // now pass in a different hmac algorithm and encoding
- keylist = ["Newest", "AnotherKey", "Oldest"]
- keys = Keygrip(keylist, "sha256", "hex")
- testKeygripInstance(keys);
- function testKeygripInstance(keys) {
- hash = keys.sign("bieberschnitzel")
-
- // .index returns the index of the first matching key
- index = keys.index("bieberschnitzel", hash)
- assert.equal(index, 0)
-
- // .verify returns the a boolean indicating a matched key
- var matched = keys.verify("bieberschnitzel", hash)
- assert.ok(matched)
-
- index = keys.index("bieberschnitzel", "o_O")
- assert.equal(index, -1)
-
- // rotate a new key in, and an old key out
- keylist.unshift("SEKRIT4")
- keylist.pop()
-
- // if index > 0, it's time to re-sign
- index = keys.index("bieberschnitzel", hash)
- assert.equal(index, 1)
- hash = keys.sign("bieberschnitzel")
- }
|