Andrew Scull | 7093431 | 2018-01-03 11:51:54 +0000 | [diff] [blame] | 1 | #include "AuthSecret.h" |
| 2 | |
| 3 | namespace android { |
| 4 | namespace hardware { |
| 5 | namespace authsecret { |
| 6 | namespace V1_0 { |
| 7 | namespace implementation { |
| 8 | |
| 9 | // Methods from ::android::hardware::authsecret::V1_0::IAuthSecret follow. |
| 10 | Return<void> AuthSecret::primaryUserCredential(const hidl_vec<uint8_t>& secret) { |
| 11 | (void)secret; |
| 12 | |
| 13 | // To create a dependency on the credential, it is recommended to derive a |
| 14 | // different value from the provided secret for each purpose e.g. |
| 15 | // |
| 16 | // purpose1_secret = hash( "purpose1" || secret ) |
| 17 | // purpose2_secret = hash( "purpose2" || secret ) |
| 18 | // |
| 19 | // The derived values can then be used as cryptographic keys or stored |
| 20 | // securely for comparison in a future call. |
| 21 | // |
| 22 | // For example, a security module might require that the credential has been |
| 23 | // entered before it applies any updates. This can be achieved by storing a |
| 24 | // derived value in the module and only applying updates when the same |
| 25 | // derived value is presented again. |
| 26 | // |
| 27 | // This implementation does nothing. |
| 28 | |
| 29 | return Void(); |
| 30 | } |
| 31 | |
Andrew Scull | bd4e48c | 2018-01-19 19:17:56 +0000 | [diff] [blame] | 32 | // Note: on factory reset, clear all dependency on the secret. |
| 33 | // |
| 34 | // With the example of updating a security module, the stored value must be |
| 35 | // cleared so that the new primary user enrolled as the approver of updates. |
| 36 | // |
| 37 | // This implementation does nothing as there is no dependence on the secret. |
Andrew Scull | 7093431 | 2018-01-03 11:51:54 +0000 | [diff] [blame] | 38 | |
| 39 | } // namespace implementation |
| 40 | } // namespace V1_0 |
| 41 | } // namespace authsecret |
| 42 | } // namespace hardware |
| 43 | } // namespace android |