2017-09-22 80 views
6

Tôi gặp phải lỗi này khi tôi cố tìm nạp khóa riêng đã chọn trước đó khi tôi tạo lại hoạt động sau xoay màn hình.android.security.KeyChainException: java.lang.IllegalStateException: uid <> không có quyền truy cập vào bí danh được yêu cầu

Tôi đã xem this question here, cho thấy rằng choosePrivateKeyAlias() cần được gọi là "ít nhất một lần sau khi ứng dụng được cài đặt". Trong trường hợp này, nó đã được gọi nhiều lần, kể cả khi ứng dụng được khởi động trước khi xoay màn hình xảy ra - vậy tại sao ứng dụng lại được coi là ứng dụng mới? Uid có thay đổi không?

Dưới đây là cuộc gọi:

PrivateKey privateKey = KeyChain.getPrivateKey(getBaseContext(), alias);

Tôi vừa mới nhận thấy rằng các câu hỏi khác được sử dụng getCertificateChain hơn getPrivateKey - đó là sự khác biệt?

+1

Bạn có chắc chắn rằng 'bí danh' bạn đang sử dụng thực sự là chuỗi được trả về bởi [bí danh gọi lại] (https://developer.android.com/reference/android/security/KeyChainAliasCallback.html#alias (java. lang.String))? Bạn có thể đăng thêm mã của mình xung quanh cuộc gọi đó không? –

+0

Bạn đã đúng, tôi không thực sự lưu trữ nó đúng cách và vì vậy đã tìm kiếm bí danh sai. Nếu bạn đặt đề xuất này làm câu trả lời, tôi sẽ đánh dấu nó là chính xác. –

Trả lời

4

Vì mục đích của hậu thế, và để lặp lại nhận xét của tôi, vấn đề là bí danh không được lưu trữ đúng cách, và vì vậy cuộc gọi này đã cố gắng truy cập khóa riêng tư không liên quan hoặc không tồn tại.

Các vấn đề liên quan