/************************************************************************ * * * Copyright 1989-2011 by TrendMicro, Inc., all rights reserved. * * * * Legal statements: * * * * THE SOFTWARE PROVIDED BY DGATE IS PROVIDED ON AN "AS IS" BASIS * * WITHOUT ANY REPRESENTATIONS, WARRANTIES OR CONDITIONS OF ANY KIND, * * WHETHER EXPRESS OR IMPLIED, STATUTORY, OUT OF A COURSE OF DEALING * * OR USAGE, TRADE OR OTHERWISE INCLUDING ANY IMPLIED WARRANTIES OR * * CONDITIONS OF MERCHANTABILITY, MERCHANTABLE QUALITY, FITNESS * * FOR ANY PARTICULAR PURPOSE OR USE OR NON-INFRINGEMENT. DGATE DOES * * NOT REPRESENT OR WARRANT THAT THE SOFTWARE WILL BE FREE OF DEFECT, * * UNINTERRUPTED, ACCURATE, COMPLETE, CURRENT, STABLE, BUG-FREE, * * ERROR-FREE, OR AVAILABLE AT ANY TIME. * * * * TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL DGATE * * BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, INCIDENTAL, * * SPECIAL, RELIANCE, PUNITIVE OR OTHER DAMAGES OR EXPENSES OF ANY * * KIND, INCLUDING BUT NOT LIMITED TO ANY LOSS OF PROFITS OR REVENUE, * * LOST SAVINGS, LOST BUSINESS, LOST BUSINESS OPPORTUNITIES, LOST DATA, * * LOST GOODWILL, LOSS FROM WORK STOPPAGE, COSTS OF OVERHEAD, COSTS OF * * COVER, LOSS OF ANTICIPATED BENEFITS HEREUNDER, ARISING OUT OF OR * * RELATED TO THIS AGREEMENT, HOWEVER CAUSED AND ON ANY THEORY OF * * LIABILITY, EVEN IF THE PARTY HAS BEEN ADVISED OF THE POSSIBILITY * * OF SUCH DAMAGES, AND NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL * * PURPOSE OF ANY LIMITED REMEDY STATED HEREIN. * * * * REVISION/MODIFICATION HISTORY: * * (1) Created by Fallson Xu, TrendMicro, Inc. * * 02/10/2011. * * * *************************************************************************/ #ifndef CME_DLL_H #define CME_DLL_H #ifdef WIN32 #define CmeDllExport _declspec(dllexport) #else #define CmeDllExport #endif /***************************************************************************************/ #define ENTITY_NAME_LEN 64 #define PATTERN_LEN 1024 #define ALPHABET_SIZ 64 typedef long long DLPEntityID; typedef char DLPEntityName[ENTITY_NAME_LEN]; typedef char DLPPattern[PATTERN_LEN]; typedef int DLPEntityType; typedef char DLPEntityAlphabet[ALPHABET_SIZ]; typedef struct _DLPEntity { DLPEntityID ID; DLPEntityName name; DLPPattern pattern; DLPEntityType type; DLPEntityType validationEntityType; unsigned int isPatternCaseSensitive; DLPEntityAlphabet alphabet; unsigned short minlen; unsigned short maxlen; unsigned short endlen; unsigned short l_radius; unsigned short r_radius; unsigned short min_l_radius; }DLPEntity; typedef struct _DLPEntityRecord{ DLPEntityID ID; unsigned int pos; unsigned int length; }DLPEntityRecord; typedef struct _DLPValidatorInfo{ char validatorName[ENTITY_NAME_LEN]; DLPEntityType validationEntityType; } DLPValidatorInfo; /**********************************Entity type*********************************************/ #define DLP_ENTITY_TYPE0 1 #define DLP_ENTITY_TYPE1 2 #define DLP_ENTITY_TYPE2 3 #define DLP_ENTITY_TYPE3 4 /***********************************Validator type****************************************/ #define NO_VALIDATION 1 #define LUHN_CHECK_SUM_VALIDATION 2 #define SSN_VALIDATION 3 #define CREDIT_CARD_NUMBR_VALIDATION 4 #define US_PHONE_NUMBER_VALIDATION 5 #define US_DATE_VALIDATION 6 #define PRC_NATIONAL_ID_VALIDATION 7 #define TAIWAN_ID_VALIDATION 8 #define SOUTH_KOREAN_ID_VALIDATION 9 #define CANADIAN_SOCIAL_INSURANCE_ID_VALIDATION 10 #define NORWEGIAN_BIRTH_NUMBER_VALIDATION 11 #define AMERICAN_NAME_VALIDATION 12 #define ABA_ROUTING_NUMBER_VALIDATION 13 #define UK_DATE_VALIDATION 14 #define UK_NHS_NUMBER_VALIDATION 15 #define MAX_INT_VALIDATION 16 #define German_Tax_ID 101 #define IBAN 102 #define NPI 103 #define HIC 104 #define ISO_Date 105 #define Swift_BIC 106 #define France_INSEE_Code 107 #define Spanish_NIF 108 #define Irish_PPSN 109 #define Polish_ID_Number 110 #define Finish_ID 111 #define Fake_ID 112 #define RAMQ 113 //Quebec Healthcare Medical Number #define Danish_PID 114 #define Austria_SSN 115 #define Dominican_ID 116 //Dominican Republic ID Number #define Turkish_ID 117 #define SKHospital_ID 118 #define VGHospital_ID 119 #define Polish_Document_ID_Number 120 #define MexicoFederalTax_ID 121 #define SouthAfricanPerson_ID 122 #define Spanish_Name 123 #define JihsunBankAccountNumber 124 #define RoyalHospital_ID 125 #define MegaBankAccountNumber 126 #define SingaporeNRIC 300 #define BrazilCPF 301 #define BelgiumNRN 302 #define BulgariaUCN 303 #define YCzechBirthNumber 304 #define EstoniaPIDN 305 #define GermanyPhoneNumber 306 #define HungaryPIDN 307 #define ItalyFiscalCode 308 #define LatviaPersonCode 309 #define LithuaniaPersonCode 310 #define RomaniaNPCode 311 #define SlovakiaBirthNumber 312 #define SloveniaUMCN 313 #define SwedenPIDN 314 #define AustraliaTFN 315 #define NewZealandNHI 316 #define NewZealandIRD 317 #define ChinaUPDebitCreditCard 318 #define HongKongIDCard 319 #define IndiaIDNumber 320 #define MalaysiaNRIC 321 #define MalaysiaPhoneNumber 322 #define CroatiaPIN 323 #define IndiaPhoneNumber 324 #define CroatiaUMCN 325 #define MacedoniaUMCN 326 #define MontenegroUMCN 327 #define SerbiaUMCN 328 #define BHUMCN 329 #define ChinaBankAccount 333 #define BrazilCNPJ 334 // this is for OSCE server side. a copy of cme_dll.h is also inside OSCE. #define JapanMyNumberIndividual 335 #define JapanMyNumberCorporate 336 #define ThaiNationalID 337 #define SCBBankAccount 338 #define SCBBankLoanAccount 339 #define BINNumber 340 #define JapanDriverLicenseNumber 341 #define NigeriaVerveCard 342 #define AustriaPhoneNumber 343 #define BelgiumPhoneNumber 344 #define BulgariaPhoneNumber 345 #define CroatiaPhoneNumber 346 #define CyprusPhoneNumber 347 #define CzechRepublicPhoneNumber 348 #define DenmarkPhoneNumber 349 #define EstoniaPhoneNumber 350 #define FinlandPhoneNumber 351 #define GreecePhoneNumber 352 #define HungaryPhoneNumber 353 #define IrelandPhoneNumber 354 #define ItalyPhoneNumber 355 #define LatviaPhoneNumber 356 #define LithuaniaPhoneNumber 357 #define LuxembourgPhoneNumber 358 #define MaltaPhoneNumber 359 #define NetherlandsPhoneNumber 360 #define PolandPhoneNumber 361 #define PortugalPhoneNumber 362 #define RomaniaPhoneNumber 363 #define SlovakiaPhoneNumber 364 #define SloveniaPhoneNumber 365 #define SpainPhoneNumber 366 #define SwedenPhoneNumber 367 #define LuxembourgPersonalIDNumber 368 #define NetherlandsPersonalIDNumber 369 #define PortugalPersonalIDNumber 370 #define BusinessAdministrationNumber 371 #define HungarySocialSecurityNumber 372 #define HungaryTaxIdentificationNumber 373 #define MAX_EXT_VALIDATION 374 /***************************************************************************************/ #ifdef __cplusplus extern "C" { #endif /**************************************************************** Description: Match text with specified validators and regular expression. Example: ****************************************************************/ CmeDllExport int matchEntityPattern(char * text, int len, DLPEntity * entityDef, int numEntity, DLPEntityRecord ** record, int * numRec); /**************************************************************** Description: List all validator name and validator ID pairs. Example: // 1. Define function pointer first typedef void (*FpListValidators) ( DLPValidatorInfo * listDLPValidatorInfo, int * numValidators); // 2. Load cme_dll.dll and get procedure address of listValidators HINSTANCE hCmeDll = LoadLibrary("cme_dll.dll"); FpListValidators fpListValidators = (FpListValidators) GetProcAddress(hCmeDll, "listValidators"); // 3. Get total number of validators and name-id pairs int n = 0; DLPValidatorInfolistDLPValidatorInfo = NULL; fpListValidators(&listDLPValidatorInfo, &n); for(int i=0; i