Widespread Augmented Reality

Widespread Augmented Reality
Click on the image to get the Android Augmented Reality Heads up Display

Friday, February 19, 2016

X509 Trust Manager Interface

This is the warning letter from Google to fix the unsafe implementation of the interface X509TrustManager

My fix will be posted shortly.

Hello Google Play Developer,
Your app(s) listed at the end of this email use an unsafe implementation of the interface X509TrustManager. Specifically, the implementation ignores all SSL certificate validation errors when establishing an HTTPS connection to a remote host, thereby making your app vulnerable to man-in-the-middle attacks. An attacker could read transmitted data (such as login credentials) and even change the data transmitted on the HTTPS connection. If you have more than 20 affected apps in your account, please check the Developer Console for a full list. 
To properly handle SSL certificate validation, change your code in the checkServerTrusted method of your custom X509TrustManager interface to raise either CertificateException or IllegalArgumentException whenever the certificate presented by the server does not meet your expectations. For technical questions, you can post to Stack Overflow and use the tags “android-security” and “TrustManager.”
Please address this issue as soon as possible and increment the version number of the upgraded APK. Beginning May 17, 2016, Google Play will block publishing of any new apps or updates containing the unsafe implementation of the interface X509TrustManager.
To confirm you’ve made the correct changes, submit the updated version of your app to the Developer Console and check back after five hours. If the app hasn’t been correctly upgraded, we will display a warning.
While these specific issues may not affect every app with the TrustManager implementation, it’s best not to ignore SSL certificate validation errors. Apps with vulnerabilities that expose users to risk of compromise may be considered dangerous products in violation of the Content Policy and section 4.4 of the Developer Distribution Agreement.
Apps must also comply with the Developer Distribution Agreement and Content Policy. If you feel we have sent this warning in error, contact our policy support team through the Google Play Developer Help Center.
Regards,
The Google Play Team

©2016 Google Inc. 1600 Amphitheatre Parkway, Mountain View, CA 94043
Email preferences: You have received this mandatory email service announcement to update you about important changes to your Google Play Developer account.

Affected app(s), version(s), and class(es):
org.warmixare 
89 
org.acra.util.NaiveTrustManager;

org.warmixare2 
93 
org.acra.util.NaiveTrustManager;

Friday, January 22, 2016

What is Hashing?

Culled directly from Webopedia

Producing hash values for accessing data or for security. A hash value (or simply hash), also called a message digest, is a number generated from a string of text. The hash is substantially smaller than the text itself, and is generated by a formula in such a way that it is extremely unlikely that some other text will produce the same hash value.

Hashes play a role in security systems where they're used to ensure that transmitted messages have not been tampered with. The sender generates a hash of the message, encrypts it, and sends it with the message itself. The recipient then decrypts both the message and the hash, produces another hash from the received message, and compares the two hashes. If they're the same, there is a very high probability that the message was transmitted intact. Hashing is also a common method of accessing data records. Consider, for example, a list of names:

  • John Smith
  • Sarah Jones
  • Roger Adams
  • To create an index, called a hash table,for these records, you would apply a formula to each name to produce a unique numeric value. So you might get something like:

  • 1345873 John smith
  • 3097905 Sarah Jones
  • 4060964 Roger Adams
  • Then to search for the record containing Sarah Jones,you just need to reapply the formula, which directly yields the index key to the record. This is much more efficient than searching through all the records till the matching record is found.

    Thursday, January 7, 2016

    Select Last Row of MySQL Table (Or the very first entry to the table)

    Here are two ways where the table index is auto-incremented:

    select * from myTable where myIndex = (select MAX(myIndex) from myTable); 
    

    select * from myTable order by myIndex asc limit 1;
    

    Which one is more efficient?

    By the way, one can also select the latest entries from a MySQL table with:

    select * from myTable order by myIndex desc limit 4; 
    

    Wednesday, December 30, 2015

    Uninstall Windows 10 Built-in Apps

    There is apparently no advantage other than getting rid of stuff you do not use.

    Windows PowerShell
    Copyright (C) 2015 Microsoft Corporation. All rights reserved.

    PS C:\Users\SalFe> Get-AppxPackage *3dbuilder* | Remove-AppxPackage
    PS C:\Users\SalFe> Get-AppxPackage *zunemusic* | Remove-AppxPackage
    PS C:\Users\SalFe> Get-AppxPackage *windowsmaps* | Remove-AppxPackage
    PS C:\Users\SalFe> Get-AppxPackage *zunevideo* | Remove-AppxPackage
    PS C:\Users\SalFe> Get-AppxPackage *solitairecollection* | Remove-AppxPackage
    PS C:\Users\SalFe> Get-AppxPackage *onenote* | Remove-AppxPackage
    PS C:\Users\SalFe> Get-AppxPackage *windowsphone* | Remove-AppxPackage
    PS C:\Users\SalFe> Get-AppxPackage *bingsports* | Remove-AppxPackage
    PS C:\Users\SalFe> Get-AppxPackage *bingweather* | Remove-AppxPackage
    PS C:\Users\SalFe> Get-AppxPackage *xboxapp* | Remove-AppxPackage
    PS C:\Users\SalFe>