Files
go-i2p/lib/common/lease.go

68 lines
1.5 KiB
Go
Raw Normal View History

package common
2016-02-14 23:10:37 -08:00
/*
I2P Lease
2016-06-16 23:17:21 -07:00
https://geti2p.net/spec/common-structures#lease
2016-02-14 23:10:37 -08:00
Accurate for version 0.9.24
+----+----+----+----+----+----+----+----+
| tunnel_gw |
+ +
| |
+ +
| |
+ +
| |
+----+----+----+----+----+----+----+----+
| tunnel_id | end_date
+----+----+----+----+----+----+----+----+
|
+----+----+----+----+
tunnel_gw :: Hash of the RouterIdentity of the tunnel gateway
length -> 32 bytes
tunnel_id :: TunnelId
length -> 4 bytes
end_date :: Date
length -> 8 bytes
*/
import (
"github.com/bounce-chat/go-i2p/lib/tunnel"
)
2016-02-14 23:10:37 -08:00
const (
LEASE_SIZE = 44
LEASE_HASH_SIZE = 32
LEASE_TUNNEL_ID_SIZE = 4
)
type Lease [LEASE_SIZE]byte
2016-02-14 23:10:37 -08:00
//
// Return the first 32 bytes of the Lease as a Hash.
//
func (lease Lease) TunnelGateway() (hash Hash) {
copy(hash[:], lease[:LEASE_HASH_SIZE])
return
}
2016-02-14 23:10:37 -08:00
//
// Parse the TunnelID Integer in the Lease.
//
func (lease Lease) TunnelID() tunnel.TunnelID {
return tunnel.TunnelID(
2016-02-14 23:10:37 -08:00
Integer(lease[LEASE_HASH_SIZE : LEASE_HASH_SIZE+LEASE_TUNNEL_ID_SIZE]),
)
}
2016-02-14 23:10:37 -08:00
//
// Return the Date inside the Lease.
//
func (lease Lease) Date() (date Date) {
copy(date[:], lease[LEASE_HASH_SIZE+LEASE_TUNNEL_ID_SIZE:])
return
}