A secure repository individualized for a hardware environment and a method
and system for providing the same. The secure repository includes a
hidden cryptographic key and code that applies the key without requiring
access to a copy of the key. The code that implements the secure
repository is generated in a manner that is at least partly based on a
hardware ID associated with the hardware environment in which the secure
repository is to be installed, and may also be based on a random number.
Cryptographic functions implemented by the secure repository include
decryption of encrypted information and validation of cryptographically
signed information. The secure repository may be coupled to an
application program, which uses cryptographic services provided by the
secure repository, by way of a decoupling interface that provides a
common communication and authentication interface for diverse types of
secure repositories. The decoupling interface may take the form of a
single application programmer interface (API) usable with multiple
dynamically linkable libraries.