Out of curiosity, I encoded an example JWS object using a notional serialization based on CBOR [1][2]. If you use a lightly optimized format (cbor([unprotected, protected, payload, signature])), then you actually end up being around 33% smaller than the compact representation, around 10% smaller after base64url-encoding the CBOR. And if you don't support protected headers (and there's direct signing), you don't need a base64 encoder/decoder because CBOR supports octet strings natively. Full results below.
Just sayin'. --Richard [1] <http://tools.ietf.org/html/draft-bormann-cbor-06#section-2.2> [2] <http://cbor.me/> Format Size ========================= bare/no metadata 52 JSON 140 Compact 108 CBOR+JSON 104 CBOR+JSON+base64 138 CBOR+arr 72 CBOR+arr+base64 99 { "unprotected": { "alg": "HS256", "kid": "1" }, /* For CBOR */ "payload": "Dulce et decorum est", "signature": h'7626a08d4077a247d5503cadace62686ca015d4efd9ea9ecce00aa94a690eff5' /* For JSON */ "payload": "RHVsY2UgZXQgZGVjb3J1bSBlc3QK", "signature": "h6GulZdo+sCsd2dQ5MaBXKf0AHZ6sAtur1nmCDELPo8" } [ { "alg": "HS256", "kid": "1" }, null, "Dulce et decorum est", h'7626a08d4077a247d5503cadace62686ca015d4efd9ea9ecce00aa94a690eff5' ] JSON {"unprotected":{"alg":"HS256","kid":"1"},"payload":"RHVsY2UgZXQgZGVjb3J1bSBlc3QK","signature":"h6GulZdo+sCsd2dQ5MaBXKf0AHZ6sAtur1nmCDELPo8"} Compact eyJhbGciOiJIUzI1NiIsImtpZCI6IjEifQo.RHVsY2UgZXQgZGVjb3J1bSBlc3QK.h6GulZdo+sCsd2dQ5MaBXKf0AHZ6sAtur1nmCDELPo8 CBOR+JSON a36b756e70726f746563746564a263616c67654853323536636b69646131677061796c6f61647444756c6365206574206465636f72756d20657374697369676e617475726558207626a08d4077a247d5503cadace62686ca015d4efd9ea9ecce00aa94a690eff5 CBOR+JSON+base64 o2t1bnByb3RlY3RlZKJjYWxnZUhTMjU2Y2tpZGExZ3BheWxvYWR0RHVsY2UgZXQgZGVjb3J1bSBlc3Rpc2lnbmF0dXJlWCB2JqCNQHeiR9VQPK2s5iaGygFdTv2eqezOAKqUppDv9Q CBOR+arr [unprotected, protected, payload, signature] 84a263616c67654853323536636b69646131f67444756c6365206574206465636f72756d2065737458207626a08d4077a247d5503cadace62686ca015d4efd9ea9ecce00aa94a690eff5 CBOR+arr+base64 hKJjYWxnZUhTMjU2Y2tpZGEx9nREdWxjZSBldCBkZWNvcnVtIGVzdFggdiagjUB3okfVUDytrOYmhsoBXU79nqnszgCqlKaQ7/U
_______________________________________________ jose mailing list [email protected] https://www.ietf.org/mailman/listinfo/jose
