/*
 * =====================================================================================
 *
 *       Filename:  certRevocationList.c
 *
 *    Description:  Check revocation cert and prevent to install cert.
 *
 *        Version:  1.0
 *        Created:  09/12/2016 04:31:36 PM
 *       Compiler:  armcc
 *
 *         Author:  Dongwook Shim (), dw.shim@samsung.com
 *        Company:  Samsung Electronics
 *
 *        Copyright (c) 2016 by Samsung Electronics, All rights reserved. 
 *
 * =====================================================================================
 */

#include "certRevocationList.h"

// UID black list.
static const char *UidBlackList[] = 
{
	// Add UID to block.
	"PHN-P:20140810:01:02:00251492:ROOT",	// CHN
	"PHN-P:20140914:00:20:00533296:ROOT",	// CS - Z3X Hacking.
	"PHN-P:20140914:01:20:00527807:ROOT",
	"PHN-P:20140920:00:20:00418467:ROOT",
	"PHN-P:20160330:00:20:00226719:ROOT",	// CS - SEDA GSPN Hacking.
	"PHN-P:20160330:00:20:00539383:ROOT",
	"PHN-P:20160330:00:20:00598555:ROOT",
	"PHN-P:20160628:00:20:00368783:ROOT",
	"PHN-P:20160628:00:20:00368808:ROOT",
	"PHN-P:20160628:00:20:00368809:ROOT",
	"PHN-P:20160628:00:20:00368836:ROOT",
	"PHN-P:20160628:00:20:00368837:ROOT",
	"PHN-P:20160628:00:20:00368867:ROOT",
	"PHN-P:20160628:00:20:00368905:ROOT",
	"PHN-P:20160628:00:20:00368910:ROOT",
	"PHN-P:20160628:00:20:00368918:ROOT",
	"PHN-P:20160628:00:20:00368928:ROOT",
	"PHN-P:20160705:00:20:00002085:ROOT",
	"PHN-P:20160705:00:20:00002135:ROOT",
	"PHN-P:20160705:00:20:00002150:ROOT",
	"PHN-P:20160705:00:20:00002161:ROOT",
	"PHN-P:20160705:00:20:00002142:ROOT",
	"PHN-P:20160708:00:20:00230879:ROOT",
	"PHN-P:20160708:00:20:00230910:ROOT",
	"PHN-P:20160708:00:20:00230911:ROOT",
	"PHN-P:20160708:00:20:00230944:ROOT",
	"PHN-P:20160708:00:20:00230945:ROOT",
	"PHN-P:20160708:00:20:00230949:ROOT",
	"PHN-P:20160708:00:20:00230954:ROOT",
	"PHN-P:20160708:00:20:00230962:ROOT",
	"PHN-P:20160708:00:20:00230963:ROOT",
	"PHN-P:20160708:00:20:00230972:ROOT",
	"PHN-P:20160708:00:20:00230973:ROOT",
	"PHN-P:20160708:00:20:00230984:ROOT",
	"PHN-P:20160708:00:20:00230985:ROOT",
	"PHN-P:20160708:00:20:00231014:ROOT",
	"PHN-P:20160708:00:20:00231015:ROOT",
	"PHN-P:20160708:00:20:00231032:ROOT",
	"PHN-P:20160708:00:20:00231033:ROOT",
	"PHN-P:20160708:00:20:00231052:ROOT",
	"PHN-P:20160708:00:20:00231075:ROOT",
	"PHN-P:20160708:00:20:00231098:ROOT",
	"PHN-P:20160708:00:20:00231124:ROOT",
	"PHN-P:20160708:00:20:00231152:ROOT",
	"PHN-P:20160708:00:20:00231153:ROOT",
	"PHN-P:20160708:00:20:00231182:ROOT",
	"PHN-P:20160708:00:20:00231216:ROOT",
	"PHN-P:20160708:00:20:00231220:ROOT",
	"PHN-P:20160708:00:20:00231221:ROOT",
	"PHN-P:20160708:00:20:00231227:ROOT",
	"PHN-P:20160708:00:20:00231235:ROOT",
	"PHN-P:20160708:00:20:00231245:ROOT",
	"PHN-P:20160708:00:20:00231256:ROOT",
	"PHN-P:20160708:00:20:00231257:ROOT",
	"PHN-P:20160708:00:20:00231270:ROOT",
	"PHN-P:20160708:00:20:00231271:ROOT",
	"PHN-P:20160708:00:20:00231287:ROOT",
	"PHN-P:20160708:00:20:00231304:ROOT",
	"PHN-P:20160708:00:20:00231324:ROOT",
	"PHN-P:20160708:00:20:00231325:ROOT",
	"PHN-P:20160708:00:20:00231346:ROOT",
	"PHN-P:20160708:00:20:00231347:ROOT",
	"PHN-P:20160708:00:20:00231370:ROOT",
	"PHN-P:20160708:00:20:00231371:ROOT",
	"PHN-P:20160708:00:20:00231424:ROOT",
	"PHN-P:20160708:00:20:00231425:ROOT",
	"PHN-P:20160708:00:20:00231486:ROOT",
	"PHN-P:20160708:00:20:00231487:ROOT",
	"PHN-P:20160708:00:20:00231490:ROOT",
	"PHN-P:20160708:00:20:00231491:ROOT",
	"PHN-P:20160708:00:20:00231496:ROOT",
	"PHN-P:20160708:00:20:00231497:ROOT",
	"PHN-P:20160708:00:20:00231504:ROOT",
	"PHN-P:20160708:00:20:00231505:ROOT",
	"PHN-P:20160708:00:20:00231514:ROOT",
};

bool isAllowedUID(char *uid, int uid_size)
{
	int i, listSize = sizeof(UidBlackList) / sizeof(char *);

	if(uid == NULL || uid_size <= 0)
		return false;

	// Step 1 - Check if UID is exist in black-list.
	for(i = 0; i < listSize; i++)
	{
		if(!strncmp((const char *)uid, UidBlackList[i], strlen(UidBlackList[i])))
			return false;
	}
	
	return true;
}
