Sunday 31 December 2017

Provisioning Factory for Hardware TEE

A mobile digital Car Key SDK by using Hardware TEE (Trusted Execution Environment) technology, used as Digital Card Keys to operate your car.

Technical Stack:
  • Android Java Programming
  • Junit, Mockito, PowerMockito, Robolectric.
  • Trustsonic TEE
  • Certificate Pinning




Saturday 30 December 2017

My Lianyi

Match, meet, date & love. Seek fun at MyLianYi! MyLianYi is just that, an app dedicated to help singles find each other for friendship, dating and meaningful relationships. If you are single and finding it hard to meet new people, MyLianYi can help you as we will provide facilities for members to participate in networking/ dating activities. Join MyLianYi immediately, we will help to select and match the dating, and host an event to let the members know each other further. You can also send them self-introduction information to make it easier for more people to understand you.

Technical Stack:
  • Android Kotlin Programming
  • iOS Swift Programming
  • FCM notification
  • Basic Authentication
  • Sprint Boot
  • MySQL

iOS Screenshots 





Android Screenshots





Thursday 23 November 2017

Remote Medical Monitor

Designed a solution for remote medical monitor, including an IoT device, AWS IoT broker and server and an iOS mobile App. The solution got best commercial solution award in Renesas GR Peach Design Contest in 2017.

Technical Stack:
  • iOS Objective-C Programming
  • AWS IoT, DynamoDB, Lambda Micro Service
  • Secure Communication
  • SMS and notification

Presentation:
https://drive.google.com/file/d/1hZm-E19pKQWo79rpMJPWkq-B6AZyRC8x/view?usp=sharing


Video Clips:




Tuesday 26 September 2017

Software TEE - Virtual Car Key

This is an App for our IoT solution to serve our valuable customers (Valeo). You can upload your TA (a file with some configurations) to our backend server, After then they can download the TA and run it.

You can use this app to lock and unlock the car, door with our smart lock, you can even start and stop the car engine, depending on the TA you uploaded to our backend server.

To be able to operate it with our smart lock, you need to “Install TA” first, then you can “Run TA”, if you have our smart lock, you should be enabled to do the operation as you configured in the TA on our server.

Technical Stack:
  • Android Java Programming
  • iOS Objective-C Programming
  • Native C programming
  • WhiteBox Crypto with Key Rotation for every 3 months
  • Secure Channel Protocol
  • App Protection: Anti-tampering, Anti-debug, Anti-hooking, Root/Jailbreak detection, Android App re-signing detection.
Experience:
  • Built CI/CD pipelines with Jenkins, up to 10 customized deliverables for different customers. 
  • Created a Python script to generate certificate public key hash for certificate pinning. 
  • Implemented the mechanism to renew the White-Box keys for every 2-3 months. 
  • Worked with server team to improve the network performance by reducing the commands from the server. 
  • Worked with external labs (UL and APPLUS) and internal lab to do pen-testing for the application. 
  • Fixed memory leakage issues and crash issue caused by CPU cache. 



Reference Link: https://mymotorwheels.wordpress.com/2016/09/21/valeo-partnered-with-gemalto-to-secure-its-virtual-car-key-valeo-inblue/

Wednesday 11 January 2017

How to solve Tomcat – java.lang.OutOfMemoryError: PermGen in Amazon Linux AMI

Tomcat web server often suffers from java.lang.OutOfMemoryError: PermGen space whenever you deploy and un-deploy your web application couple of time. 
In this article, we will see how to fix java.lang.OutOfMemoryError: PermGen Space in tomcat server.



1. Goto Tomcat startup script file location, for Amazon Linux AMI. It locates at "/etc/rc.d/init.d/"

2. Edit the script file by "sudo nano tomcat7"

3. Add the following JAVA_OPTS at the beginning of the file after "NAME="$(basename $0)""
export JAVA_OPTS="-Xms1024m -Xmx10246m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"

You can change the actual heap size and PermGen Space as per your requirement.

4. Restart Tomcat.

Increasing PermGen space can prevent java.lang.OutOfMemoryError: PermGen in tomcat only for some time and it will eventually occur based on how many times you redeploy your web application, its best to find the offending class which is causing a memory leak in tomcat and fix it.

Sunday 1 January 2017

Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment variable to

Recently always met this issue while using Android Studio, "Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment variable to ..."

After Android Studio starts to support Instant Run, this issue becomes critical. If you want to use Instant Run, you should keep your gradle and gradle plugin version updated. 

First time I met this issue, I search online, luckily I can easily find the solution. But 2nd time is not so lucky, because the answer online is outdated. So the best solution is to know which version is the latest one, otherwise every time I need to waste a lot of time to find the solution.

So here is the solution.
Here is the link to check the latest version of gradle plugin.
https://jcenter.bintray.com/com/android/tools/build/gradle/

Example to apply to root level build.gradle file (Updated on 26 Jul 2017),
classpath 'com.android.tools.build:gradle:2.4.0-alpha7'


Here is the link to check the latest version of gradle.
Example to apply to gradle-wrapper.properties file (Released on 26 Jul 2017, updated on 26 Jul 2017),
distributionUrl=https\://services.gradle.org/distributions/g‌​radle-4.0.2-all.zip