pub, priv := govpn.NewVerifier(id, govpn.StringFromFile(*keyPath))
conf = &govpn.PeerConf{
- Id: id,
- Timeout: time.Second * time.Duration(timeout),
- NoiseEnable: *noisy,
- CPR: *cpr,
- DSAPub: pub,
- DSAPriv: priv,
+ Id: id,
+ Timeout: time.Second * time.Duration(timeout),
+ Noise: *noisy,
+ CPR: *cpr,
+ DSAPub: pub,
+ DSAPriv: priv,
}
govpn.PeersInitDummy(id, conf)
log.Println(govpn.VersionGet())
--- /dev/null
+/*
+GoVPN -- simple secure free software virtual private network daemon
+Copyright (C) 2014-2015 Sergey Matveev <stargrave@stargrave.org>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+package govpn
+
+import (
+ "time"
+
+ "github.com/agl/ed25519"
+)
+
+type PeerConf struct {
+ Id *PeerId `json:"-"`
+ Name string `json:"name"`
+ Up string `json:"up"`
+ Down string `json:"down"`
+ TimeoutInt int `json:"timeout"`
+ Timeout time.Duration `json:"-"`
+ Noise bool `json:"noise"`
+ CPR int `json:"cpr"`
+ Verifier string `json:"verifier"`
+
+ // This is passphrase verifier
+ DSAPub *[ed25519.PublicKeySize]byte `json:"-"`
+ // This field exists only on client's side
+ DSAPriv *[ed25519.PrivateKeySize]byte `json:"-"`
+}
log.Fatalln("Error reading random for nonce:", err)
}
var enc []byte
- if conf.NoiseEnable {
+ if conf.Noise {
enc = make([]byte, MTU-xtea.BlockSize-RSize)
} else {
enc = make([]byte, 32)
log.Fatalln("Error reading random for S:", err)
}
var encRs []byte
- if h.Conf.NoiseEnable {
+ if h.Conf.Noise {
encRs = make([]byte, MTU-len(encPub)-xtea.BlockSize)
} else {
encRs = make([]byte, RSize+SSize)
// Send final answer to client
var enc []byte
- if h.Conf.NoiseEnable {
+ if h.Conf.Noise {
enc = make([]byte, MTU-xtea.BlockSize)
} else {
enc = make([]byte, RSize)
sign := ed25519.Sign(h.Conf.DSAPriv, h.key[:])
var enc []byte
- if h.Conf.NoiseEnable {
+ if h.Conf.Noise {
enc = make([]byte, MTU-xtea.BlockSize)
} else {
enc = make([]byte, RSize+RSize+SSize+ed25519.SignatureSize)
return []byte(`"` + result + `"`), nil
}
-type PeerConf struct {
- Id *PeerId
- Timeout time.Duration
- NoiseEnable bool
- CPR int
- // This is passphrase verifier
- DSAPub *[ed25519.PublicKeySize]byte
- // This field exists only in dummy configuration on client's side
- DSAPriv *[ed25519.PrivateKeySize]byte
-}
-
type cipherCache map[PeerId]*xtea.Cipher
var (
timeout := conf.Timeout
cprCycle := cprCycleCalculate(conf.CPR)
- noiseEnable := conf.NoiseEnable
+ noiseEnable := conf.Noise
if conf.CPR > 0 {
noiseEnable = true
timeout = cprCycle