The name "Provider" here is a bit weird. Really all it's doing is holding one certificate that was loaded by name. The providing part is purely what is in the constructor. I would have ICertProvider interface just have a method to retrieve the certificate from the parameters. Then implement that (i.e. this constructor). When in our container, create a certificate from the provider and make the certificate a singleton.