MCPcopy
hub / github.com/rsc/2fa / add

Method add

main.go:227–267  ·  view source on GitHub ↗
(name string)

Source from the content-addressed store, hash-verified

225}
226
227func (c *Keychain) add(name string) {
228 size := 6
229 if *flag7 {
230 size = 7
231 if *flag8 {
232 log.Fatalf("cannot use -7 and -8 together")
233 }
234 } else if *flag8 {
235 size = 8
236 }
237
238 fmt.Fprintf(os.Stderr, "2fa key for %s: ", name)
239 text, err := bufio.NewReader(os.Stdin).ReadString('\n')
240 if err != nil {
241 log.Fatalf("error reading key: %v", err)
242 }
243 text = strings.Map(noSpace, text)
244 text += strings.Repeat("=", -len(text)&7) // pad to 8 bytes
245 if _, err := decodeKey(text); err != nil {
246 log.Fatalf("invalid key: %v", err)
247 }
248
249 line := fmt.Sprintf("%s %d %s", name, size, text)
250 if *flagHotp {
251 line += " " + strings.Repeat("0", 20)
252 }
253 line += "\n"
254
255 f, err := os.OpenFile(c.file, os.O_CREATE|os.O_RDWR|os.O_APPEND, 0600)
256 if err != nil {
257 log.Fatalf("opening keychain: %v", err)
258 }
259 f.Chmod(0600)
260
261 if _, err := f.Write([]byte(line)); err != nil {
262 log.Fatalf("adding key: %v", err)
263 }
264 if err := f.Close(); err != nil {
265 log.Fatalf("adding key: %v", err)
266 }
267}
268
269func (c *Keychain) code(name string) string {
270 k, ok := c.keys[name]

Callers 1

mainFunction · 0.80

Calls 1

decodeKeyFunction · 0.85

Tested by

no test coverage detected