// Loads and parses a private key. func loadKey(path string) *otr.PrivateKey { establishDir(false) base64Key, err := ioutil.ReadFile(path) if os.IsNotExist(err) { exitPrintf("The private key (%s) does not exist. Please use genkey.\n", path) } if err != nil { exitError(err) } rawKey := make([]byte, base64.StdEncoding.DecodedLen(len(base64Key))) n, err := base64.StdEncoding.Decode(rawKey, base64Key) if err != nil { exitError(err) } key := new(otr.PrivateKey) if _, ok := key.Parse(rawKey[:n]); !ok { exitPrintf("Invalid or corrupted private key (%s).\n", path) } return key }