<!--
  Copyright 2013 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.
  -->

<resources>
    <string name="app_name">Androidkeystore</string>
    <string name="sample_action">Sample action</string>

    <!-- Steps -->
    <string name="intro_message">
        Welcome to the <b>Basic Android Key Store</b> sample!\n\n
        This sample demonstrates how to use the Android Key Store to safely create and store
        encryption keys that only your application can access.  You can also sign data using those
        keys.\n\n
        To create a new KeyPair, click \"Create\".\n\n
        To sign some data using a KeyPair, click \"Sign\".\n\n
        To verify the data using the signature provided, click \"Verify\".\n\n
    </string>

    <!-- Button labels -->
    <string name="str_create_keys">Create</string>
    <string name="str_sign_data">Sign</string>
    <string name="str_verify_data">Verify</string>

</resources>
