forked from keybase/client
-
Notifications
You must be signed in to change notification settings - Fork 0
/
device_register.go
80 lines (62 loc) · 1.7 KB
/
device_register.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// Copyright 2015 Keybase, Inc. All rights reserved. Use of
// this source code is governed by the included BSD license.
package engine
import (
"errors"
"github.com/keybase/client/go/libkb"
keybase1 "github.com/keybase/client/go/protocol"
)
type DeviceRegisterArgs struct {
Me *libkb.User
Name string
Lks *libkb.LKSec
}
type DeviceRegister struct {
args *DeviceRegisterArgs
deviceID keybase1.DeviceID
libkb.Contextified
}
var ErrDeviceAlreadyRegistered = errors.New("Device already registered (device id exists in config)")
func NewDeviceRegister(args *DeviceRegisterArgs, g *libkb.GlobalContext) *DeviceRegister {
return &DeviceRegister{
args: args,
Contextified: libkb.NewContextified(g),
}
}
func (d *DeviceRegister) Name() string {
return "DeviceRegister"
}
func (d *DeviceRegister) RequiredUIs() []libkb.UIKind {
return nil
}
func (d *DeviceRegister) SubConsumers() []libkb.UIConsumer {
return nil
}
func (d *DeviceRegister) Prereqs() Prereqs { return Prereqs{} }
func (d *DeviceRegister) Run(ctx *Context) error {
if d.args.Me.HasDeviceInCurrentInstall() {
return ErrDeviceAlreadyRegistered
}
var err error
if d.deviceID, err = libkb.NewDeviceID(); err != nil {
return err
}
if err := d.args.Lks.GenerateServerHalf(); err != nil {
return err
}
d.G().Log.Debug("Device name: %s", d.args.Name)
d.G().Log.Debug("Device ID: %s", d.deviceID)
if wr := d.G().Env.GetConfigWriter(); wr != nil {
if err := wr.SetDeviceID(d.deviceID); err != nil {
return err
}
if err := wr.Save(); err != nil {
return err
}
ctx.LogUI.Debug("Setting Device ID to %s", d.deviceID)
}
return nil
}
func (d *DeviceRegister) DeviceID() keybase1.DeviceID {
return d.deviceID
}