Documentation ¶
Index ¶
- Constants
- Variables
- func GenerateKeys(r io.Reader) (publicKey PublicKey, privateKey PrivateKey, err error)
- func GeneratePuzzleKeys(r io.Reader, c1 int) (pub PublicKey, priv PrivateKey, err error)
- type FindNodeRequest
- type FindNodeResponse
- type HandshakeRequest
- type ID
- type NodeID
- type PrivateKey
- type Protocol
- type PublicKey
- type Seed
- type Signature
- type Table
- type UpdateResult
- type X
Constants ¶
View Source
const ( SizePublicKey = ed25519.PublicKeySize SizePrivateKey = ed25519.PrivateKeySize SizeSeed = ed25519.SeedSize SizeSignature = ed25519.SignatureSize SizeNodeID = 32 SizeX = SizeNodeID MinSizeID = SizePublicKey + 1 + net.IPv4len + 2 MaxSizeID = SizePublicKey + 1 + net.IPv6len + 2 )
View Source
const ( SizeHandshakeRequest = 2*SizePublicKey + SizeSignature SizeFindNodeRequest = SizePublicKey )
View Source
const ( DefaultC1 = 10 DefaultC2 = 10 )
View Source
const ( SizeTable = SizePublicKey * 8 DefaultBucketSize = 16 )
Variables ¶
View Source
var ( ZeroPublicKey PublicKey ZeroPrivateKey PrivateKey ZeroSeed Seed ZeroSignature Signature ZeroNodeID NodeID ZeroX X ZeroID ID )
Functions ¶
func GenerateKeys ¶
func GenerateKeys(r io.Reader) (publicKey PublicKey, privateKey PrivateKey, err error)
func GeneratePuzzleKeys ¶
GeneratePuzzleKeys takes O(2^c1).
Types ¶
type FindNodeRequest ¶
type FindNodeRequest struct {
Target PublicKey `json:"public_key"`
}
func UnmarshalFindNodeRequest ¶
func UnmarshalFindNodeRequest(buf []byte) (FindNodeRequest, []byte, error)
func (FindNodeRequest) AppendTo ¶
func (r FindNodeRequest) AppendTo(dst []byte) []byte
type FindNodeResponse ¶
type FindNodeResponse struct {
Closest []ID `json:"closest"`
}
func UnmarshalFindNodeResponse ¶
func UnmarshalFindNodeResponse(buf []byte) (FindNodeResponse, []byte, error)
func (FindNodeResponse) AppendTo ¶
func (r FindNodeResponse) AppendTo(dst []byte) []byte
type HandshakeRequest ¶
type HandshakeRequest struct { PublicKey PublicKey `json:"public_key"` SessionKey PublicKey `json:"session_key"` Signature Signature `json:"signature"` }
func UnmarshalHandshakeRequest ¶
func UnmarshalHandshakeRequest(buf []byte) (HandshakeRequest, []byte, error)
func (HandshakeRequest) AppendTo ¶
func (p HandshakeRequest) AppendTo(dst []byte) []byte
type ID ¶
type PrivateKey ¶
type PrivateKey [SizePrivateKey]byte
func (PrivateKey) Public ¶
func (p PrivateKey) Public() PublicKey
func (PrivateKey) Seed ¶
func (p PrivateKey) Seed() Seed
func (PrivateKey) Sign ¶
func (p PrivateKey) Sign(buf []byte) Signature
func (PrivateKey) String ¶
func (p PrivateKey) String() string
func (PrivateKey) Zero ¶
func (p PrivateKey) Zero() bool
type Protocol ¶
type Protocol struct {
// contains filtered or unexported fields
}
func NewProtocol ¶
func (*Protocol) Handshake ¶
func (p *Protocol) Handshake(packet HandshakeRequest, addr net.Addr) error
func (Protocol) PrivateKey ¶
func (p Protocol) PrivateKey() PrivateKey
type PublicKey ¶
type PublicKey [SizePublicKey]byte
type Signature ¶
type Signature [SizeSignature]byte
type Table ¶
type Table struct {
// contains filtered or unexported fields
}
type UpdateResult ¶
type UpdateResult int
const ( UpdateNew UpdateResult = iota UpdateOk UpdateFull UpdateFail )
Click to show internal directories.
Click to hide internal directories.