ICU 69.1  69.1
uspoof.h
Go to the documentation of this file.
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 ***************************************************************************
5 * Copyright (C) 2008-2016, International Business Machines Corporation
6 * and others. All Rights Reserved.
7 ***************************************************************************
8 * file name: uspoof.h
9 * encoding: UTF-8
10 * tab size: 8 (not used)
11 * indentation:4
12 *
13 * created on: 2008Feb13
14 * created by: Andy Heninger
15 *
16 * Unicode Spoof Detection
17 */
18 
19 #ifndef USPOOF_H
20 #define USPOOF_H
21 
22 #include "unicode/utypes.h"
23 #include "unicode/uset.h"
24 #include "unicode/parseerr.h"
25 
26 #if !UCONFIG_NO_NORMALIZATION
27 
28 
29 #if U_SHOW_CPLUSPLUS_API
30 #include "unicode/localpointer.h"
31 #include "unicode/unistr.h"
32 #include "unicode/uniset.h"
33 #endif
34 
35 
357 
358 struct USpoofChecker;
362 typedef struct USpoofChecker USpoofChecker;
364 struct USpoofCheckResult;
369 typedef struct USpoofCheckResult USpoofCheckResult;
370 
378 typedef enum USpoofChecks {
388 
398 
408 
419 
420 #ifndef U_HIDE_DEPRECATED_API
427 #endif /* U_HIDE_DEPRECATED_API */
428 
443 
444 #ifndef U_HIDE_DEPRECATED_API
451 #endif /* U_HIDE_DEPRECATED_API */
452 
460 
467 
475 
496 
503 
516  USPOOF_AUX_INFO = 0x40000000
517 
519 
520 
530  typedef enum URestrictionLevel {
537  USPOOF_ASCII = 0x10000000,
578  USPOOF_UNRESTRICTIVE = 0x60000000,
585 #ifndef U_HIDE_INTERNAL_API
591 #endif /* U_HIDE_INTERNAL_API */
593 
604 U_CAPI USpoofChecker * U_EXPORT2
606 
607 
629 U_CAPI USpoofChecker * U_EXPORT2
630 uspoof_openFromSerialized(const void *data, int32_t length, int32_t *pActualLength,
631  UErrorCode *pErrorCode);
632 
663 U_CAPI USpoofChecker * U_EXPORT2
664 uspoof_openFromSource(const char *confusables, int32_t confusablesLen,
665  const char *confusablesWholeScript, int32_t confusablesWholeScriptLen,
666  int32_t *errType, UParseError *pe, UErrorCode *status);
667 
668 
674 U_CAPI void U_EXPORT2
676 
686 U_CAPI USpoofChecker * U_EXPORT2
688 
689 
730 U_CAPI void U_EXPORT2
731 uspoof_setChecks(USpoofChecker *sc, int32_t checks, UErrorCode *status);
732 
744 U_CAPI int32_t U_EXPORT2
746 
758 U_CAPI void U_EXPORT2
760 
761 
769 U_CAPI URestrictionLevel U_EXPORT2
771 
814 U_CAPI void U_EXPORT2
815 uspoof_setAllowedLocales(USpoofChecker *sc, const char *localesList, UErrorCode *status);
816 
838 U_CAPI const char * U_EXPORT2
840 
841 
860 U_CAPI void U_EXPORT2
862 
863 
884 U_CAPI const USet * U_EXPORT2
886 
887 
920 U_CAPI int32_t U_EXPORT2
922  const UChar *id, int32_t length,
923  int32_t *position,
924  UErrorCode *status);
925 
926 
959 U_CAPI int32_t U_EXPORT2
961  const char *id, int32_t length,
962  int32_t *position,
963  UErrorCode *status);
964 
965 
994 U_CAPI int32_t U_EXPORT2
996  const UChar* id, int32_t length,
997  USpoofCheckResult* checkResult,
998  UErrorCode *status);
999 
1031 U_CAPI int32_t U_EXPORT2
1033  const char *id, int32_t length,
1034  USpoofCheckResult* checkResult,
1035  UErrorCode *status);
1036 
1055 U_CAPI USpoofCheckResult* U_EXPORT2
1057 
1065 U_CAPI void U_EXPORT2
1067 
1082 U_CAPI int32_t U_EXPORT2
1084 
1095 U_CAPI URestrictionLevel U_EXPORT2
1097 
1109 U_CAPI const USet* U_EXPORT2
1111 
1112 
1156 U_CAPI int32_t U_EXPORT2
1158  const UChar *id1, int32_t length1,
1159  const UChar *id2, int32_t length2,
1160  UErrorCode *status);
1161 
1162 
1163 
1189 U_CAPI int32_t U_EXPORT2
1191  const char *id1, int32_t length1,
1192  const char *id2, int32_t length2,
1193  UErrorCode *status);
1194 
1195 
1196 
1197 
1229 U_CAPI int32_t U_EXPORT2
1231  uint32_t type,
1232  const UChar *id, int32_t length,
1233  UChar *dest, int32_t destCapacity,
1234  UErrorCode *status);
1235 
1269 U_CAPI int32_t U_EXPORT2
1271  uint32_t type,
1272  const char *id, int32_t length,
1273  char *dest, int32_t destCapacity,
1274  UErrorCode *status);
1275 
1288 U_CAPI const USet * U_EXPORT2
1290 
1303 U_CAPI const USet * U_EXPORT2
1305 
1328 U_CAPI int32_t U_EXPORT2
1330  void *data, int32_t capacity,
1331  UErrorCode *status);
1332 
1334 
1335 #if U_SHOW_CPLUSPLUS_API
1336 
1337 U_NAMESPACE_BEGIN
1338 
1374 U_NAMESPACE_END
1375 
1394 U_CAPI void U_EXPORT2
1396 
1397 
1418 U_CAPI const icu::UnicodeSet * U_EXPORT2
1420 
1449 U_CAPI int32_t U_EXPORT2
1451  const icu::UnicodeString &id,
1452  int32_t *position,
1453  UErrorCode *status);
1454 
1480 U_CAPI int32_t U_EXPORT2
1482  const icu::UnicodeString &id,
1483  USpoofCheckResult* checkResult,
1484  UErrorCode *status);
1485 
1507 U_CAPI int32_t U_EXPORT2
1509  const icu::UnicodeString &s1,
1510  const icu::UnicodeString &s2,
1511  UErrorCode *status);
1512 
1536 U_I18N_API icu::UnicodeString & U_EXPORT2
1538  uint32_t type,
1539  const icu::UnicodeString &id,
1540  icu::UnicodeString &dest,
1541  UErrorCode *status);
1542 
1555 U_CAPI const icu::UnicodeSet * U_EXPORT2
1557 
1570 U_CAPI const icu::UnicodeSet * U_EXPORT2
1572 
1573 #endif /* U_SHOW_CPLUSPLUS_API */
1574 
1575 #endif /* UCONFIG_NO_NORMALIZATION */
1576 
1577 #endif /* USPOOF_H */
"Smart pointer" class, closes a USpoofCheckResult via uspoof_closeCheckResult().
"Smart pointer" class, closes a USpoofChecker via uspoof_close().
A mutable set of Unicode characters and multicharacter strings.
Definition: uniset.h:279
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:296
C++ API: "Smart pointers" for use with and in ICU4C C++ code.
#define U_DEFINE_LOCAL_OPEN_POINTER(LocalPointerClassName, Type, closeFunction)
"Smart pointer" definition macro, deletes objects via the closeFunction.
Definition: localpointer.h:550
C API: Parse Error Information.
A UParseError struct is used to returned detailed information about parsing errors.
Definition: parseerr.h:58
#define U_CDECL_END
This is used to end a declaration of a library private ICU C API.
Definition: umachine.h:86
#define U_CAPI
This is used to declare a function as a public ICU C API.
Definition: umachine.h:110
char16_t UChar
The base type for UTF-16 code units and pointers.
Definition: umachine.h:418
#define U_CDECL_BEGIN
This is used to begin a declaration of a library private ICU C API.
Definition: umachine.h:85
C++ API: Unicode Set.
C++ API: Unicode String.
C API: Unicode Set.
struct USet USet
USet is the C API type corresponding to C++ class UnicodeSet.
Definition: uset.h:50
U_CAPI void U_EXPORT2 uspoof_setRestrictionLevel(USpoofChecker *sc, URestrictionLevel restrictionLevel)
Set the loosest restriction level allowed for strings.
U_CAPI const icu::UnicodeSet *U_EXPORT2 uspoof_getInclusionUnicodeSet(UErrorCode *status)
Get the set of Candidate Characters for Inclusion in Identifiers, as defined in http://unicode....
USpoofChecks
Enum for the kinds of checks that USpoofChecker can perform.
Definition: uspoof.h:378
@ USPOOF_MIXED_NUMBERS
Check that an identifier does not mix numbers from different numbering systems.
Definition: uspoof.h:474
@ USPOOF_RESTRICTION_LEVEL
Check that an identifier is no looser than the specified RestrictionLevel.
Definition: uspoof.h:442
@ USPOOF_CHAR_LIMIT
Check that an identifier contains only characters from a specified set of acceptable characters.
Definition: uspoof.h:466
@ USPOOF_CONFUSABLE
Enable this flag in uspoof_setChecks to turn on all types of confusables.
Definition: uspoof.h:418
@ USPOOF_ALL_CHECKS
Enable all spoof checks.
Definition: uspoof.h:502
@ USPOOF_SINGLE_SCRIPT
Check that an identifier contains only characters from a single script (plus chars from the common an...
Definition: uspoof.h:450
@ USPOOF_HIDDEN_OVERLAY
Check that an identifier does not have a combining character following a character in which that comb...
Definition: uspoof.h:495
@ USPOOF_INVISIBLE
Check an identifier for the presence of invisible characters, such as zero-width spaces,...
Definition: uspoof.h:459
@ USPOOF_MIXED_SCRIPT_CONFUSABLE
When performing the two-string uspoof_areConfusable test, this flag in the return value indicates tha...
Definition: uspoof.h:397
@ USPOOF_AUX_INFO
Enable the return of auxiliary (non-error) information in the upper bits of the check results value.
Definition: uspoof.h:516
@ USPOOF_WHOLE_SCRIPT_CONFUSABLE
When performing the two-string uspoof_areConfusable test, this flag in the return value indicates tha...
Definition: uspoof.h:407
@ USPOOF_SINGLE_SCRIPT_CONFUSABLE
When performing the two-string uspoof_areConfusable test, this flag in the return value indicates tha...
Definition: uspoof.h:387
@ USPOOF_ANY_CASE
This flag is deprecated and no longer affects the behavior of SpoofChecker.
Definition: uspoof.h:426
U_CAPI int32_t U_EXPORT2 uspoof_getCheckResultChecks(const USpoofCheckResult *checkResult, UErrorCode *status)
Indicates which of the spoof check(s) have failed.
U_CAPI int32_t U_EXPORT2 uspoof_checkUnicodeString(const USpoofChecker *sc, const icu::UnicodeString &id, int32_t *position, UErrorCode *status)
Check the specified string for possible security issues.
U_CAPI int32_t U_EXPORT2 uspoof_getSkeleton(const USpoofChecker *sc, uint32_t type, const UChar *id, int32_t length, UChar *dest, int32_t destCapacity, UErrorCode *status)
Get the "skeleton" for an identifier.
U_CAPI void U_EXPORT2 uspoof_setAllowedChars(USpoofChecker *sc, const USet *chars, UErrorCode *status)
Limit the acceptable characters to those specified by a Unicode Set.
U_CAPI const USet *U_EXPORT2 uspoof_getCheckResultNumerics(const USpoofCheckResult *checkResult, UErrorCode *status)
Gets the set of numerics found in the string, if the USPOOF_MIXED_NUMBERS check was enabled; otherwis...
U_NAMESPACE_END U_CAPI void U_EXPORT2 uspoof_setAllowedUnicodeSet(USpoofChecker *sc, const icu::UnicodeSet *chars, UErrorCode *status)
Limit the acceptable characters to those specified by a Unicode Set.
U_CAPI const USet *U_EXPORT2 uspoof_getAllowedChars(const USpoofChecker *sc, UErrorCode *status)
Get a USet for the characters permitted in an identifier.
U_CAPI USpoofChecker * uspoof_clone(const USpoofChecker *sc, UErrorCode *status)
Clone a Spoof Checker.
URestrictionLevel
Constants from UAX #39 for use in uspoof_setRestrictionLevel, and for returned identifier restriction...
Definition: uspoof.h:530
@ USPOOF_SINGLE_SCRIPT_RESTRICTIVE
The string classifies as ASCII-Only, or all characters in the string are in the identifier profile an...
Definition: uspoof.h:544
@ USPOOF_MODERATELY_RESTRICTIVE
The string classifies as Highly Restrictive, or all characters in the string are in the identifier pr...
Definition: uspoof.h:566
@ USPOOF_ASCII
All characters in the string are in the identifier profile and all characters in the string are in th...
Definition: uspoof.h:537
@ USPOOF_UNDEFINED_RESTRICTIVE
An undefined restriction level.
Definition: uspoof.h:590
@ USPOOF_RESTRICTION_LEVEL_MASK
Mask for selecting the Restriction Level bits from the return value of uspoof_check.
Definition: uspoof.h:584
@ USPOOF_MINIMALLY_RESTRICTIVE
All characters in the string are in the identifier profile.
Definition: uspoof.h:572
@ USPOOF_HIGHLY_RESTRICTIVE
The string classifies as Single Script, or all characters in the string are in the identifier profile...
Definition: uspoof.h:558
@ USPOOF_UNRESTRICTIVE
Any valid identifiers, including characters outside of the Identifier Profile.
Definition: uspoof.h:578
U_CAPI int32_t U_EXPORT2 uspoof_getSkeletonUTF8(const USpoofChecker *sc, uint32_t type, const char *id, int32_t length, char *dest, int32_t destCapacity, UErrorCode *status)
Get the "skeleton" for an identifier.
U_CAPI URestrictionLevel U_EXPORT2 uspoof_getRestrictionLevel(const USpoofChecker *sc)
Get the Restriction Level that will be tested if the checks include USPOOF_RESTRICTION_LEVEL.
U_CAPI void U_EXPORT2 uspoof_setAllowedLocales(USpoofChecker *sc, const char *localesList, UErrorCode *status)
Limit characters that are acceptable in identifiers being checked to those normally used with the lan...
U_CAPI URestrictionLevel U_EXPORT2 uspoof_getCheckResultRestrictionLevel(const USpoofCheckResult *checkResult, UErrorCode *status)
Gets the restriction level that the text meets, if the USPOOF_RESTRICTION_LEVEL check was enabled; ot...
U_CAPI void U_EXPORT2 uspoof_setChecks(USpoofChecker *sc, int32_t checks, UErrorCode *status)
Specify the bitmask of checks that will be performed by uspoof_check.
U_CAPI const icu::UnicodeSet *U_EXPORT2 uspoof_getAllowedUnicodeSet(const USpoofChecker *sc, UErrorCode *status)
Get a UnicodeSet for the characters permitted in an identifier.
U_CAPI int32_t U_EXPORT2 uspoof_getChecks(const USpoofChecker *sc, UErrorCode *status)
Get the set of checks that this Spoof Checker has been configured to perform.
U_CAPI void U_EXPORT2 uspoof_closeCheckResult(USpoofCheckResult *checkResult)
Close a USpoofCheckResult, freeing any memory that was being held by its implementation.
U_CAPI int32_t U_EXPORT2 uspoof_check2UTF8(const USpoofChecker *sc, const char *id, int32_t length, USpoofCheckResult *checkResult, UErrorCode *status)
Check the specified string for possible security issues.
U_CAPI int32_t U_EXPORT2 uspoof_areConfusableUnicodeString(const USpoofChecker *sc, const icu::UnicodeString &s1, const icu::UnicodeString &s2, UErrorCode *status)
A version of uspoof_areConfusable accepting UnicodeStrings.
U_I18N_API icu::UnicodeString &U_EXPORT2 uspoof_getSkeletonUnicodeString(const USpoofChecker *sc, uint32_t type, const icu::UnicodeString &id, icu::UnicodeString &dest, UErrorCode *status)
Get the "skeleton" for an identifier.
U_CAPI int32_t U_EXPORT2 uspoof_areConfusableUTF8(const USpoofChecker *sc, const char *id1, int32_t length1, const char *id2, int32_t length2, UErrorCode *status)
A version of uspoof_areConfusable accepting strings in UTF-8 format.
U_CAPI USpoofCheckResult *U_EXPORT2 uspoof_openCheckResult(UErrorCode *status)
Create a USpoofCheckResult, used by the uspoof_check2 class of functions to return information about ...
U_CAPI const USet *U_EXPORT2 uspoof_getRecommendedSet(UErrorCode *status)
Get the set of characters from Recommended Scripts for Inclusion in Identifiers, as defined in http:/...
U_CAPI const USet *U_EXPORT2 uspoof_getInclusionSet(UErrorCode *status)
Get the set of Candidate Characters for Inclusion in Identifiers, as defined in http://unicode....
U_CAPI int32_t U_EXPORT2 uspoof_serialize(USpoofChecker *sc, void *data, int32_t capacity, UErrorCode *status)
Serialize the data for a spoof detector into a chunk of memory.
struct USpoofCheckResult USpoofCheckResult
Definition: uspoof.h:369
U_CAPI USpoofChecker * uspoof_openFromSerialized(const void *data, int32_t length, int32_t *pActualLength, UErrorCode *pErrorCode)
Open a Spoof checker from its serialized form, stored in 32-bit-aligned memory.
U_CAPI const char *U_EXPORT2 uspoof_getAllowedLocales(USpoofChecker *sc, UErrorCode *status)
Get a list of locales for the scripts that are acceptable in strings to be checked.
U_CAPI int32_t U_EXPORT2 uspoof_check2(const USpoofChecker *sc, const UChar *id, int32_t length, USpoofCheckResult *checkResult, UErrorCode *status)
Check the specified string for possible security issues.
U_CAPI int32_t U_EXPORT2 uspoof_checkUTF8(const USpoofChecker *sc, const char *id, int32_t length, int32_t *position, UErrorCode *status)
Check the specified string for possible security issues.
struct USpoofChecker USpoofChecker
typedef for C of USpoofChecker
Definition: uspoof.h:362
U_CAPI const icu::UnicodeSet *U_EXPORT2 uspoof_getRecommendedUnicodeSet(UErrorCode *status)
Get the set of characters from Recommended Scripts for Inclusion in Identifiers, as defined in http:/...
U_CAPI USpoofChecker * uspoof_open(UErrorCode *status)
Create a Unicode Spoof Checker, configured to perform all checks except for USPOOF_LOCALE_LIMIT and U...
U_CAPI void uspoof_close(USpoofChecker *sc)
Close a Spoof Checker, freeing any memory that was being held by its implementation.
U_CAPI int32_t U_EXPORT2 uspoof_check(const USpoofChecker *sc, const UChar *id, int32_t length, int32_t *position, UErrorCode *status)
Check the specified string for possible security issues.
U_CAPI USpoofChecker * uspoof_openFromSource(const char *confusables, int32_t confusablesLen, const char *confusablesWholeScript, int32_t confusablesWholeScriptLen, int32_t *errType, UParseError *pe, UErrorCode *status)
Open a Spoof Checker from the source form of the spoof data.
U_CAPI int32_t U_EXPORT2 uspoof_areConfusable(const USpoofChecker *sc, const UChar *id1, int32_t length1, const UChar *id2, int32_t length2, UErrorCode *status)
Check the whether two specified strings are visually confusable.
U_CAPI int32_t U_EXPORT2 uspoof_check2UnicodeString(const USpoofChecker *sc, const icu::UnicodeString &id, USpoofCheckResult *checkResult, UErrorCode *status)
Check the specified string for possible security issues.
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition: utypes.h:415
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition: utypes.h:301