Patent ID: 8166294

Claim:
A method for processing requests, comprising: calling into a user-level encryption framework to process a first request, wherein calling into the encryption framework comprises sending the first request from a user-level application and wherein the user-level encryption framework comprises a first user-level cryptographic provider which when executed performs a first cryptographic function and a second user-level cryptographic provider which when executed performs a second cryptographic function; processing the first request and returning a result to the user-level application, wherein processing the first request comprises: determining whether the first request comprises a metaslot provider request, wherein the metaslot provider request is a request for a metaslot provider, wherein the metaslot provider is a virtual user-level cryptographic provider that exposes to the user-level application that it can perform the first cryptographic function and the second cryptographic function, and wherein the metaslot provider does not include functionality to perform any cryptographic functions; if the first request comprises the metaslot provider request: selecting the metaslot provider, wherein the metaslot provider determines which user-level cryptographic provider from available user-level cryptographic providers based on a current load and a rate of request processing of each of the available user-level cryptographic providers; and processing, based on the selecting, the first request using the first user-level cryptographic provider; and if the first request does not comprise the metaslot provider request: selecting a user-level cryptographic provider specified in the first request; and processing, based on the selecting, the first request using the specified user-level cryptographic provider; calling into the user-level encryption framework to load an additional user-level cryptographic provider on demand, wherein the additional user-level cryptographic provider is offered as one of the available user-level providers; receiving a second request; and selecting the additional user-level cryptographic provider and processing the second request using the additional user-level provider.