| 255 | } |
| 256 | |
| 257 | func (m *Model) decryptUserPayload(encryptedPayload string) tview.Cmd { |
| 258 | return func() tview.Msg { |
| 259 | decodedPayload, err := base64.StdEncoding.DecodeString(encryptedPayload) |
| 260 | if err != nil { |
| 261 | return newErrMsg(err) |
| 262 | } |
| 263 | |
| 264 | decryptedPayload, err := rsa.DecryptOAEP(sha256.New(), nil, m.privateKey, decodedPayload, nil) |
| 265 | if err != nil { |
| 266 | return newErrMsg(err) |
| 267 | } |
| 268 | |
| 269 | parts := strings.Split(string(decryptedPayload), ":") |
| 270 | if len(parts) != 4 { |
| 271 | return newErrMsg(errors.New("invalid user payload")) |
| 272 | } |
| 273 | |
| 274 | return userMsg{discriminator: parts[1], username: parts[3]} |
| 275 | } |
| 276 | } |
| 277 | |
| 278 | func (m *Model) exchangeTicket(ticket string) tview.Cmd { |
| 279 | return func() tview.Msg { |