1 // (c) Bernhard Tittelbach, 2013
14 var re_keynickline *regexp.Regexp = regexp.MustCompile("^\\s*([0-9a-fA-F]+)\\s+((?:\\p{Latin}|\\d)+).*")
16 type KeyNickStore map[uint64]string
18 func (key_nick_map *KeyNickStore) LoadKeysFile(filename string) error {
19 keysfile, err := os.OpenFile(filename, os.O_RDONLY, 0400) // For read access.
20 defer keysfile.Close()
26 *key_nick_map = make(KeyNickStore)
28 linescanner := bufio.NewScanner(keysfile)
29 linescanner.Split(bufio.ScanLines)
30 for linescanner.Scan() {
31 m := re_keynickline.FindStringSubmatch(linescanner.Text())
33 if kuint, err := strconv.ParseUint(m[1], 16, 64); err == nil {
34 (*key_nick_map)[kuint] = m[2]
36 log.Print("Error converting hex-cardid:",m[0])
43 func (key_nick_map *KeyNickStore) LookupHexKeyNick( key string ) (string, error) {
44 kuint, err := strconv.ParseUint(key, 16, 64)
46 return "", errors.New("Invalid Hex-Card-Id")
48 nick, present := (*key_nick_map)[kuint]
52 return "", errors.New("Key Unknown")