| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| Copyright 2015 The Android Open Source Project |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <!-- TODO(thagikura) Add tests for Activity once InstrumentationTests can be run |
| on an emulator or a device. |
| At this moment, due to the different API between the image and the SDK, they can't be launched. |
| E.g. Skipping device 'Nexus 5 - MNC', due to different API preview 'MNC' and 'android-MNC' |
| --> |
| <sample> |
| <name>Confirm Credential</name> |
| <group>security</group> |
| <package>com.example.android.confirmcredential</package> |
| |
| <minSdk>"MNC"</minSdk> |
| <targetSdkVersion>"MNC"</targetSdkVersion> |
| <compileSdkVersion>"android-MNC"</compileSdkVersion> |
| |
| <strings> |
| <intro> |
| <![CDATA[ |
| This sample demonstrates how you can use device credentials (PIN, Pattern, Password) in your app |
| to authenticate the user before they are trying to complete some actions. |
| ]]> |
| </intro> |
| </strings> |
| |
| <!-- The basic templates have already been enabled. Uncomment more as desired. --> |
| <template src="base" /> |
| |
| <metadata> |
| <!-- Values: {DRAFT | PUBLISHED | INTERNAL | DEPRECATED | SUPERCEDED} --> |
| <status>DRAFT</status> |
| <categories>Security</categories> |
| <technologies>Android</technologies> |
| <languages>Java</languages> |
| <solutions>Mobile</solutions> |
| <!-- Values: {BEGINNER | INTERMEDIATE | ADVANCED | EXPERT} --> |
| <level>INTERMEDIATE</level> |
| <!-- Dimensions: 512x512, PNG fomrat --> |
| <icon>screenshots/big-icon.png</icon> |
| <!-- Path to screenshots. Use <img> tags for each. --> |
| <screenshots> |
| <img>screenshots/1-purchase.png</img> |
| <img>screenshots/2-show-confirm-credential.png</img> |
| <img>screenshots/3-already-authenticated.png</img> |
| </screenshots> |
| <api_refs> |
| <android>android.app.KeyguardManager.createConfirmDeviceCredentialIntent</android> |
| <android>android.security.KeyGenParameterSpec</android> |
| <android>java.security.KeyStore</android> |
| <android>javax.crypto.Cipher</android> |
| <android>javax.crypto.KeyGenerator</android> |
| </api_refs> |
| |
| <description> |
| <![CDATA[ |
| A sample that demonstrates how to use device credentials (PIN, Pattern, Password) in your app |
| ]]> |
| </description> |
| |
| <intro> |
| <![CDATA[ |
| This sample demonstrates how you can use device credentials (PIN, Pattern, Password) in your app |
| to authenticate the user before they are trying to complete some actions. |
| |
| First you need to create a symmetric key in the Android Key Store using [KeyGenerator][1] |
| which can be only be used after the user has authenticated after the user is authenticated |
| with their device credentials and pass [KeyGenParameterSpec][2]. |
| |
| By setting an integer value to the |
| [KeyGeneratorSpec.Builder.setUserAuthenticationValidityDurationSeconds][3], you can consider the |
| user as authenticated if the user has been authenticated with the device credentials |
| within the last x seconds. |
| |
| Then by calling [KeyguardManager.createConfirmDeviceCredentialIntent][4], you can show a screen |
| to confirm device credentials to the user. |
| |
| [1]: https://developer.android.com/reference/javax/crypto/KeyGenerator.html |
| [2]: https://developer.android.com/reference/android/security/KeyGenParameterSpec.html |
| [3]: https://developer.android.com/reference/android/security/KeyGenParameterSpec.Builder#setUserAuthenticationValidityDurationSeconds().html |
| [4]: https://developer.android.com/reference/android/app/KeyguardManager.createConfirmDeviceCredentialIntent().html |
| ]]> |
| </intro> |
| </metadata> |
| </sample> |