Key IDs take 2, plus public key as an (JWK) array buffer

Hello All:

I updated the key ids idea on my github, mixing in Ryan's object concept: https://github.com/daviddahl/web-crypto-ideas/commit/d0386c76a2c09e69203cfb6ac2476ef1c3588a44

In short:

window.crypto.sym.algorithms.blockenc;     

( instead of ) 
// returns array of strings: ["A128CBC", "A256CBC", "A128GCM","A256GCM"]  

( we have )
// returns an object:
{ A128CBC: true, A256CBC: true, A128GCM: false, A256GCM: false }

Also, I took a stab at key identifiers and  representing a public key as a JWK as an ArrayBuffer:

https://github.com/daviddahl/web-crypto-ideas/blob/master/key-ids.js

In short:

Key ID:

{
  algorithm: "RSA1_5",
  id: "8d88ef7e-3e51-4776-b017-340ba04c954",
  // browsers can create any kind of string ID,
  // perhaps 'mozilla.org/key-234456789.jwk' as well
  boundOrigin: ["w3.org", "mozilla.org"],
}

And, a public key as ArrayBuffer:

// JS object literal:
{
  alg: 1, // 1 = RSA, char: 49
  kid: "https://mozilla.com/key-1234567890.jwk",
  // char: 104,116,116,112,115,58,47,47,109,111,122,105,108,108,97,46,99,111,109,47,107,101,121,45,49,50,51,52,53,54,55,56,57,48,46,106,119,107
  use: 1, // 1 = enc, char: 49
  boundOrigin: "mozilla.com,w3.org", // Not an IETF/Jose property
  // char: 109,111,122,105,108,108,97,46,99,111,109,44,119,51,46,111,114,103
  mod: 1234567, // char: 49,50,51,52,53,54,55
  exp: 1, // char: 49
}

// Imagine the Array buffer's data as:

[49,104,116,116,112,115,58,47,47,109,111,122,105,108,108,97,46,99,111,109,47,107,101,121,45,49,50,51,52,53,54,55,56,57,48,46,106,119,107,49,109,111,122,105,108,108,97,46,99,111,109,44,119,51,46,111,114,103,49,50,51,52,53,54,55,49]

// With header data prepended to the above:
[1,38,1,18,7,1]
// Which is the length of each property

// Naturally, DSA and EC keys would have some differing properties as per: http://tools.ietf.org/html/draft-ietf-jose-json-web-key-02

// Following naturally, perhaps there is a need for a utility method to convert this ArrayBuffer public key to JSON?

var jsonKey = myPublicKey.toJSON();
//returns a JWK object with base64 UrlEncoded properties, etc...

Regards,

David

Received on Thursday, 14 June 2012 03:23:37 UTC