commit e68e6610007a3fcd388c2a93d7e13dbd31ff4d09 Author: David Fifield david@bamsoftware.com Date: Sat Nov 9 16:37:55 2013 -0800
Factor out the reading and validation from readAuthCookieFile.
To facilitatate tests that don't need an actual file with a name. --- pt.go | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/pt.go b/pt.go index b79f08b..28c8639 100644 --- a/pt.go +++ b/pt.go @@ -321,19 +321,11 @@ func getServerBindAddrs(methodNames []string) ([]BindAddr, error) { return result, nil }
-// Read and validate the contents of an auth cookie file. Returns the 32-byte -// cookie. See section 4.2.1.2 of pt-spec.txt. -func readAuthCookieFile(filename string) ([]byte, error) { +func readAuthCookie(f io.Reader) ([]byte, error) { authCookieHeader := []byte("! Extended ORPort Auth Cookie !\x0a") header := make([]byte, 32) cookie := make([]byte, 32)
- f, err := os.Open(filename) - if err != nil { - return cookie, err - } - defer f.Close() - n, err := io.ReadFull(f, header) if err != nil { return cookie, err @@ -357,6 +349,18 @@ func readAuthCookieFile(filename string) ([]byte, error) { return cookie, nil }
+// Read and validate the contents of an auth cookie file. Returns the 32-byte +// cookie. See section 4.2.1.2 of pt-spec.txt. +func readAuthCookieFile(filename string) ([]byte, error) { + f, err := os.Open(filename) + if err != nil { + return nil, err + } + defer f.Close() + + return readAuthCookie(f) +} + // This structure is returned by ServerSetup. It consists of a list of // BindAddrs, an address for the ORPort, an address for the extended ORPort (if // any), and an authentication cookie (if any).