Skip to content
Permalink
Browse files

truststore_nss: support multiple NSS databases

This adds support for Snap's Chromium, and and CentOS 7.

Fixes #116
Fixes #120
Closes #121
  • Loading branch information...
FiloSottile committed Jun 1, 2019
1 parent 74ab688 commit 8d9e4345207013c55a8719995ec4ad4e9be466f2
Showing with 18 additions and 14 deletions.
  1. +18 −14 truststore_nss.go
@@ -17,17 +17,26 @@ var (
hasNSS bool
hasCertutil bool
certutilPath string
nssDB = filepath.Join(os.Getenv("HOME"), ".pki/nssdb")
)

func init() {
for _, path := range []string{
"/usr/bin/firefox", nssDB, "/Applications/Firefox.app",
nssDBs = []string{
filepath.Join(os.Getenv("HOME"), ".pki/nssdb"),
filepath.Join(os.Getenv("HOME"), "snap/chromium/current/.pki/nssdb"), // Snapcraft
"/etc/pki/nssdb", // CentOS 7
}
firefoxPaths = []string{
"/usr/bin/firefox", "/Applications/Firefox.app",
"/Applications/Firefox Developer Edition.app",
"/Applications/Firefox Nightly.app",
"C:\\Program Files\\Mozilla Firefox",
} {
hasNSS = hasNSS || pathExists(path)
}
)

func init() {
allPaths := append(append([]string{}, nssDBs...), firefoxPaths...)
for _, path := range allPaths {
if pathExists(path) {
hasNSS = true
break
}
}

switch runtime.GOOS {
@@ -96,12 +105,7 @@ func (m *mkcert) uninstallNSS() {

func (m *mkcert) forEachNSSProfile(f func(profile string)) (found int) {
profiles, _ := filepath.Glob(FirefoxProfile)
if pathExists(nssDB) {
profiles = append(profiles, nssDB)
}
if len(profiles) == 0 {
return
}
profiles = append(profiles, nssDBs...)
for _, profile := range profiles {
if stat, err := os.Stat(profile); err != nil || !stat.IsDir() {
continue

0 comments on commit 8d9e434

Please sign in to comment.
You can’t perform that action at this time.