func (c *VFSCAStore) loadPrivateKeys(p vfs.Path) (*privateKeys, error) { files, err := p.ReadDir() if err != nil { if os.IsNotExist(err) { return nil, nil } return nil, err } keys := &privateKeys{ keys: make(map[string]*PrivateKey), } for _, f := range files { key, err := c.loadOnePrivateKey(f) if err != nil { return nil, fmt.Errorf("error loading private key %q: %v", f, err) } name := f.Base() name = strings.TrimSuffix(name, ".key") keys.keys[name] = key } if len(keys.keys) == 0 { return nil, nil } var primaryVersion *big.Int for k := range keys.keys { version, ok := big.NewInt(0).SetString(k, 10) if !ok { glog.Warningf("Ignoring private key with non-integer version: %q", k) continue } if primaryVersion == nil || version.Cmp(primaryVersion) > 0 { keys.primary = k primaryVersion = version } } return keys, nil }
func (c *VFSCAStore) loadCertificates(p vfs.Path) (*certificates, error) { files, err := p.ReadDir() if err != nil { if os.IsNotExist(err) { return nil, nil } return nil, err } certs := &certificates{ certificates: make(map[string]*Certificate), } for _, f := range files { cert, err := c.loadOneCertificate(f) if err != nil { return nil, fmt.Errorf("error loading certificate %q: %v", f, err) } name := f.Base() name = strings.TrimSuffix(name, ".crt") certs.certificates[name] = cert } if len(certs.certificates) == 0 { return nil, nil } var primaryVersion *big.Int for k := range certs.certificates { version, ok := big.NewInt(0).SetString(k, 10) if !ok { glog.Warningf("Ignoring certificate with non-integer version: %q", k) continue } if primaryVersion == nil || version.Cmp(primaryVersion) > 0 { certs.primary = k primaryVersion = version } } return certs, nil }