@@ -25,6 +25,7 @@ const (
2525 typeRemotePublicKey tlv.Type = 11
2626 typeMacaroonRecipe tlv.Type = 12
2727 typeCreatedAt tlv.Type = 13
28+ typeRevokedAt tlv.Type = 14
2829
2930 // typeMacaroon is no longer used, but we leave it defined for backwards
3031 // compatibility.
@@ -58,8 +59,13 @@ func SerializeSession(w io.Writer, session *Session) error {
5859 pairingSecret = session .PairingSecret [:]
5960 privateKey = session .LocalPrivateKey .Serialize ()
6061 createdAt = uint64 (session .CreatedAt .Unix ())
62+ revokedAt uint64
6163 )
6264
65+ if ! session .RevokedAt .IsZero () {
66+ revokedAt = uint64 (session .RevokedAt .Unix ())
67+ }
68+
6369 if session .DevServer {
6470 devServer = 1
6571 }
@@ -105,6 +111,10 @@ func SerializeSession(w io.Writer, session *Session) error {
105111 tlvRecords , tlv .MakePrimitiveRecord (typeCreatedAt , & createdAt ),
106112 )
107113
114+ tlvRecords = append (
115+ tlvRecords , tlv .MakePrimitiveRecord (typeRevokedAt , & revokedAt ),
116+ )
117+
108118 tlvStream , err := tlv .NewStream (tlvRecords ... )
109119 if err != nil {
110120 return err
@@ -117,12 +127,12 @@ func SerializeSession(w io.Writer, session *Session) error {
117127// the data to be encoded in the tlv format.
118128func DeserializeSession (r io.Reader ) (* Session , error ) {
119129 var (
120- session = & Session {}
121- label , serverAddr []byte
122- pairingSecret , privateKey []byte
123- state , typ , devServer uint8
124- expiry , createdAt uint64
125- macRecipe MacaroonRecipe
130+ session = & Session {}
131+ label , serverAddr []byte
132+ pairingSecret , privateKey []byte
133+ state , typ , devServer uint8
134+ expiry , createdAt , revokedAt uint64
135+ macRecipe MacaroonRecipe
126136 )
127137 tlvStream , err := tlv .NewStream (
128138 tlv .MakePrimitiveRecord (typeLabel , & label ),
@@ -144,6 +154,7 @@ func DeserializeSession(r io.Reader) (*Session, error) {
144154 macaroonRecipeEncoder , macaroonRecipeDecoder ,
145155 ),
146156 tlv .MakePrimitiveRecord (typeCreatedAt , & createdAt ),
157+ tlv .MakePrimitiveRecord (typeRevokedAt , & revokedAt ),
147158 )
148159 if err != nil {
149160 return nil , err
@@ -162,6 +173,10 @@ func DeserializeSession(r io.Reader) (*Session, error) {
162173 session .ServerAddr = string (serverAddr )
163174 session .DevServer = devServer == 1
164175
176+ if revokedAt != 0 {
177+ session .RevokedAt = time .Unix (int64 (revokedAt ), 0 )
178+ }
179+
165180 if t , ok := parsedTypes [typeMacaroonRecipe ]; ok && t == nil {
166181 session .MacaroonRecipe = & macRecipe
167182 }
0 commit comments