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.