itAdd some damlib style cleanups. - tordam - A library for peer discovery inside the Tor network Err parazyd.org 70 hgit clone https://git.parazyd.org/tordam URL:https://git.parazyd.org/tordam parazyd.org 70 1Log /git/tordam/log.gph parazyd.org 70 1Files /git/tordam/files.gph parazyd.org 70 1Refs /git/tordam/refs.gph parazyd.org 70 1README /git/tordam/file/README.md.gph parazyd.org 70 1LICENSE /git/tordam/file/LICENSE.gph parazyd.org 70 i--- Err parazyd.org 70 1commit c787512bf95b13fd861fa7d881d2e10dbfb408d0 /git/tordam/commit/c787512bf95b13fd861fa7d881d2e10dbfb408d0.gph parazyd.org 70 1parent 66f1745bb34516d63b6bbde0e3dedf4dcbc41543 /git/tordam/commit/66f1745bb34516d63b6bbde0e3dedf4dcbc41543.gph parazyd.org 70 hAuthor: parazyd URL:mailto:parazyd@dyne.org parazyd.org 70 iDate: Tue, 13 Mar 2018 11:36:34 +0100 Err parazyd.org 70 i Err parazyd.org 70 iAdd some damlib style cleanups. Err parazyd.org 70 i Err parazyd.org 70 iDiffstat: Err parazyd.org 70 i M pkg/damlib/crypto_25519.go | 42 ++++++++----------------------- Err parazyd.org 70 i M pkg/damlib/crypto_rsa.go | 14 ++++---------- Err parazyd.org 70 i M pkg/damlib/validate.go | 6 +++--- Err parazyd.org 70 i Err parazyd.org 70 i3 files changed, 17 insertions(+), 45 deletions(-) Err parazyd.org 70 i--- Err parazyd.org 70 1diff --git a/pkg/damlib/crypto_25519.go b/pkg/damlib/crypto_25519.go /git/tordam/file/pkg/damlib/crypto_25519.go.gph parazyd.org 70 it@@ -48,16 +48,9 @@ func SavePubEd25519(filename string, key ed25519.PublicKey) error { Err parazyd.org 70 i log.Println("Writing ed25519 public key to", filename) Err parazyd.org 70 i const pkprefix = "== ed25519v1-public: type0 ==" Err parazyd.org 70 i var pub []byte Err parazyd.org 70 i- for _, i := range []byte(pkprefix) { Err parazyd.org 70 i- pub = append(pub, i) Err parazyd.org 70 i- } Err parazyd.org 70 i- for _, i := range []byte(key) { Err parazyd.org 70 i- pub = append(pub, i) Err parazyd.org 70 i- } Err parazyd.org 70 i- if err := ioutil.WriteFile(filename, pub, 0600); err != nil { Err parazyd.org 70 i- return err Err parazyd.org 70 i- } Err parazyd.org 70 i- return nil Err parazyd.org 70 i+ pub = append(pub, []byte(pkprefix)...) Err parazyd.org 70 i+ pub = append(pub, []byte(key)...) Err parazyd.org 70 i+ return ioutil.WriteFile(filename, pub, 0600) Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i // SavePrivEd25519 writes a ed25519.PrivateKey type to a given string filename. Err parazyd.org 70 it@@ -66,16 +59,9 @@ func SavePrivEd25519(filename string, key ed25519.PrivateKey) error { Err parazyd.org 70 i log.Println("Writing ed25519 private key to", filename) Err parazyd.org 70 i const skprefix = "== ed25519v1-secret: type0 ==" Err parazyd.org 70 i var sec []byte Err parazyd.org 70 i- for _, i := range []byte(skprefix) { Err parazyd.org 70 i- sec = append(sec, i) Err parazyd.org 70 i- } Err parazyd.org 70 i- for _, i := range []byte(key) { Err parazyd.org 70 i- sec = append(sec, i) Err parazyd.org 70 i- } Err parazyd.org 70 i- if err := ioutil.WriteFile(filename, sec, 0600); err != nil { Err parazyd.org 70 i- return err Err parazyd.org 70 i- } Err parazyd.org 70 i- return nil Err parazyd.org 70 i+ sec = append(sec, []byte(skprefix)...) Err parazyd.org 70 i+ sec = append(sec, []byte(key)...) Err parazyd.org 70 i+ return ioutil.WriteFile(filename, sec, 0600) Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i // OnionFromPubkeyEd25519 generates a valid onion address from a given ed25519 Err parazyd.org 70 it@@ -101,24 +87,16 @@ func OnionFromPubkeyEd25519(pubkey ed25519.PublicKey) []byte { Err parazyd.org 70 i const versConst = '\x03' Err parazyd.org 70 i Err parazyd.org 70 i var h []byte Err parazyd.org 70 i- for _, i := range []byte(hashConst) { Err parazyd.org 70 i- h = append(h, i) Err parazyd.org 70 i- } Err parazyd.org 70 i- for _, i := range []byte(pubkey) { Err parazyd.org 70 i- h = append(h, i) Err parazyd.org 70 i- } Err parazyd.org 70 i+ h = append(h, []byte(hashConst)...) Err parazyd.org 70 i+ h = append(h, []byte(pubkey)...) Err parazyd.org 70 i h = append(h, byte(versConst)) Err parazyd.org 70 i Err parazyd.org 70 i csum := sha3.Sum256(h) Err parazyd.org 70 i checksum := csum[:2] Err parazyd.org 70 i Err parazyd.org 70 i var enc []byte Err parazyd.org 70 i- for _, i := range []byte(pubkey) { Err parazyd.org 70 i- enc = append(enc, i) Err parazyd.org 70 i- } Err parazyd.org 70 i- for _, i := range checksum { Err parazyd.org 70 i- enc = append(enc, i) Err parazyd.org 70 i- } Err parazyd.org 70 i+ enc = append(enc, []byte(pubkey)...) Err parazyd.org 70 i+ enc = append(enc, checksum...) Err parazyd.org 70 i enc = append(enc, byte(versConst)) Err parazyd.org 70 i Err parazyd.org 70 i encoded := base32.StdEncoding.EncodeToString(enc) Err parazyd.org 70 1diff --git a/pkg/damlib/crypto_rsa.go b/pkg/damlib/crypto_rsa.go /git/tordam/file/pkg/damlib/crypto_rsa.go.gph parazyd.org 70 it@@ -55,10 +55,10 @@ func GenRsa(bitSize int) (*rsa.PrivateKey, error) { Err parazyd.org 70 i func SavePubRsa(filename string, pubkey rsa.PublicKey) error { Err parazyd.org 70 i log.Println("Writing RSA pubkey to", filename) Err parazyd.org 70 i outfile, err := os.Create(filename) Err parazyd.org 70 i- defer outfile.Close() Err parazyd.org 70 i if err != nil { Err parazyd.org 70 i return err Err parazyd.org 70 i } Err parazyd.org 70 i+ defer outfile.Close() Err parazyd.org 70 i asn1Bytes, err := asn1.Marshal(pubkey) Err parazyd.org 70 i if err != nil { Err parazyd.org 70 i return err Err parazyd.org 70 it@@ -70,10 +70,7 @@ func SavePubRsa(filename string, pubkey rsa.PublicKey) error { Err parazyd.org 70 i if err = pem.Encode(outfile, pemkey); err != nil { Err parazyd.org 70 i return err Err parazyd.org 70 i } Err parazyd.org 70 i- if err = outfile.Chmod(0400); err != nil { Err parazyd.org 70 i- return err Err parazyd.org 70 i- } Err parazyd.org 70 i- return nil Err parazyd.org 70 i+ return outfile.Chmod(0400) Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i // SavePrivRsa saves a given RSA private key to a given filename. Err parazyd.org 70 it@@ -82,10 +79,10 @@ func SavePubRsa(filename string, pubkey rsa.PublicKey) error { Err parazyd.org 70 i func SavePrivRsa(filename string, privkey *rsa.PrivateKey) error { Err parazyd.org 70 i log.Printf("Writing private key to %s\n", filename) Err parazyd.org 70 i outfile, err := os.Create(filename) Err parazyd.org 70 i- defer outfile.Close() Err parazyd.org 70 i if err != nil { Err parazyd.org 70 i return err Err parazyd.org 70 i } Err parazyd.org 70 i+ defer outfile.Close() Err parazyd.org 70 i var pemkey = &pem.Block{ Err parazyd.org 70 i Type: "RSA PRIVATE KEY", Err parazyd.org 70 i Bytes: x509.MarshalPKCS1PrivateKey(privkey), Err parazyd.org 70 it@@ -93,10 +90,7 @@ func SavePrivRsa(filename string, privkey *rsa.PrivateKey) error { Err parazyd.org 70 i if err = pem.Encode(outfile, pemkey); err != nil { Err parazyd.org 70 i return err Err parazyd.org 70 i } Err parazyd.org 70 i- if err = outfile.Chmod(0400); err != nil { Err parazyd.org 70 i- return err Err parazyd.org 70 i- } Err parazyd.org 70 i- return nil Err parazyd.org 70 i+ return outfile.Chmod(0400) Err parazyd.org 70 i } Err parazyd.org 70 i Err parazyd.org 70 i // LoadRsaKeyFromFile loads a RSA private key from a given filename. Err parazyd.org 70 1diff --git a/pkg/damlib/validate.go b/pkg/damlib/validate.go /git/tordam/file/pkg/damlib/validate.go.gph parazyd.org 70 it@@ -32,7 +32,7 @@ import ( Err parazyd.org 70 i // ValidateOnionAddress matches a string against a regular expression matching Err parazyd.org 70 i // a Tor hidden service address. Returns true on success and false on failure. Err parazyd.org 70 i func ValidateOnionAddress(addr string) bool { Err parazyd.org 70 i- re, _ := regexp.Compile("^[a-z2-7](?:.{55}|.{15})\\.onion") Err parazyd.org 70 i+ re, _ := regexp.Compile(`^[a-z2-7](?:.{55}|.{15})\.onion`) Err parazyd.org 70 i if len(re.FindString(addr)) == 22 || len(re.FindString(addr)) == 62 { Err parazyd.org 70 i return true Err parazyd.org 70 i } Err parazyd.org 70 it@@ -129,7 +129,7 @@ func ValidateFirstHandshake(req map[string]string) (bool, string) { Err parazyd.org 70 i // Validate signature. Err parazyd.org 70 i msg := []byte(req["message"]) Err parazyd.org 70 i decSig, _ := base64.StdEncoding.DecodeString(req["signature"]) Err parazyd.org 70 i- sig := []byte(decSig) Err parazyd.org 70 i+ sig := decSig Err parazyd.org 70 i pubkey, err := ParsePubkeyRsa([]byte(pub)) // pubkey is their public key in *rsa.PublicKey type Err parazyd.org 70 i CheckError(err) Err parazyd.org 70 i if val, _ := VerifyMsgRsa(msg, sig, pubkey); !(val) { Err parazyd.org 70 it@@ -221,7 +221,7 @@ func ValidateSecondHandshake(req map[string]string) (bool, string) { Err parazyd.org 70 i // Validate signature. Err parazyd.org 70 i msg := []byte(req["message"]) Err parazyd.org 70 i decSig, _ := base64.StdEncoding.DecodeString(req["signature"]) Err parazyd.org 70 i- sig := []byte(decSig) Err parazyd.org 70 i+ sig := decSig Err parazyd.org 70 i pubkey, err := ParsePubkeyRsa([]byte(pub)) // pubkey is their public key in *rsa.PublicKey type Err parazyd.org 70 i CheckError(err) Err parazyd.org 70 i if val, _ := VerifyMsgRsa(msg, sig, pubkey); !(val) { Err parazyd.org 70 .