/// <summary>
        /// Create a new IdentityManager to use the given identity and private key
        /// storage.
        /// </summary>
        ///
        /// <param name="identityStorage">An object of a subclass of IdentityStorage.</param>
        /// <param name="privateKeyStorage">An object of a subclass of PrivateKeyStorage.</param>
        public IdentityManager(IdentityStorage identityStorage,
				PrivateKeyStorage privateKeyStorage)
        {
            identityStorage_ = identityStorage;
            privateKeyStorage_ = privateKeyStorage;
            // Don't call checkTpm() when using a custom PrivateKeyStorage.
        }
        /// <summary>
        /// Create a new IdentityManager to use the given IdentityStorage and
        /// the default PrivateKeyStorage for your system, which is
        /// OSXPrivateKeyStorage for OS X, otherwise FilePrivateKeyStorage.
        /// </summary>
        ///
        /// <param name="identityStorage">An object of a subclass of IdentityStorage.</param>
        public IdentityManager(IdentityStorage identityStorage)
        {
            ConfigFile config;
            try {
                config = new ConfigFile();
            } catch (IOException ex) {
                throw new SecurityException("IOException " + ex.Message);
            }

            String[] canonicalTpmLocator = new String[] { null };
            identityStorage_ = identityStorage;
            privateKeyStorage_ = getDefaultPrivateKeyStorage(config,
                    canonicalTpmLocator);

            checkTpm(canonicalTpmLocator[0]);
        }