From 1e574942d586bb26f659f9ebee9ec90d778ecb97 Mon Sep 17 00:00:00 2001 From: Yawning Angel Date: Sat, 23 Aug 2014 05:33:23 +0000 Subject: Change all the arguments to use base16 from base64. WARNING: THIS BREAKS BACKWARD COMPATIBILITY. This is primarily to work around bug #12930. Base16 was chosen over unpadded Base64 because the go runtime Base64 decoder does not handle omitting the padding. May $deity have mercy on anyone who needs to hand-enter an obfs4 bridge line because I will not. --- transports/obfs4/obfs4.go | 8 ++++---- transports/obfs4/statefile.go | 19 +++++++------------ 2 files changed, 11 insertions(+), 16 deletions(-) (limited to 'transports') diff --git a/transports/obfs4/obfs4.go b/transports/obfs4/obfs4.go index fbfea27..f9b02ad 100644 --- a/transports/obfs4/obfs4.go +++ b/transports/obfs4/obfs4.go @@ -117,8 +117,8 @@ func (t *Transport) ServerFactory(stateDir string, args *pt.Args) (base.ServerFa // Store the arguments that should appear in our descriptor for the clients. ptArgs := pt.Args{} - ptArgs.Add(nodeIDArg, st.nodeID.Base64()) - ptArgs.Add(publicKeyArg, st.identityKey.Public().Base64()) + ptArgs.Add(nodeIDArg, st.nodeID.Hex()) + ptArgs.Add(publicKeyArg, st.identityKey.Public().Hex()) // Initialize the replay filter. filter, err := replayfilter.New(replayTTL) @@ -154,7 +154,7 @@ func (cf *obfs4ClientFactory) ParseArgs(args *pt.Args) (interface{}, error) { return nil, fmt.Errorf("missing argument '%s'", nodeIDArg) } var nodeID *ntor.NodeID - if nodeID, err = ntor.NodeIDFromBase64(nodeIDStr); err != nil { + if nodeID, err = ntor.NodeIDFromHex(nodeIDStr); err != nil { return nil, err } @@ -163,7 +163,7 @@ func (cf *obfs4ClientFactory) ParseArgs(args *pt.Args) (interface{}, error) { return nil, fmt.Errorf("missing argument '%s'", publicKeyArg) } var publicKey *ntor.PublicKey - if publicKey, err = ntor.PublicKeyFromBase64(publicKeyStr); err != nil { + if publicKey, err = ntor.PublicKeyFromHex(publicKeyStr); err != nil { return nil, err } diff --git a/transports/obfs4/statefile.go b/transports/obfs4/statefile.go index e727f7d..378eefa 100644 --- a/transports/obfs4/statefile.go +++ b/transports/obfs4/statefile.go @@ -28,7 +28,6 @@ package obfs4 import ( - "encoding/base64" "encoding/json" "fmt" "io/ioutil" @@ -85,17 +84,13 @@ func serverStateFromJSONServerState(js *jsonServerState) (*obfs4ServerState, err var err error st := new(obfs4ServerState) - if st.nodeID, err = ntor.NodeIDFromBase64(js.NodeID); err != nil { + if st.nodeID, err = ntor.NodeIDFromHex(js.NodeID); err != nil { return nil, err } - if st.identityKey, err = ntor.KeypairFromBase64(js.PrivateKey); err != nil { + if st.identityKey, err = ntor.KeypairFromHex(js.PrivateKey); err != nil { return nil, err } - var rawSeed []byte - if rawSeed, err = base64.StdEncoding.DecodeString(js.DrbgSeed); err != nil { - return nil, err - } - if st.drbgSeed, err = drbg.SeedFromBytes(rawSeed); err != nil { + if st.drbgSeed, err = drbg.SeedFromHex(js.DrbgSeed); err != nil { return nil, err } @@ -138,10 +133,10 @@ func newJSONServerState(stateDir string, js *jsonServerState) (err error) { } // Encode it into JSON format and write the state file. - js.NodeID = st.nodeID.Base64() - js.PrivateKey = st.identityKey.Private().Base64() - js.PublicKey = st.identityKey.Public().Base64() - js.DrbgSeed = st.drbgSeed.Base64() + js.NodeID = st.nodeID.Hex() + js.PrivateKey = st.identityKey.Private().Hex() + js.PublicKey = st.identityKey.Public().Hex() + js.DrbgSeed = st.drbgSeed.Hex() var encoded []byte if encoded, err = json.Marshal(js); err != nil { -- cgit v1.2.3