title: Is there any secure storage in Android through Monodroid out of the box?
body: <p>Like many people - I am developing an app with a shared codebase (Windows Store + Android + MonoTouch  + [later] WP8).</p>
  
  <p>Also, as with many apps, I have local state that I need to persist for this app.</p>
  
  <p>One piece of information I store is an authentication token for the signed-in user.  On the Windows Store platform I have implemented the storage of this with a mixture of roaming settings (<code>ApplicationData.Current.RoamingSettings</code>) for the token's ancillary data (user name and issued date) and the <code>PasswordVault</code> for the actual token value.  Thus the token is protected from OS-level introspection, because it is encrypted by the OS.</p>
  
  <p>Now I'm implementing the same interface for my MonoDroid build, and I can't see any way, provided by the platform, to store data that can only be decrypted by my application - in the same way as the password vault can be used for Store apps.</p>
  
  <p>As a result, at the moment, I'm simply using the <code>Android.Content.ISharedPreferences</code> interface via the <code>Application.Context.GetSharedPreferences</code> method to read and write these values.</p>
  
  <p>So am I correct in my assumption that the platform (MonoDroid or Android) offers no secure storage OOB?  Is the only alternative to implement encryption within the app - which will of course require baking the encryption key into the code?  Or can I grab the certificate used to sign the app and use that as a key?</p>
  
  <p>Ultimately it's not the end of the world if I can't encrypt this data, since the token <em>is</em> time-limited anyway - but it would be nice if I could actually do it <em>properly</em>!</p>