This must return SymmetricKey? since Keychain might be empty… right?
Also you should not let those methods take an identifier… you should use a constant for it.
You are mixing your Keychain and CryptoManager. They ought two be two distinct dependencies.
CryptoManager then depends in the Keychain dependency.
What did you wanna achieve with Observable?
Are you writing any unit tests? Feels like you are not? Do it ;) swift dependencies allows for easy testing
CryptoManager is a broad term. I would have a Keychain client (depends on KeychainAccess package)
EncryptionKey client (depends on above)
Encryption client (depends on above)
Unit test each client in isolation