1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/password_manager/password_manager_util.h" 6 7 #import <Foundation/Foundation.h> 8 #include <CoreFoundation/CoreFoundation.h> 9 #include <Security/Authorization.h> 10 11 #include "base/basictypes.h" 12 #include "base/mac/authorization_util.h" 13 #include "base/mac/foundation_util.h" 14 #include "base/mac/scoped_authorizationref.h" 15 #include "grit/chromium_strings.h" 16 #include "grit/generated_resources.h" 17 #include "ui/base/l10n/l10n_util.h" 18 19 namespace password_manager_util { 20 21 bool AuthenticateUser(gfx::NativeWindow window) { 22 AuthorizationItem right_items[] = { 23 {"com.google.Chrome.show-passwords", 0, NULL, 0} 24 }; 25 AuthorizationRights rights = {arraysize(right_items), right_items}; 26 27 NSString* prompt = 28 l10n_util::GetNSString(IDS_PASSWORDS_PAGE_AUTHENTICATION_PROMPT); 29 30 // Pass kAuthorizationFlagDestroyRights to prevent the OS from saving the 31 // authorization and not prompting the user when future requests are made. 32 base::mac::ScopedAuthorizationRef authorization( 33 base::mac::GetAuthorizationRightsWithPrompt( 34 &rights, base::mac::NSToCFCast(prompt), 35 kAuthorizationFlagDestroyRights)); 36 return authorization.get() != NULL; 37 } 38 39 // TODO(dubroy): Implement on Mac. 40 OsPasswordStatus GetOsPasswordStatus() { 41 return PASSWORD_STATUS_UNSUPPORTED; 42 } 43 44 } // namespace password_manager_util 45