github.com/keybase/client/go@v0.0.0-20241007131713-f10651d043c8/protocol/keybase1/login_ui.go (about)

     1  // Auto-generated to Go types and interfaces using avdl-compiler v1.4.10 (https://github.com/keybase/node-avdl-compiler)
     2  //   Input file: avdl/keybase1/login_ui.avdl
     3  
     4  package keybase1
     5  
     6  import (
     7  	"errors"
     8  	"fmt"
     9  	"github.com/keybase/go-framed-msgpack-rpc/rpc"
    10  	context "golang.org/x/net/context"
    11  	"time"
    12  )
    13  
    14  type ResetPromptType int
    15  
    16  const (
    17  	ResetPromptType_COMPLETE         ResetPromptType = 0
    18  	ResetPromptType_ENTER_NO_DEVICES ResetPromptType = 1
    19  	ResetPromptType_ENTER_FORGOT_PW  ResetPromptType = 2
    20  	ResetPromptType_ENTER_RESET_PW   ResetPromptType = 3
    21  )
    22  
    23  func (o ResetPromptType) DeepCopy() ResetPromptType { return o }
    24  
    25  var ResetPromptTypeMap = map[string]ResetPromptType{
    26  	"COMPLETE":         0,
    27  	"ENTER_NO_DEVICES": 1,
    28  	"ENTER_FORGOT_PW":  2,
    29  	"ENTER_RESET_PW":   3,
    30  }
    31  
    32  var ResetPromptTypeRevMap = map[ResetPromptType]string{
    33  	0: "COMPLETE",
    34  	1: "ENTER_NO_DEVICES",
    35  	2: "ENTER_FORGOT_PW",
    36  	3: "ENTER_RESET_PW",
    37  }
    38  
    39  func (e ResetPromptType) String() string {
    40  	if v, ok := ResetPromptTypeRevMap[e]; ok {
    41  		return v
    42  	}
    43  	return fmt.Sprintf("%v", int(e))
    44  }
    45  
    46  type ResetPromptInfo struct {
    47  	HasWallet bool `codec:"hasWallet" json:"hasWallet"`
    48  }
    49  
    50  func (o ResetPromptInfo) DeepCopy() ResetPromptInfo {
    51  	return ResetPromptInfo{
    52  		HasWallet: o.HasWallet,
    53  	}
    54  }
    55  
    56  type ResetPrompt struct {
    57  	T__        ResetPromptType  `codec:"t" json:"t"`
    58  	Complete__ *ResetPromptInfo `codec:"complete,omitempty" json:"complete,omitempty"`
    59  }
    60  
    61  func (o *ResetPrompt) T() (ret ResetPromptType, err error) {
    62  	switch o.T__ {
    63  	case ResetPromptType_COMPLETE:
    64  		if o.Complete__ == nil {
    65  			err = errors.New("unexpected nil value for Complete__")
    66  			return ret, err
    67  		}
    68  	}
    69  	return o.T__, nil
    70  }
    71  
    72  func (o ResetPrompt) Complete() (res ResetPromptInfo) {
    73  	if o.T__ != ResetPromptType_COMPLETE {
    74  		panic("wrong case accessed")
    75  	}
    76  	if o.Complete__ == nil {
    77  		return
    78  	}
    79  	return *o.Complete__
    80  }
    81  
    82  func NewResetPromptWithComplete(v ResetPromptInfo) ResetPrompt {
    83  	return ResetPrompt{
    84  		T__:        ResetPromptType_COMPLETE,
    85  		Complete__: &v,
    86  	}
    87  }
    88  
    89  func NewResetPromptDefault(t ResetPromptType) ResetPrompt {
    90  	return ResetPrompt{
    91  		T__: t,
    92  	}
    93  }
    94  
    95  func (o ResetPrompt) DeepCopy() ResetPrompt {
    96  	return ResetPrompt{
    97  		T__: o.T__.DeepCopy(),
    98  		Complete__: (func(x *ResetPromptInfo) *ResetPromptInfo {
    99  			if x == nil {
   100  				return nil
   101  			}
   102  			tmp := (*x).DeepCopy()
   103  			return &tmp
   104  		})(o.Complete__),
   105  	}
   106  }
   107  
   108  type ResetPromptResponse int
   109  
   110  const (
   111  	ResetPromptResponse_NOTHING       ResetPromptResponse = 0
   112  	ResetPromptResponse_CANCEL_RESET  ResetPromptResponse = 1
   113  	ResetPromptResponse_CONFIRM_RESET ResetPromptResponse = 2
   114  )
   115  
   116  func (o ResetPromptResponse) DeepCopy() ResetPromptResponse { return o }
   117  
   118  var ResetPromptResponseMap = map[string]ResetPromptResponse{
   119  	"NOTHING":       0,
   120  	"CANCEL_RESET":  1,
   121  	"CONFIRM_RESET": 2,
   122  }
   123  
   124  var ResetPromptResponseRevMap = map[ResetPromptResponse]string{
   125  	0: "NOTHING",
   126  	1: "CANCEL_RESET",
   127  	2: "CONFIRM_RESET",
   128  }
   129  
   130  func (e ResetPromptResponse) String() string {
   131  	if v, ok := ResetPromptResponseRevMap[e]; ok {
   132  		return v
   133  	}
   134  	return fmt.Sprintf("%v", int(e))
   135  }
   136  
   137  type PassphraseRecoveryPromptType int
   138  
   139  const (
   140  	PassphraseRecoveryPromptType_ENCRYPTED_PGP_KEYS PassphraseRecoveryPromptType = 0
   141  )
   142  
   143  func (o PassphraseRecoveryPromptType) DeepCopy() PassphraseRecoveryPromptType { return o }
   144  
   145  var PassphraseRecoveryPromptTypeMap = map[string]PassphraseRecoveryPromptType{
   146  	"ENCRYPTED_PGP_KEYS": 0,
   147  }
   148  
   149  var PassphraseRecoveryPromptTypeRevMap = map[PassphraseRecoveryPromptType]string{
   150  	0: "ENCRYPTED_PGP_KEYS",
   151  }
   152  
   153  func (e PassphraseRecoveryPromptType) String() string {
   154  	if v, ok := PassphraseRecoveryPromptTypeRevMap[e]; ok {
   155  		return v
   156  	}
   157  	return fmt.Sprintf("%v", int(e))
   158  }
   159  
   160  type ResetMessage int
   161  
   162  const (
   163  	ResetMessage_ENTERED_VERIFIED     ResetMessage = 0
   164  	ResetMessage_ENTERED_PASSWORDLESS ResetMessage = 1
   165  	ResetMessage_REQUEST_VERIFIED     ResetMessage = 2
   166  	ResetMessage_NOT_COMPLETED        ResetMessage = 3
   167  	ResetMessage_CANCELED             ResetMessage = 4
   168  	ResetMessage_COMPLETED            ResetMessage = 5
   169  	ResetMessage_RESET_LINK_SENT      ResetMessage = 6
   170  )
   171  
   172  func (o ResetMessage) DeepCopy() ResetMessage { return o }
   173  
   174  var ResetMessageMap = map[string]ResetMessage{
   175  	"ENTERED_VERIFIED":     0,
   176  	"ENTERED_PASSWORDLESS": 1,
   177  	"REQUEST_VERIFIED":     2,
   178  	"NOT_COMPLETED":        3,
   179  	"CANCELED":             4,
   180  	"COMPLETED":            5,
   181  	"RESET_LINK_SENT":      6,
   182  }
   183  
   184  var ResetMessageRevMap = map[ResetMessage]string{
   185  	0: "ENTERED_VERIFIED",
   186  	1: "ENTERED_PASSWORDLESS",
   187  	2: "REQUEST_VERIFIED",
   188  	3: "NOT_COMPLETED",
   189  	4: "CANCELED",
   190  	5: "COMPLETED",
   191  	6: "RESET_LINK_SENT",
   192  }
   193  
   194  func (e ResetMessage) String() string {
   195  	if v, ok := ResetMessageRevMap[e]; ok {
   196  		return v
   197  	}
   198  	return fmt.Sprintf("%v", int(e))
   199  }
   200  
   201  type GetEmailOrUsernameArg struct {
   202  	SessionID int `codec:"sessionID" json:"sessionID"`
   203  }
   204  
   205  type PromptRevokePaperKeysArg struct {
   206  	SessionID int    `codec:"sessionID" json:"sessionID"`
   207  	Device    Device `codec:"device" json:"device"`
   208  	Index     int    `codec:"index" json:"index"`
   209  }
   210  
   211  type DisplayPaperKeyPhraseArg struct {
   212  	SessionID int    `codec:"sessionID" json:"sessionID"`
   213  	Phrase    string `codec:"phrase" json:"phrase"`
   214  }
   215  
   216  type DisplayPrimaryPaperKeyArg struct {
   217  	SessionID int    `codec:"sessionID" json:"sessionID"`
   218  	Phrase    string `codec:"phrase" json:"phrase"`
   219  }
   220  
   221  type PromptResetAccountArg struct {
   222  	SessionID int         `codec:"sessionID" json:"sessionID"`
   223  	Prompt    ResetPrompt `codec:"prompt" json:"prompt"`
   224  }
   225  
   226  type DisplayResetProgressArg struct {
   227  	SessionID  int    `codec:"sessionID" json:"sessionID"`
   228  	Text       string `codec:"text" json:"text"`
   229  	EndTime    Time   `codec:"endTime" json:"endTime"`
   230  	NeedVerify bool   `codec:"needVerify" json:"needVerify"`
   231  }
   232  
   233  type ExplainDeviceRecoveryArg struct {
   234  	SessionID int        `codec:"sessionID" json:"sessionID"`
   235  	Kind      DeviceType `codec:"kind" json:"kind"`
   236  	Name      string     `codec:"name" json:"name"`
   237  }
   238  
   239  type PromptPassphraseRecoveryArg struct {
   240  	SessionID int                          `codec:"sessionID" json:"sessionID"`
   241  	Kind      PassphraseRecoveryPromptType `codec:"kind" json:"kind"`
   242  }
   243  
   244  type ChooseDeviceToRecoverWithArg struct {
   245  	SessionID int      `codec:"sessionID" json:"sessionID"`
   246  	Devices   []Device `codec:"devices" json:"devices"`
   247  }
   248  
   249  type DisplayResetMessageArg struct {
   250  	SessionID int          `codec:"sessionID" json:"sessionID"`
   251  	Kind      ResetMessage `codec:"kind" json:"kind"`
   252  }
   253  
   254  type LoginUiInterface interface {
   255  	GetEmailOrUsername(context.Context, int) (string, error)
   256  	PromptRevokePaperKeys(context.Context, PromptRevokePaperKeysArg) (bool, error)
   257  	DisplayPaperKeyPhrase(context.Context, DisplayPaperKeyPhraseArg) error
   258  	DisplayPrimaryPaperKey(context.Context, DisplayPrimaryPaperKeyArg) error
   259  	// Called during login / provisioning flows to ask the user whether they
   260  	// would like to either enter the autoreset pipeline and perform the reset
   261  	// of the account.
   262  	PromptResetAccount(context.Context, PromptResetAccountArg) (ResetPromptResponse, error)
   263  	// In some flows the user will get notified of the reset progress
   264  	DisplayResetProgress(context.Context, DisplayResetProgressArg) error
   265  	// During recovery the service might want to explain to the user how they can change
   266  	// their password by using the "change password" functionality on other devices.
   267  	ExplainDeviceRecovery(context.Context, ExplainDeviceRecoveryArg) error
   268  	PromptPassphraseRecovery(context.Context, PromptPassphraseRecoveryArg) (bool, error)
   269  	// Different from ProvisionUI's chooseDevice due to phrasing in the UI.
   270  	ChooseDeviceToRecoverWith(context.Context, ChooseDeviceToRecoverWithArg) (DeviceID, error)
   271  	// Simply displays a message in the recovery flow.
   272  	DisplayResetMessage(context.Context, DisplayResetMessageArg) error
   273  }
   274  
   275  func LoginUiProtocol(i LoginUiInterface) rpc.Protocol {
   276  	return rpc.Protocol{
   277  		Name: "keybase.1.loginUi",
   278  		Methods: map[string]rpc.ServeHandlerDescription{
   279  			"getEmailOrUsername": {
   280  				MakeArg: func() interface{} {
   281  					var ret [1]GetEmailOrUsernameArg
   282  					return &ret
   283  				},
   284  				Handler: func(ctx context.Context, args interface{}) (ret interface{}, err error) {
   285  					typedArgs, ok := args.(*[1]GetEmailOrUsernameArg)
   286  					if !ok {
   287  						err = rpc.NewTypeError((*[1]GetEmailOrUsernameArg)(nil), args)
   288  						return
   289  					}
   290  					ret, err = i.GetEmailOrUsername(ctx, typedArgs[0].SessionID)
   291  					return
   292  				},
   293  			},
   294  			"promptRevokePaperKeys": {
   295  				MakeArg: func() interface{} {
   296  					var ret [1]PromptRevokePaperKeysArg
   297  					return &ret
   298  				},
   299  				Handler: func(ctx context.Context, args interface{}) (ret interface{}, err error) {
   300  					typedArgs, ok := args.(*[1]PromptRevokePaperKeysArg)
   301  					if !ok {
   302  						err = rpc.NewTypeError((*[1]PromptRevokePaperKeysArg)(nil), args)
   303  						return
   304  					}
   305  					ret, err = i.PromptRevokePaperKeys(ctx, typedArgs[0])
   306  					return
   307  				},
   308  			},
   309  			"displayPaperKeyPhrase": {
   310  				MakeArg: func() interface{} {
   311  					var ret [1]DisplayPaperKeyPhraseArg
   312  					return &ret
   313  				},
   314  				Handler: func(ctx context.Context, args interface{}) (ret interface{}, err error) {
   315  					typedArgs, ok := args.(*[1]DisplayPaperKeyPhraseArg)
   316  					if !ok {
   317  						err = rpc.NewTypeError((*[1]DisplayPaperKeyPhraseArg)(nil), args)
   318  						return
   319  					}
   320  					err = i.DisplayPaperKeyPhrase(ctx, typedArgs[0])
   321  					return
   322  				},
   323  			},
   324  			"displayPrimaryPaperKey": {
   325  				MakeArg: func() interface{} {
   326  					var ret [1]DisplayPrimaryPaperKeyArg
   327  					return &ret
   328  				},
   329  				Handler: func(ctx context.Context, args interface{}) (ret interface{}, err error) {
   330  					typedArgs, ok := args.(*[1]DisplayPrimaryPaperKeyArg)
   331  					if !ok {
   332  						err = rpc.NewTypeError((*[1]DisplayPrimaryPaperKeyArg)(nil), args)
   333  						return
   334  					}
   335  					err = i.DisplayPrimaryPaperKey(ctx, typedArgs[0])
   336  					return
   337  				},
   338  			},
   339  			"promptResetAccount": {
   340  				MakeArg: func() interface{} {
   341  					var ret [1]PromptResetAccountArg
   342  					return &ret
   343  				},
   344  				Handler: func(ctx context.Context, args interface{}) (ret interface{}, err error) {
   345  					typedArgs, ok := args.(*[1]PromptResetAccountArg)
   346  					if !ok {
   347  						err = rpc.NewTypeError((*[1]PromptResetAccountArg)(nil), args)
   348  						return
   349  					}
   350  					ret, err = i.PromptResetAccount(ctx, typedArgs[0])
   351  					return
   352  				},
   353  			},
   354  			"displayResetProgress": {
   355  				MakeArg: func() interface{} {
   356  					var ret [1]DisplayResetProgressArg
   357  					return &ret
   358  				},
   359  				Handler: func(ctx context.Context, args interface{}) (ret interface{}, err error) {
   360  					typedArgs, ok := args.(*[1]DisplayResetProgressArg)
   361  					if !ok {
   362  						err = rpc.NewTypeError((*[1]DisplayResetProgressArg)(nil), args)
   363  						return
   364  					}
   365  					err = i.DisplayResetProgress(ctx, typedArgs[0])
   366  					return
   367  				},
   368  			},
   369  			"explainDeviceRecovery": {
   370  				MakeArg: func() interface{} {
   371  					var ret [1]ExplainDeviceRecoveryArg
   372  					return &ret
   373  				},
   374  				Handler: func(ctx context.Context, args interface{}) (ret interface{}, err error) {
   375  					typedArgs, ok := args.(*[1]ExplainDeviceRecoveryArg)
   376  					if !ok {
   377  						err = rpc.NewTypeError((*[1]ExplainDeviceRecoveryArg)(nil), args)
   378  						return
   379  					}
   380  					err = i.ExplainDeviceRecovery(ctx, typedArgs[0])
   381  					return
   382  				},
   383  			},
   384  			"promptPassphraseRecovery": {
   385  				MakeArg: func() interface{} {
   386  					var ret [1]PromptPassphraseRecoveryArg
   387  					return &ret
   388  				},
   389  				Handler: func(ctx context.Context, args interface{}) (ret interface{}, err error) {
   390  					typedArgs, ok := args.(*[1]PromptPassphraseRecoveryArg)
   391  					if !ok {
   392  						err = rpc.NewTypeError((*[1]PromptPassphraseRecoveryArg)(nil), args)
   393  						return
   394  					}
   395  					ret, err = i.PromptPassphraseRecovery(ctx, typedArgs[0])
   396  					return
   397  				},
   398  			},
   399  			"chooseDeviceToRecoverWith": {
   400  				MakeArg: func() interface{} {
   401  					var ret [1]ChooseDeviceToRecoverWithArg
   402  					return &ret
   403  				},
   404  				Handler: func(ctx context.Context, args interface{}) (ret interface{}, err error) {
   405  					typedArgs, ok := args.(*[1]ChooseDeviceToRecoverWithArg)
   406  					if !ok {
   407  						err = rpc.NewTypeError((*[1]ChooseDeviceToRecoverWithArg)(nil), args)
   408  						return
   409  					}
   410  					ret, err = i.ChooseDeviceToRecoverWith(ctx, typedArgs[0])
   411  					return
   412  				},
   413  			},
   414  			"displayResetMessage": {
   415  				MakeArg: func() interface{} {
   416  					var ret [1]DisplayResetMessageArg
   417  					return &ret
   418  				},
   419  				Handler: func(ctx context.Context, args interface{}) (ret interface{}, err error) {
   420  					typedArgs, ok := args.(*[1]DisplayResetMessageArg)
   421  					if !ok {
   422  						err = rpc.NewTypeError((*[1]DisplayResetMessageArg)(nil), args)
   423  						return
   424  					}
   425  					err = i.DisplayResetMessage(ctx, typedArgs[0])
   426  					return
   427  				},
   428  			},
   429  		},
   430  	}
   431  }
   432  
   433  type LoginUiClient struct {
   434  	Cli rpc.GenericClient
   435  }
   436  
   437  func (c LoginUiClient) GetEmailOrUsername(ctx context.Context, sessionID int) (res string, err error) {
   438  	__arg := GetEmailOrUsernameArg{SessionID: sessionID}
   439  	err = c.Cli.Call(ctx, "keybase.1.loginUi.getEmailOrUsername", []interface{}{__arg}, &res, 0*time.Millisecond)
   440  	return
   441  }
   442  
   443  func (c LoginUiClient) PromptRevokePaperKeys(ctx context.Context, __arg PromptRevokePaperKeysArg) (res bool, err error) {
   444  	err = c.Cli.Call(ctx, "keybase.1.loginUi.promptRevokePaperKeys", []interface{}{__arg}, &res, 0*time.Millisecond)
   445  	return
   446  }
   447  
   448  func (c LoginUiClient) DisplayPaperKeyPhrase(ctx context.Context, __arg DisplayPaperKeyPhraseArg) (err error) {
   449  	err = c.Cli.Call(ctx, "keybase.1.loginUi.displayPaperKeyPhrase", []interface{}{__arg}, nil, 0*time.Millisecond)
   450  	return
   451  }
   452  
   453  func (c LoginUiClient) DisplayPrimaryPaperKey(ctx context.Context, __arg DisplayPrimaryPaperKeyArg) (err error) {
   454  	err = c.Cli.Call(ctx, "keybase.1.loginUi.displayPrimaryPaperKey", []interface{}{__arg}, nil, 0*time.Millisecond)
   455  	return
   456  }
   457  
   458  // Called during login / provisioning flows to ask the user whether they
   459  // would like to either enter the autoreset pipeline and perform the reset
   460  // of the account.
   461  func (c LoginUiClient) PromptResetAccount(ctx context.Context, __arg PromptResetAccountArg) (res ResetPromptResponse, err error) {
   462  	err = c.Cli.Call(ctx, "keybase.1.loginUi.promptResetAccount", []interface{}{__arg}, &res, 0*time.Millisecond)
   463  	return
   464  }
   465  
   466  // In some flows the user will get notified of the reset progress
   467  func (c LoginUiClient) DisplayResetProgress(ctx context.Context, __arg DisplayResetProgressArg) (err error) {
   468  	err = c.Cli.Call(ctx, "keybase.1.loginUi.displayResetProgress", []interface{}{__arg}, nil, 0*time.Millisecond)
   469  	return
   470  }
   471  
   472  // During recovery the service might want to explain to the user how they can change
   473  // their password by using the "change password" functionality on other devices.
   474  func (c LoginUiClient) ExplainDeviceRecovery(ctx context.Context, __arg ExplainDeviceRecoveryArg) (err error) {
   475  	err = c.Cli.Call(ctx, "keybase.1.loginUi.explainDeviceRecovery", []interface{}{__arg}, nil, 0*time.Millisecond)
   476  	return
   477  }
   478  
   479  func (c LoginUiClient) PromptPassphraseRecovery(ctx context.Context, __arg PromptPassphraseRecoveryArg) (res bool, err error) {
   480  	err = c.Cli.Call(ctx, "keybase.1.loginUi.promptPassphraseRecovery", []interface{}{__arg}, &res, 0*time.Millisecond)
   481  	return
   482  }
   483  
   484  // Different from ProvisionUI's chooseDevice due to phrasing in the UI.
   485  func (c LoginUiClient) ChooseDeviceToRecoverWith(ctx context.Context, __arg ChooseDeviceToRecoverWithArg) (res DeviceID, err error) {
   486  	err = c.Cli.Call(ctx, "keybase.1.loginUi.chooseDeviceToRecoverWith", []interface{}{__arg}, &res, 0*time.Millisecond)
   487  	return
   488  }
   489  
   490  // Simply displays a message in the recovery flow.
   491  func (c LoginUiClient) DisplayResetMessage(ctx context.Context, __arg DisplayResetMessageArg) (err error) {
   492  	err = c.Cli.Call(ctx, "keybase.1.loginUi.displayResetMessage", []interface{}{__arg}, nil, 0*time.Millisecond)
   493  	return
   494  }