Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Issue 2809993004: cros: Implement cryptohome backend for pin.

Created:
3 years, 8 months ago by jdufault
Modified:
3 years, 6 months ago
Reviewers:
achuithb
CC:
chromium-reviews, extensions-reviews_chromium.org, alemate+watch_chromium.org, achuith+watch_chromium.org, oshima+watch_chromium.org, chromium-apps-reviews_chromium.org, davemoore+watch_chromium.org
Target Ref:
refs/heads/master
Project:
chromium
Visibility:
Public.

Description

cros: Implement cryptohome backend for pin. The actual cryptohome APIs we will use are not ready yet, and some refactoring may be required when they are ready, but this gets us most of the way there. BUG=623344

Patch Set 1 : Initial upload #

Patch Set 2 : Rebase, remove some extraneous LOG statements #

Total comments: 30

Patch Set 3 : Rebase #

Patch Set 4 : Address comments #

Unified diffs Side-by-side diffs Delta from patch set Stats (+790 lines, -514 lines) Patch
M chrome/browser/chromeos/BUILD.gn View 1 2 2 chunks +5 lines, -3 lines 0 comments Download
M chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api.h View 1 2 3 2 chunks +11 lines, -1 line 0 comments Download
M chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api.cc View 1 2 3 7 chunks +51 lines, -24 lines 0 comments Download
M chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api_unittest.cc View 1 2 3 12 chunks +136 lines, -24 lines 0 comments Download
M chrome/browser/chromeos/login/lock/screen_locker.h View 1 1 chunk +7 lines, -0 lines 0 comments Download
M chrome/browser/chromeos/login/lock/screen_locker.cc View 1 2 3 chunks +24 lines, -8 lines 0 comments Download
A chrome/browser/chromeos/login/quick_unlock/pin_backend.h View 1 2 3 1 chunk +69 lines, -0 lines 0 comments Download
A chrome/browser/chromeos/login/quick_unlock/pin_backend.cc View 1 2 3 1 chunk +260 lines, -0 lines 0 comments Download
D chrome/browser/chromeos/login/quick_unlock/pin_storage.h View 1 chunk +0 lines, -73 lines 0 comments Download
D chrome/browser/chromeos/login/quick_unlock/pin_storage.cc View 1 chunk +0 lines, -103 lines 0 comments Download
A + chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs.h View 2 chunks +33 lines, -24 lines 0 comments Download
A chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs.cc View 1 chunk +102 lines, -0 lines 0 comments Download
A + chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs_unittest.cc View 1 7 chunks +35 lines, -40 lines 0 comments Download
D chrome/browser/chromeos/login/quick_unlock/pin_storage_unittest.cc View 1 1 chunk +0 lines, -142 lines 0 comments Download
M chrome/browser/chromeos/login/quick_unlock/quick_unlock_factory.cc View 1 chunk +1 line, -2 lines 0 comments Download
M chrome/browser/chromeos/login/quick_unlock/quick_unlock_notification_controller.cc View 1 chunk +1 line, -7 lines 0 comments Download
M chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.h View 1 2 3 4 chunks +13 lines, -13 lines 0 comments Download
M chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.cc View 3 chunks +8 lines, -21 lines 0 comments Download
M chrome/browser/chromeos/profiles/profile_helper.h View 1 2 1 chunk +1 line, -0 lines 0 comments Download
M chrome/browser/prefs/browser_prefs.cc View 1 2 2 chunks +2 lines, -2 lines 0 comments Download
M chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h View 1 2 1 chunk +5 lines, -0 lines 0 comments Download
M chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc View 1 2 3 6 chunks +26 lines, -27 lines 0 comments Download

Messages

Total messages: 24 (19 generated)
jdufault
achuith@ PTAL. Sorry for the huge CL - I've tried to break it smaller into ...
3 years, 8 months ago (2017-04-15 00:12:55 UTC) #12
jdufault
achuith@ PTAL when you get the chance.
3 years, 7 months ago (2017-05-12 16:49:27 UTC) #17
Alexander Alekseev
https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc File chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc (right): https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc#newcode1304 chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc:1304: Please, add TODO https://crbug.com/721938 to optimize this.
3 years, 7 months ago (2017-05-12 22:40:39 UTC) #18
achuithb
Sorry for the delay. I need to take a second pass through this code to ...
3 years, 7 months ago (2017-05-13 01:01:58 UTC) #19
jdufault
3 years, 6 months ago (2017-06-06 18:17:06 UTC) #24
Sorry about taking so long to address the comments. Thanks for taking a look!

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
File
chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api.cc
(right):

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api.cc:440:
return newly_active_modes;
On 2017/05/13 01:01:57, achuithb wrote:
> So that can only be empty or have the QUICK_UNLOCK_MODE_PIN?

Yep.

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
File
chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api.h
(right):

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api.h:139:
std::vector<api::quick_unlock_private::QuickUnlockMode> ApplyModeChange(
On 2017/05/13 01:01:57, achuithb wrote:
> Is it worthwhile using a typedef for this?

Done.

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
File
chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api_unittest.cc
(right):

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api_unittest.cc:334:
bool IsPinSetInBackend() {
On 2017/05/13 01:01:58, achuithb wrote:
> nit const

This calls PumpRunLoop() which cannot be constant.

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api_unittest.cc:335:
AccountId account_id = AccountId::FromUserEmail(kTestUserEmail);
On 2017/05/13 01:01:57, achuithb wrote:
> nit const

Done.

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
chrome/browser/chromeos/extensions/quick_unlock_private/quick_unlock_private_api_unittest.cc:376:
void DoAddKeyCallback(const cryptohome::KeyDefinition& key,
On 2017/05/13 01:01:58, achuithb wrote:
> let's add some newlines between methods

Done.

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
File chrome/browser/chromeos/login/quick_unlock/pin_backend.cc (right):

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
chrome/browser/chromeos/login/quick_unlock/pin_backend.cc:53:
base::WeakPtrFactory<CryptohomeBackend> weak_factory_;
On 2017/05/13 01:01:58, achuithb wrote:
> You can do weak_factory_{this};
>
https://cs.chromium.org/chromium/src/chrome/browser/ui/views/chrome_views_del...
> 

Done - that's a nice pattern.

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
chrome/browser/chromeos/login/quick_unlock/pin_backend.cc:68: auto on_key_data =
On 2017/05/13 01:01:58, achuithb wrote:
> Let's maybe pull this out into a named callback? I haven't seen this many
> lambdas in one CL.

Done.

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
chrome/browser/chromeos/login/quick_unlock/pin_backend.cc:100:
cryptohome::Identification id(user_context.GetAccountId());
On 2017/05/13 01:01:58, achuithb wrote:
> nit all const

Done.

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
chrome/browser/chromeos/login/quick_unlock/pin_backend.cc:112: for
(std::vector<base::Closure>::const_iterator it =
On 2017/05/13 01:01:58, achuithb wrote:
> Does range-based loop not work here?

Done - not sure why I wasn't using it.

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
chrome/browser/chromeos/login/quick_unlock/pin_backend.cc:130:
cryptohome::Identification id(user_context.GetAccountId());
On 2017/05/13 01:01:58, achuithb wrote:
> nit const

Done.

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
chrome/browser/chromeos/login/quick_unlock/pin_backend.cc:141: return
g_cryptohome_backend_;
On 2017/05/13 01:01:58, achuithb wrote:
> it's ok to leak this? 
> 
> Isn't there a singleton class we can use here instead?

I tried converting to a leaky base::Singleton instance. For tests, we need the
ability to reset/destroy the singleton which base::Singleton does not appear to
support.

I think leaking is fine.

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
File chrome/browser/chromeos/login/quick_unlock/pin_backend.h (right):

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
chrome/browser/chromeos/login/quick_unlock/pin_backend.h:45: // Try to
authenticate.
On 2017/05/13 01:01:58, achuithb wrote:
> nit newline

Done.

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
File chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs_unittest.cc
(right):

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
chrome/browser/chromeos/login/quick_unlock/pin_storage_prefs_unittest.cc:29:
quick_unlock::PinStoragePrefs* PinStorage() const {
On 2017/05/13 01:01:58, achuithb wrote:
> Why not make this a protected data member?

Do you mean caching it? I try to avoid caching state as it can get out of sync.

This is under a protected: access modifier.

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
File chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.h (right):

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/chromeos...
chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.h:27: using
BoolCallback = base::Callback<void(bool)>;
On 2017/05/13 01:01:58, achuithb wrote:
> Where's this used?

Removed.

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/ui/webui...
File chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc (right):

https://codereview.chromium.org/2809993004/diff/40001/chrome/browser/ui/webui...
chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc:1304: 
On 2017/05/12 22:40:39, Alexander Alekseev wrote:
> Please, add TODO  https://crbug.com/721938 to optimize this.

Done.

Powered by Google App Engine
This is Rietveld 408576698