ICU 73.2  73.2
uspoof.h
Go to the documentation of this file.
00001 // © 2016 and later: Unicode, Inc. and others.
00002 // License & terms of use: http://www.unicode.org/copyright.html
00003 /*
00004 ***************************************************************************
00005 * Copyright (C) 2008-2016, International Business Machines Corporation
00006 * and others. All Rights Reserved.
00007 ***************************************************************************
00008 *   file name:  uspoof.h
00009 *   encoding:   UTF-8
00010 *   tab size:   8 (not used)
00011 *   indentation:4
00012 *
00013 *   created on: 2008Feb13
00014 *   created by: Andy Heninger
00015 *
00016 *   Unicode Spoof Detection
00017 */
00018 
00019 #ifndef USPOOF_H
00020 #define USPOOF_H
00021 
00022 #include "unicode/utypes.h"
00023 #include "unicode/uset.h"
00024 #include "unicode/parseerr.h"
00025 
00026 #if !UCONFIG_NO_NORMALIZATION
00027 
00028 
00029 #if U_SHOW_CPLUSPLUS_API
00030 #include "unicode/localpointer.h"
00031 #include "unicode/unistr.h"
00032 #include "unicode/uniset.h"
00033 #endif
00034 
00035 
00356 U_CDECL_BEGIN
00357 
00358 struct USpoofChecker;
00362 typedef struct USpoofChecker USpoofChecker; 
00364 struct USpoofCheckResult;
00369 typedef struct USpoofCheckResult USpoofCheckResult;
00370 
00378 typedef enum USpoofChecks {
00387     USPOOF_SINGLE_SCRIPT_CONFUSABLE =   1,
00388 
00397     USPOOF_MIXED_SCRIPT_CONFUSABLE  =   2,
00398 
00407     USPOOF_WHOLE_SCRIPT_CONFUSABLE  =   4,
00408 
00418     USPOOF_CONFUSABLE               =   USPOOF_SINGLE_SCRIPT_CONFUSABLE | USPOOF_MIXED_SCRIPT_CONFUSABLE | USPOOF_WHOLE_SCRIPT_CONFUSABLE,
00419 
00420 #ifndef U_HIDE_DEPRECATED_API
00421 
00426     USPOOF_ANY_CASE                 =   8,
00427 #endif  /* U_HIDE_DEPRECATED_API */
00428 
00442     USPOOF_RESTRICTION_LEVEL        = 16,
00443 
00444 #ifndef U_HIDE_DEPRECATED_API
00445 
00450     USPOOF_SINGLE_SCRIPT            =  USPOOF_RESTRICTION_LEVEL,
00451 #endif  /* U_HIDE_DEPRECATED_API */
00452 
00459     USPOOF_INVISIBLE                =  32,
00460 
00466     USPOOF_CHAR_LIMIT               =  64,
00467 
00474     USPOOF_MIXED_NUMBERS            = 128,
00475 
00495     USPOOF_HIDDEN_OVERLAY            = 256,
00496 
00502     USPOOF_ALL_CHECKS               = 0xFFFF,
00503 
00516     USPOOF_AUX_INFO                  = 0x40000000
00517 
00518     } USpoofChecks;
00519 
00520 
00530     typedef enum URestrictionLevel {
00537         USPOOF_ASCII = 0x10000000,
00544         USPOOF_SINGLE_SCRIPT_RESTRICTIVE = 0x20000000,
00558         USPOOF_HIGHLY_RESTRICTIVE = 0x30000000,
00566         USPOOF_MODERATELY_RESTRICTIVE = 0x40000000,
00572         USPOOF_MINIMALLY_RESTRICTIVE = 0x50000000,
00578         USPOOF_UNRESTRICTIVE = 0x60000000,
00584         USPOOF_RESTRICTION_LEVEL_MASK = 0x7F000000,
00585 #ifndef U_HIDE_INTERNAL_API
00586 
00590         USPOOF_UNDEFINED_RESTRICTIVE = -1
00591 #endif  /* U_HIDE_INTERNAL_API */
00592     } URestrictionLevel;
00593 
00604 U_CAPI USpoofChecker * U_EXPORT2
00605 uspoof_open(UErrorCode *status);
00606 
00607 
00629 U_CAPI USpoofChecker * U_EXPORT2
00630 uspoof_openFromSerialized(const void *data, int32_t length, int32_t *pActualLength,
00631                           UErrorCode *pErrorCode);
00632 
00663 U_CAPI USpoofChecker * U_EXPORT2
00664 uspoof_openFromSource(const char *confusables,  int32_t confusablesLen,
00665                       const char *confusablesWholeScript, int32_t confusablesWholeScriptLen,
00666                       int32_t *errType, UParseError *pe, UErrorCode *status);
00667 
00668 
00674 U_CAPI void U_EXPORT2
00675 uspoof_close(USpoofChecker *sc);
00676 
00686 U_CAPI USpoofChecker * U_EXPORT2
00687 uspoof_clone(const USpoofChecker *sc, UErrorCode *status);
00688 
00689 
00730 U_CAPI void U_EXPORT2
00731 uspoof_setChecks(USpoofChecker *sc, int32_t checks, UErrorCode *status);
00732 
00744 U_CAPI int32_t U_EXPORT2
00745 uspoof_getChecks(const USpoofChecker *sc, UErrorCode *status);
00746 
00758 U_CAPI void U_EXPORT2
00759 uspoof_setRestrictionLevel(USpoofChecker *sc, URestrictionLevel restrictionLevel);
00760 
00761 
00769 U_CAPI URestrictionLevel U_EXPORT2
00770 uspoof_getRestrictionLevel(const USpoofChecker *sc);
00771 
00814 U_CAPI void U_EXPORT2
00815 uspoof_setAllowedLocales(USpoofChecker *sc, const char *localesList, UErrorCode *status);
00816 
00838 U_CAPI const char * U_EXPORT2
00839 uspoof_getAllowedLocales(USpoofChecker *sc, UErrorCode *status);
00840 
00841 
00860 U_CAPI void U_EXPORT2
00861 uspoof_setAllowedChars(USpoofChecker *sc, const USet *chars, UErrorCode *status);
00862 
00863 
00884 U_CAPI const USet * U_EXPORT2
00885 uspoof_getAllowedChars(const USpoofChecker *sc, UErrorCode *status);
00886 
00887 
00920 U_CAPI int32_t U_EXPORT2
00921 uspoof_check(const USpoofChecker *sc,
00922                          const UChar *id, int32_t length,
00923                          int32_t *position,
00924                          UErrorCode *status);
00925 
00926 
00959 U_CAPI int32_t U_EXPORT2
00960 uspoof_checkUTF8(const USpoofChecker *sc,
00961                  const char *id, int32_t length,
00962                  int32_t *position,
00963                  UErrorCode *status);
00964 
00965 
00994 U_CAPI int32_t U_EXPORT2
00995 uspoof_check2(const USpoofChecker *sc,
00996     const UChar* id, int32_t length,
00997     USpoofCheckResult* checkResult,
00998     UErrorCode *status);
00999 
01031 U_CAPI int32_t U_EXPORT2
01032 uspoof_check2UTF8(const USpoofChecker *sc,
01033     const char *id, int32_t length,
01034     USpoofCheckResult* checkResult,
01035     UErrorCode *status);
01036 
01055 U_CAPI USpoofCheckResult* U_EXPORT2
01056 uspoof_openCheckResult(UErrorCode *status);
01057 
01065 U_CAPI void U_EXPORT2
01066 uspoof_closeCheckResult(USpoofCheckResult *checkResult);
01067 
01082 U_CAPI int32_t U_EXPORT2
01083 uspoof_getCheckResultChecks(const USpoofCheckResult *checkResult, UErrorCode *status);
01084 
01095 U_CAPI URestrictionLevel U_EXPORT2
01096 uspoof_getCheckResultRestrictionLevel(const USpoofCheckResult *checkResult, UErrorCode *status);
01097 
01109 U_CAPI const USet* U_EXPORT2
01110 uspoof_getCheckResultNumerics(const USpoofCheckResult *checkResult, UErrorCode *status);
01111 
01112 
01156 U_CAPI int32_t U_EXPORT2
01157 uspoof_areConfusable(const USpoofChecker *sc,
01158                      const UChar *id1, int32_t length1,
01159                      const UChar *id2, int32_t length2,
01160                      UErrorCode *status);
01161 
01162 
01163 
01189 U_CAPI int32_t U_EXPORT2
01190 uspoof_areConfusableUTF8(const USpoofChecker *sc,
01191                          const char *id1, int32_t length1,
01192                          const char *id2, int32_t length2,
01193                          UErrorCode *status);
01194 
01195 
01196 
01197 
01229 U_CAPI int32_t U_EXPORT2
01230 uspoof_getSkeleton(const USpoofChecker *sc,
01231                    uint32_t type,
01232                    const UChar *id,  int32_t length,
01233                    UChar *dest, int32_t destCapacity,
01234                    UErrorCode *status);
01235 
01269 U_CAPI int32_t U_EXPORT2
01270 uspoof_getSkeletonUTF8(const USpoofChecker *sc,
01271                        uint32_t type,
01272                        const char *id,  int32_t length,
01273                        char *dest, int32_t destCapacity,
01274                        UErrorCode *status);
01275 
01288 U_CAPI const USet * U_EXPORT2
01289 uspoof_getInclusionSet(UErrorCode *status);
01290 
01303 U_CAPI const USet * U_EXPORT2
01304 uspoof_getRecommendedSet(UErrorCode *status);
01305 
01328 U_CAPI int32_t U_EXPORT2
01329 uspoof_serialize(USpoofChecker *sc,
01330                  void *data, int32_t capacity,
01331                  UErrorCode *status);
01332 
01333 U_CDECL_END
01334 
01335 #if U_SHOW_CPLUSPLUS_API
01336 
01337 U_NAMESPACE_BEGIN
01338 
01353 U_DEFINE_LOCAL_OPEN_POINTER(LocalUSpoofCheckerPointer, USpoofChecker, uspoof_close);
01371 U_DEFINE_LOCAL_OPEN_POINTER(LocalUSpoofCheckResultPointer, USpoofCheckResult, uspoof_closeCheckResult);
01374 U_NAMESPACE_END
01375 
01394 U_CAPI void U_EXPORT2
01395 uspoof_setAllowedUnicodeSet(USpoofChecker *sc, const icu::UnicodeSet *chars, UErrorCode *status);
01396 
01397 
01418 U_CAPI const icu::UnicodeSet * U_EXPORT2
01419 uspoof_getAllowedUnicodeSet(const USpoofChecker *sc, UErrorCode *status);
01420 
01449 U_CAPI int32_t U_EXPORT2
01450 uspoof_checkUnicodeString(const USpoofChecker *sc,
01451                           const icu::UnicodeString &id,
01452                           int32_t *position,
01453                           UErrorCode *status);
01454 
01480 U_CAPI int32_t U_EXPORT2
01481 uspoof_check2UnicodeString(const USpoofChecker *sc,
01482     const icu::UnicodeString &id,
01483     USpoofCheckResult* checkResult,
01484     UErrorCode *status);
01485 
01507 U_CAPI int32_t U_EXPORT2
01508 uspoof_areConfusableUnicodeString(const USpoofChecker *sc,
01509                                   const icu::UnicodeString &s1,
01510                                   const icu::UnicodeString &s2,
01511                                   UErrorCode *status);
01512 
01536 U_I18N_API icu::UnicodeString & U_EXPORT2
01537 uspoof_getSkeletonUnicodeString(const USpoofChecker *sc,
01538                                 uint32_t type,
01539                                 const icu::UnicodeString &id,
01540                                 icu::UnicodeString &dest,
01541                                 UErrorCode *status);
01542 
01555 U_CAPI const icu::UnicodeSet * U_EXPORT2
01556 uspoof_getInclusionUnicodeSet(UErrorCode *status);
01557 
01570 U_CAPI const icu::UnicodeSet * U_EXPORT2
01571 uspoof_getRecommendedUnicodeSet(UErrorCode *status);
01572 
01573 #endif /* U_SHOW_CPLUSPLUS_API */
01574 
01575 #endif /* UCONFIG_NO_NORMALIZATION */
01576 
01577 #endif   /* USPOOF_H */