Factor out password fetching and build in support to read from and save to the system keychain.
Merge branch 'keychain'