Class: Browserctl::SecretResolvers::MacOSKeychain

Inherits:
Base
  • Object
show all
Defined in:
lib/browserctl/secret_resolvers/macos_keychain.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.schemeObject



8
# File 'lib/browserctl/secret_resolvers/macos_keychain.rb', line 8

def self.scheme = "keychain"

Instance Method Details

#available?Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/browserctl/secret_resolvers/macos_keychain.rb', line 10

def available?
  RUBY_PLATFORM.include?("darwin") && system("which security > /dev/null 2>&1")
end

#resolve(reference) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/browserctl/secret_resolvers/macos_keychain.rb', line 14

def resolve(reference)
  service,  = reference.split("/", 2)
  if .nil?
    raise SecretResolverError,
          "keychain reference must be 'service/account', got: #{reference.inspect}"
  end

  result, status = Open3.capture2("security", "find-generic-password",
                                  "-a", , "-s", service, "-w")
  raise SecretResolverError, "keychain item not found: #{reference}" unless status.success?

  result.chomp
end