Gah! That's embarrassing. Looks like we have an bug in that tools. (Long day!) In any case, since you're printing a packet which arrived at the server, you'll need to specify server for the first argument. (And then give it a dummy 3rd argument to make it happy :() Something like this:
% quic_packet_printer server 0d12d2b23689078ede513033340131bcf790dedc9021154ee1a0a001140543484c4f0d000000504144004c040000564552005004000043435300600400004d5350436404000050444d44680400004943534c6c0400004354494d740400004e4f4e509404000053434c53980400004353435498040000434f50549c04000043464357a004000053464357a40400002d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d .
OnPacket
OnUnauthenticatedPublicHeader
OnUnauthenticatedHeader: { connection_id: 16036763609022517778, connection_id_length: 8, packet_number_length: 1, multipath_flag: 0, reset_flag: 0, version_flag: 1, version: 34, fec_flag: 0, entropy_flag: 0, entropy hash: 0, path_id: 0, packet_number: 1, is_in_fec_group: 0, fec_group: 0 }
[0527/152710:WARNING:quic_framer.cc(1933)] DecryptPacket failed for packet_number:1
OnError: QUIC_DECRYPTION_FAILURE detail: Unable to decrypt payload.
Decryption fails 'cause this is not the whole packet, obviously. But you'll notice that no diversification nonce is present. The diversification nonce is only present in packet from the server to the client. That being said, you're seeing the "old" 8-byte connection ID length flag. That comes from this code here:
if (perspective_ == Perspective::IS_CLIENT) {
// TODO(rch): Fix this when v33 flags are supported by middle boxes.
public_flags |= PACKET_PUBLIC_FLAGS_8BYTE_CONNECTION_ID_OLD;
}
This code will go away eventually, but since clients can not ever send diversification nonces, the client can send the old flags format to work around some middle boxes that still need to be upgraded. This will go away soon, though. Sorry for the headache!
Cheers,
Ryan