go-ethereum/p2p/client_identity.go

71 lines
1.5 KiB
Go
Raw Normal View History

2014-10-23 10:57:54 -05:00
package p2p
import (
"fmt"
"runtime"
)
// ClientIdentity represents the identity of a peer.
2014-10-23 10:57:54 -05:00
type ClientIdentity interface {
2015-01-18 02:03:39 -06:00
String() string // human readable identity
Pubkey() []byte // 512-bit public key
PrivKey() []byte // 512-bit private key
2014-10-23 10:57:54 -05:00
}
type SimpleClientIdentity struct {
clientIdentifier string
version string
customIdentifier string
os string
implementation string
2015-01-18 02:03:39 -06:00
privkey []byte
2015-01-04 07:20:16 -06:00
pubkey []byte
2014-10-23 10:57:54 -05:00
}
2015-01-18 02:03:39 -06:00
func NewSimpleClientIdentity(clientIdentifier string, version string, customIdentifier string, privkey []byte, pubkey []byte) *SimpleClientIdentity {
2014-10-23 10:57:54 -05:00
clientIdentity := &SimpleClientIdentity{
clientIdentifier: clientIdentifier,
version: version,
customIdentifier: customIdentifier,
os: runtime.GOOS,
implementation: runtime.Version(),
pubkey: pubkey,
2015-01-18 02:03:39 -06:00
privkey: privkey,
2014-10-23 10:57:54 -05:00
}
return clientIdentity
}
func (c *SimpleClientIdentity) init() {
}
func (c *SimpleClientIdentity) String() string {
var id string
if len(c.customIdentifier) > 0 {
id = "/" + c.customIdentifier
}
return fmt.Sprintf("%s/v%s%s/%s/%s",
c.clientIdentifier,
c.version,
id,
c.os,
c.implementation)
}
2015-01-18 02:03:39 -06:00
func (c *SimpleClientIdentity) Privkey() []byte {
return c.privkey
}
2014-10-23 10:57:54 -05:00
func (c *SimpleClientIdentity) Pubkey() []byte {
2015-01-18 02:03:39 -06:00
return c.pubkey
2014-10-23 10:57:54 -05:00
}
func (c *SimpleClientIdentity) SetCustomIdentifier(customIdentifier string) {
c.customIdentifier = customIdentifier
}
func (c *SimpleClientIdentity) GetCustomIdentifier() string {
return c.customIdentifier
}