Implement GCM

Signed-off-by: Umair Khan <omerjerk@gmail.com>