// loadConfig will try to load the configuration and `fatal` if it is there but // not valid. If the config-file is missing altogether, loaded will be false and // an empty config-file will be returned. func loadConfig(c *cli.Context) (cfg *ciscConfig, loaded bool) { cfg = &ciscConfig{Identity: &identity.Identity{}} loaded = true configFile := getConfig(c) log.Lvl2("Loading from", configFile) buf, err := ioutil.ReadFile(configFile) if err != nil { if os.IsNotExist(err) { return } log.ErrFatal(err) } _, msg, err := network.UnmarshalRegistered(buf) log.ErrFatal(err) cfg, loaded = msg.(*ciscConfig) cfg.Identity.Client = onet.NewClient(identity.ServiceName) for _, f := range cfg.Follow { f.Client = onet.NewClient(identity.ServiceName) } if !loaded { log.Fatal("Wrong message-type in config-file") } return }
// NewIdentity starts a new identity that can contain multiple managers with // different accounts func NewIdentity(cothority *onet.Roster, threshold int, owner string) *Identity { client := onet.NewClient(ServiceName) kp := config.NewKeyPair(network.Suite) return &Identity{ Client: client, Data: Data{ Private: kp.Secret, Public: kp.Public, Config: NewConfig(threshold, kp.Public, owner), DeviceName: owner, Cothority: cothority, }, } }
// NewIdentityFromCothority searches for a given cothority func NewIdentityFromCothority(el *onet.Roster, id ID) (*Identity, error) { iden := &Identity{ Client: onet.NewClient(ServiceName), Data: Data{ Cothority: el, ID: id, }, } err := iden.ConfigUpdate() if err != nil { return nil, err } return iden, nil }
// NewIdentityFromStream reads the configuration of that client from // any stream func NewIdentityFromStream(in io.Reader) (*Identity, error) { data, err := ioutil.ReadAll(in) if err != nil { return nil, err } _, i, err := network.UnmarshalRegistered(data) if err != nil { return nil, err } id := i.(*Data) identity := &Identity{ Client: onet.NewClient(ServiceName), Data: *id, } return identity, nil }
// NewClient makes a new Client func NewClient() *Client { return &Client{Client: onet.NewClient(ServiceName)} }
// NewClient instantiates a new client with name 'n' func NewClient() *Client { return &Client{Client: onet.NewClient("Skipchain")} }