-
- // <rdar://problem/4192119>
- //
- // Prepend "$" to the key name, so that there will
- // be no conflict between the zone name and the key
- // name
-
- m_key.Insert( 0, L"$" );
-
- // attrs are reserved, so initialize to zeroes.
-
- ZeroMemory( &attrs, sizeof( attrs ) );
-
- // Get a handle to the Policy object on the local system
-
- res = LsaOpenPolicy( NULL, &attrs, POLICY_ALL_ACCESS, &handle );
- err = translate_errno( res == 0, LsaNtStatusToWinError( res ), kUnknownErr );
- require_noerr( err, exit );
-
- // Intializing PLSA_UNICODE_STRING structures
-
- ok = InitLsaString( &lucZoneName, zone );
- err = translate_errno( ok, errno_compat(), kUnknownErr );
- require_noerr( err, exit );
-
- ok = InitLsaString( &lucKeyName, m_key );
- err = translate_errno( ok, errno_compat(), kUnknownErr );
- require_noerr( err, exit );
-
- ok = InitLsaString( &lucSecretName, m_secret );
- err = translate_errno( ok, errno_compat(), kUnknownErr );
- require_noerr( err, exit );
-
- // Store the private data.
-
- res = LsaStorePrivateData( handle, &lucZoneName, &lucKeyName );
- err = translate_errno( res == 0, LsaNtStatusToWinError( res ), kUnknownErr );
- require_noerr( err, exit );
-
- res = LsaStorePrivateData( handle, &lucKeyName, &lucSecretName );
- err = translate_errno( res == 0, LsaNtStatusToWinError( res ), kUnknownErr );
- require_noerr( err, exit );
-
-exit:
-
- if ( handle )