MCPcopy Create free account
hub / github.com/Mister-leo/fssh / GetAuthProvider

Function GetAuthProvider

internal/auth/auth.go:43–70  ·  view source on GitHub ↗

GetAuthProvider 自动选择并创建认证提供者 根据 auth_mode.json 或系统环境自动选择 Touch ID 或 OTP

(masterKeyTTL int)

Source from the content-addressed store, hash-verified

41// GetAuthProvider 自动选择并创建认证提供者
42// 根据 auth_mode.json 或系统环境自动选择 Touch ID 或 OTP
43func GetAuthProvider(masterKeyTTL int) (AuthProvider, error) {
44 mode, err := LoadMode()
45 if err != nil {
46 return nil, fmt.Errorf("加载认证模式失败: %w", err)
47 }
48
49 switch mode {
50 case ModeTouchID:
51 provider := NewTouchIDProvider()
52 if !provider.IsAvailable() {
53 return nil, errors.New("Touch ID 不可用,请运行: fssh switch-to-otp")
54 }
55 return provider, nil
56
57 case ModeOTP:
58 provider, err := NewOTPProvider(masterKeyTTL)
59 if err != nil {
60 return nil, fmt.Errorf("OTP 初始化失败: %w", err)
61 }
62 if !provider.IsAvailable() {
63 return nil, errors.New("OTP 未配置,请运行: fssh init --mode otp")
64 }
65 return provider, nil
66
67 default:
68 return nil, fmt.Errorf("未知认证模式: %s", mode)
69 }
70}
71
72// modeConfig 认证模式配置文件结构
73type modeConfig struct {

Callers 2

StartWithOptionsFunction · 0.92
newSecureAgentWithTTLFunction · 0.92

Calls 4

IsAvailableMethod · 0.95
LoadModeFunction · 0.85
NewTouchIDProviderFunction · 0.85
NewOTPProviderFunction · 0.85

Tested by

no test coverage detected