Re: [jose] JWK Generator - base64url padding

"Manger, James H" <James.H.Manger@team.telstra.com> Wed, 27 March 2013 05:33 UTC

Return-Path: <James.H.Manger@team.telstra.com>
X-Original-To: jose@ietfa.amsl.com
Delivered-To: jose@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A9D1421F902B for <jose@ietfa.amsl.com>; Tue, 26 Mar 2013 22:33:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.9
X-Spam-Level:
X-Spam-Status: No, score=-0.9 tagged_above=-999 required=5 tests=[AWL=-0.000, BAYES_00=-2.599, HELO_EQ_AU=0.377, HOST_EQ_AU=0.327, HTML_MESSAGE=0.001, RELAY_IS_203=0.994]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id WGRuwBFj20G8 for <jose@ietfa.amsl.com>; Tue, 26 Mar 2013 22:33:45 -0700 (PDT)
Received: from ipxbvo.tcif.telstra.com.au (ipxbvo.tcif.telstra.com.au [203.35.135.204]) by ietfa.amsl.com (Postfix) with ESMTP id 2570821F8EAC for <jose@ietf.org>; Tue, 26 Mar 2013 22:33:42 -0700 (PDT)
X-IronPort-AV: E=Sophos; i="4.84,915,1355058000"; d="scan'208,217"; a="126222353"
Received: from unknown (HELO ipcbvi.tcif.telstra.com.au) ([10.97.217.204]) by ipobvi.tcif.telstra.com.au with ESMTP; 27 Mar 2013 16:33:40 +1100
X-IronPort-AV: E=McAfee;i="5400,1158,7026"; a="121868352"
Received: from wsmsg3755.srv.dir.telstra.com ([172.49.40.196]) by ipcbvi.tcif.telstra.com.au with ESMTP; 27 Mar 2013 16:33:40 +1100
Received: from WSMSG3153V.srv.dir.telstra.com ([172.49.40.159]) by WSMSG3755.srv.dir.telstra.com ([172.49.40.196]) with mapi; Wed, 27 Mar 2013 16:33:40 +1100
From: "Manger, James H" <James.H.Manger@team.telstra.com>
To: Richard Barnes <rlb@ipv.sx>, "jose@ietf.org" <jose@ietf.org>
Date: Wed, 27 Mar 2013 16:33:39 +1100
Thread-Topic: [jose] JWK Generator - base64url padding
Thread-Index: Ac4qQ7LTcYSCEeUmSIi5PpSWO84GtgAaFItg
Message-ID: <255B9BB34FB7D647A506DC292726F6E1150BFAA2C0@WSMSG3153V.srv.dir.telstra.com>
References: <5150B533.2080205@mitre.org> <CE8995AB5D178F44A2154F5C9A97CAF4025536DC09D1@HE111541.emea1.cds.t-internal.com> <5151B236.2080001@mitre.org> <CAL02cgSuJTrQrxTPuvNSUfRrqUi5hON87VtYUbWiGJp4V-ZWUA@mail.gmail.com>
In-Reply-To: <CAL02cgSuJTrQrxTPuvNSUfRrqUi5hON87VtYUbWiGJp4V-ZWUA@mail.gmail.com>
Accept-Language: en-US, en-AU
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
acceptlanguage: en-US, en-AU
Content-Type: multipart/alternative; boundary="_000_255B9BB34FB7D647A506DC292726F6E1150BFAA2C0WSMSG3153Vsrv_"
MIME-Version: 1.0
Subject: Re: [jose] JWK Generator - base64url padding
X-BeenThere: jose@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Javascript Object Signing and Encryption <jose.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/jose>, <mailto:jose-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/jose>
List-Post: <mailto:jose@ietf.org>
List-Help: <mailto:jose-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/jose>, <mailto:jose-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 27 Mar 2013 05:33:45 -0000

Richard,

Your base64url encoded fields include “=” padding characters.
We should omit those. Probably need a few extra words in the spec, eg “base64url-encoding (without padding characters)”. The JWE spec mentions omitting the padding in the terminology section.

--
James Manger

From: jose-bounces@ietf.org [mailto:jose-bounces@ietf.org] On Behalf Of Richard Barnes
Sent: Wednesday, 27 March 2013 4:02 AM
To: Justin Richer
Cc: jose@ietf.org; Axel.Nennker@telekom.de
Subject: Re: [jose] JWK Generator

We've got some similar tools in PolyCrypt, our WebCrypto polyfill [1].  One of the demos is a self-signed certificate generator, which outputs private key as a pseudo-JWK [2].

I was going to put a code snippet here to demonstrate how to generate an RSA JWK with PolyCrypt.  Instead I just threw up a new demo page that will do it for you [3].  Sample output:
{"n":"a9_H5i8T7Zg65CUYPGRd4R-Lw7UFiH7guIJ5gQgjJUdnlo6edyVSCux_xV43T-Qe2-SGkRbUirZczdCegfAVjAegVMtnrsgOe_EqhN1CFlmPJ8wwC5Ooyc6u1_FBdu4FL3Kl7jWpII-ikOhZm05xUnj_M7CMMJo6w4PvAAzn-is=","e":"AQAB","d":"ETm1sPL5iqoRVVb7DMG2H_mqlsC0NnyUI8Jp5onHGu_RAcCaW0oxVJ85M-n8iRxTNSfDuS1dGR1PqmnStcsBlZnkwc99vl9gtUW2zAs0J-W3YP88Tk3hNM-6vS2So9-LRMashcWruHBPmLudN-UxGzanvS3G58jkK1BLQCW6xVE=","p":"w8ZngvLVkE3reWvra6vDd3KLJqDHIK602h8yl40vLqX0u5UmXojIqL7k9WpmEn5gvVPsp-XDtkV-50ON9NZD8w==","q":"jQ8KzZ3gHPz-yISa0EbRdI_cmeI03Kq1aAj7bSHDcyr4OjnkI4K6lTVNTGUazf10BrJZ5_2Yj5zOfujV803W6Q==","dp":"m4-Mco3YStjPceTh5OVP5RrcHO6GK58Gz4cYoTmrMwrlYyRJn7Zak1NUBPntb2aCIg6MroCwuaWRB9wy8UhMJw==","dq":"CgIpOBGdlzD0OvH9sg10SxryAhEkwwtxt6H7hPDCV2eTGT6GS2a5KmEPzP3Xewois17wNh-uNXJgzGxk0dCSEQ==","qi":"kZ9MFAYRZKPloUprijuKsJxqfsAVJNINFqqrWr5ycqHLtpmhk6l58wkxFpcU94TJPgf1CaJOj2pGRTyijPa3-w=="}

If you want to use PolyCrypt and need EC, let me know, and I can probably get it implemented pretty quickly.

Hope this helps,
--Richard


[1] <http://polycrypt.net>
[2] <http://demo.polycrypt.net/x509/>
[3] <http://demo.polycrypt.net/jwk/>