Added string identifier for Connection String
This commit is contained in:
parent
d7e57fbb66
commit
dde0c71cfc
|
@ -24,6 +24,10 @@ const (
|
||||||
Sending
|
Sending
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
connectionStringID = "cs"
|
||||||
|
)
|
||||||
|
|
||||||
type ConnectionParams struct {
|
type ConnectionParams struct {
|
||||||
version ConnectionParamVersion
|
version ConnectionParamVersion
|
||||||
netIP net.IP
|
netIP net.IP
|
||||||
|
@ -47,9 +51,10 @@ func NewConnectionParams(netIP net.IP, port int, publicKey *ecdsa.PublicKey, aes
|
||||||
// ToString generates a string required for generating a secure connection to another Status device.
|
// ToString generates a string required for generating a secure connection to another Status device.
|
||||||
//
|
//
|
||||||
// The returned string will look like below:
|
// The returned string will look like below:
|
||||||
// - "2:4FHRnp:H6G:uqnnMwVUfJc2Fkcaojet8F1ufKC3hZdGEt47joyBx9yd:BbnZ7Gc66t54a9kEFCf7FW8SGQuYypwHVeNkRYeNoqV6:2"
|
// - "cs2:4FHRnp:H6G:uqnnMwVUfJc2Fkcaojet8F1ufKC3hZdGEt47joyBx9yd:BbnZ7Gc66t54a9kEFCf7FW8SGQuYypwHVeNkRYeNoqV6:2"
|
||||||
//
|
//
|
||||||
// Format bytes encoded into a base58 string, delimited by ":"
|
// Format bytes encoded into a base58 string, delimited by ":"
|
||||||
|
// - string type identifier
|
||||||
// - version
|
// - version
|
||||||
// - net.IP
|
// - net.IP
|
||||||
// - port
|
// - port
|
||||||
|
@ -64,15 +69,19 @@ func (cp *ConnectionParams) ToString() string {
|
||||||
ek := base58.Encode(cp.aesKey)
|
ek := base58.Encode(cp.aesKey)
|
||||||
m := base58.Encode(new(big.Int).SetInt64(int64(cp.serverMode)).Bytes())
|
m := base58.Encode(new(big.Int).SetInt64(int64(cp.serverMode)).Bytes())
|
||||||
|
|
||||||
return fmt.Sprintf("%s:%s:%s:%s:%s:%s", v, ip, p, k, ek, m)
|
return fmt.Sprintf("%s%s:%s:%s:%s:%s:%s", connectionStringID, v, ip, p, k, ek, m)
|
||||||
}
|
}
|
||||||
|
|
||||||
// FromString parses a connection params string required for to securely connect to another Status device.
|
// FromString parses a connection params string required for to securely connect to another Status device.
|
||||||
// This function parses a connection string generated by ToString
|
// This function parses a connection string generated by ToString
|
||||||
func (cp *ConnectionParams) FromString(s string) error {
|
func (cp *ConnectionParams) FromString(s string) error {
|
||||||
|
if s[:2] != connectionStringID {
|
||||||
|
return fmt.Errorf("connection string doesn't begin with identifier '%s'", connectionStringID)
|
||||||
|
}
|
||||||
|
|
||||||
requiredParams := 6
|
requiredParams := 6
|
||||||
|
|
||||||
sData := strings.Split(s, ":")
|
sData := strings.Split(s[2:], ":")
|
||||||
if len(sData) != requiredParams {
|
if len(sData) != requiredParams {
|
||||||
return fmt.Errorf("expected data '%s' to have length of '%d', received '%d'", s, requiredParams, len(sData))
|
return fmt.Errorf("expected data '%s' to have length of '%d', received '%d'", s, requiredParams, len(sData))
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
connectionString = "2:4FHRnp:Q4:uqnnMwVUfJc2Fkcaojet8F1ufKC3hZdGEt47joyBx9yd:BbnZ7Gc66t54a9kEFCf7FW8SGQuYypwHVeNkRYeNoqV6:3"
|
connectionString = "cs2:4FHRnp:Q4:uqnnMwVUfJc2Fkcaojet8F1ufKC3hZdGEt47joyBx9yd:BbnZ7Gc66t54a9kEFCf7FW8SGQuYypwHVeNkRYeNoqV6:3"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestConnectionParamsSuite(t *testing.T) {
|
func TestConnectionParamsSuite(t *testing.T) {
|
||||||
|
|
Loading…
Reference in New Issue