e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
497 lines
18 KiB
C#
497 lines
18 KiB
C#
//------------------------------------------------------------------------------
|
|
// <copyright file="Lower.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//------------------------------------------------------------------------------
|
|
|
|
namespace System.Web.Security.AntiXss.CodeCharts {
|
|
using System.Collections;
|
|
|
|
/// <summary>
|
|
/// Provides safe character positions for the lower section of the UTF code tables.
|
|
/// </summary>
|
|
internal static class Lower {
|
|
/// <summary>
|
|
/// Determines if the specified flag is set.
|
|
/// </summary>
|
|
/// <param name="flags">The value to check.</param>
|
|
/// <param name="flagToCheck">The flag to check for.</param>
|
|
/// <returns>true if the flag is set, otherwise false.</returns>
|
|
public static bool IsFlagSet(LowerCodeCharts flags, LowerCodeCharts flagToCheck) {
|
|
return (flags & flagToCheck) != 0;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Basic Latin code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable BasicLatin() {
|
|
return CodeChartHelper.GetRange(0x0020, 0x007E);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Latin 1 Supplement code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Latin1Supplement() {
|
|
return CodeChartHelper.GetRange(0x00A1, 0x00FF,
|
|
i => (i == 0x00AD));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Latin Extended A code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable LatinExtendedA() {
|
|
return CodeChartHelper.GetRange(0x0100, 0x17F);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Latin Extended B code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable LatinExtendedB() {
|
|
return CodeChartHelper.GetRange(0x0180, 0x024F);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the IPA Extensions code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable IpaExtensions() {
|
|
return CodeChartHelper.GetRange(0x0250, 0x2AF);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Spacing Modifiers code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable SpacingModifierLetters() {
|
|
return CodeChartHelper.GetRange(0x02B0, 0x2FF);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Combining Diacritical Marks code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable CombiningDiacriticalMarks() {
|
|
return CodeChartHelper.GetRange(0x0300, 0x36F);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Greek and Coptic code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable GreekAndCoptic() {
|
|
return CodeChartHelper.GetRange(0x0370, 0x03FF,
|
|
i => (i == 0x378 ||
|
|
i == 0x379 ||
|
|
(i >= 0x37F && i <= 0x383) ||
|
|
i == 0x38B ||
|
|
i == 0x38D ||
|
|
i == 0x3A2));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Cyrillic code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Cyrillic() {
|
|
return CodeChartHelper.GetRange(0x0400, 0x04FF);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Cyrillic Supplement code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable CyrillicSupplement() {
|
|
return CodeChartHelper.GetRange(0x0500, 0x0525);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Armenian code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Armenian() {
|
|
return CodeChartHelper.GetRange(0x0531, 0x058A,
|
|
i => (i == 0x0557 ||
|
|
i == 0x0558 ||
|
|
i == 0x0560 ||
|
|
i == 0x0588));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Hebrew code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Hebrew() {
|
|
return CodeChartHelper.GetRange(0x0591, 0x05F4,
|
|
i => ((i >= 0x05C8 && i <= 0x05CF) ||
|
|
(i >= 0x05EB && i <= 0x05EF)));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Arabic code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Arabic() {
|
|
return CodeChartHelper.GetRange(0x0600, 0x06FF,
|
|
i => (i == 0x0604 ||
|
|
i == 0x0605 ||
|
|
i == 0x061C ||
|
|
i == 0x061d ||
|
|
i == 0x0620 ||
|
|
i == 0x065F));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Syriac code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Syriac() {
|
|
return CodeChartHelper.GetRange(0x0700, 0x074F,
|
|
i => (i == 0x070E ||
|
|
i == 0x074B ||
|
|
i == 0x074C));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Arabic Supplement code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable ArabicSupplement() {
|
|
return CodeChartHelper.GetRange(0x0750, 0x077F);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Thaana code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Thaana() {
|
|
return CodeChartHelper.GetRange(0x0780, 0x07B1);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Nko code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Nko() {
|
|
return CodeChartHelper.GetRange(0x07C0, 0x07FA);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Samaritan code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Samaritan() {
|
|
return CodeChartHelper.GetRange(0x0800, 0x083E,
|
|
i => (i == 0x082E ||
|
|
i == 0x082F));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Devenagari code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Devanagari() {
|
|
return CodeChartHelper.GetRange(0x0900, 0x097F,
|
|
i => (i == 0x093A ||
|
|
i == 0x093B ||
|
|
i == 0x094F ||
|
|
i == 0x0956 ||
|
|
i == 0x0957 ||
|
|
(i >= 0x0973 && i <= 0x0978)));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Bengali code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Bengali() {
|
|
return CodeChartHelper.GetRange(0x0981, 0x09FB,
|
|
i => (i == 0x0984 ||
|
|
i == 0x098D ||
|
|
i == 0x098E ||
|
|
i == 0x0991 ||
|
|
i == 0x0992 ||
|
|
i == 0x09A9 ||
|
|
i == 0x09B1 ||
|
|
i == 0x09B3 ||
|
|
i == 0x09B4 ||
|
|
i == 0x09B5 ||
|
|
i == 0x09BA ||
|
|
i == 0x09BB ||
|
|
i == 0x09C5 ||
|
|
i == 0x09C6 ||
|
|
i == 0x09C9 ||
|
|
i == 0x09CA ||
|
|
(i >= 0x09CF && i <= 0x09D6) ||
|
|
(i >= 0x09D8 && i <= 0x09DB) ||
|
|
i == 0x09DE ||
|
|
i == 0x09E4 ||
|
|
i == 0x09E5));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Gurmukhi code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Gurmukhi() {
|
|
return CodeChartHelper.GetRange(0x0A01, 0x0A75,
|
|
i => (i == 0x0A04 ||
|
|
(i >= 0x0A0B && i <= 0x0A0E) ||
|
|
i == 0x0A11 ||
|
|
i == 0x0A12 ||
|
|
i == 0x0A29 ||
|
|
i == 0x0A31 ||
|
|
i == 0x0A34 ||
|
|
i == 0x0A37 ||
|
|
i == 0x0A3A ||
|
|
i == 0x0A3B ||
|
|
i == 0x0A3D ||
|
|
(i >= 0x0A43 && i <= 0x0A46) ||
|
|
i == 0x0A49 ||
|
|
i == 0x0A4A ||
|
|
(i >= 0x0A4E && i <= 0x0A50) ||
|
|
(i >= 0x0A52 && i <= 0x0A58) ||
|
|
i == 0x0A5D ||
|
|
(i >= 0x0A5F && i <= 0x0A65)));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Gujarati code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Gujarati() {
|
|
return CodeChartHelper.GetRange(0x0A81, 0x0AF1,
|
|
i => (i == 0x0A84 ||
|
|
i == 0x0A8E ||
|
|
i == 0x0A92 ||
|
|
i == 0x0AA9 ||
|
|
i == 0x0AB1 ||
|
|
i == 0x0AB4 ||
|
|
i == 0x0ABA ||
|
|
i == 0x0ABB ||
|
|
i == 0x0AC6 ||
|
|
i == 0x0ACA ||
|
|
i == 0x0ACE ||
|
|
i == 0x0ACF ||
|
|
(i >= 0xAD1 && i <= 0x0ADF) ||
|
|
i == 0x0AE4 ||
|
|
i == 0x0AE5 ||
|
|
i == 0x0AF0));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Oriya code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Oriya() {
|
|
return CodeChartHelper.GetRange(0x0B01, 0x0B71,
|
|
i => (i == 0x0B04 ||
|
|
i == 0x0B0D ||
|
|
i == 0x0B0E ||
|
|
i == 0x0B11 ||
|
|
i == 0x0B12 ||
|
|
i == 0x0B29 ||
|
|
i == 0x0B31 ||
|
|
i == 0x0B34 ||
|
|
i == 0x0B3A ||
|
|
i == 0x0B3B ||
|
|
i == 0x0B45 ||
|
|
i == 0x0B46 ||
|
|
i == 0x0B49 ||
|
|
i == 0x0B4A ||
|
|
(i >= 0x0B4E && i <= 0x0B55) ||
|
|
(i >= 0x0B58 && i <= 0x0B5B) ||
|
|
i == 0x0B5E ||
|
|
i == 0x0B64 ||
|
|
i == 0x0B65));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Tamil code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Tamil() {
|
|
return CodeChartHelper.GetRange(0x0B82, 0x0BFA,
|
|
i => (i == 0x0B84 ||
|
|
i == 0x0B8B ||
|
|
i == 0x0B8C ||
|
|
i == 0x0B8D ||
|
|
i == 0x0B91 ||
|
|
i == 0x0B96 ||
|
|
i == 0x0B97 ||
|
|
i == 0x0B98 ||
|
|
i == 0x0B9B ||
|
|
i == 0x0B9D ||
|
|
i == 0x0BA0 ||
|
|
i == 0x0BA1 ||
|
|
i == 0x0BA2 ||
|
|
i == 0x0BA5 ||
|
|
i == 0x0BA6 ||
|
|
i == 0x0BA7 ||
|
|
i == 0x0BAB ||
|
|
i == 0x0BAC ||
|
|
i == 0x0BAD ||
|
|
(i >= 0x0BBA && i <= 0x0BBD) ||
|
|
i == 0x0BC3 ||
|
|
i == 0x0BC4 ||
|
|
i == 0x0BC5 ||
|
|
i == 0x0BC9 ||
|
|
i == 0x0BCE ||
|
|
i == 0x0BCF ||
|
|
(i >= 0x0BD1 && i <= 0x0BD6) ||
|
|
(i >= 0x0BD8 && i <= 0x0BE5)));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Telugu code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Telugu() {
|
|
return CodeChartHelper.GetRange(0x0C01, 0x0C7F,
|
|
i => (i == 0x0C04 ||
|
|
i == 0x0C0D ||
|
|
i == 0x0C11 ||
|
|
i == 0x0C29 ||
|
|
i == 0x0C34 ||
|
|
i == 0x0C3A ||
|
|
i == 0x0C3B ||
|
|
i == 0x0C3C ||
|
|
i == 0x0C45 ||
|
|
i == 0x0C49 ||
|
|
(i >= 0x0C4E && i <= 0x0C54) ||
|
|
i == 0x0C57 ||
|
|
(i >= 0x0C5A && i <= 0x0C5F) ||
|
|
i == 0x0C64 ||
|
|
i == 0x0C65 ||
|
|
(i >= 0x0C70 && i <= 0x0C77)));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Kannada code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Kannada() {
|
|
return CodeChartHelper.GetRange(0x0C82, 0x0CF2,
|
|
i => (i == 0x0C84 ||
|
|
i == 0x0C8D ||
|
|
i == 0x0C91 ||
|
|
i == 0x0CA9 ||
|
|
i == 0x0CB4 ||
|
|
i == 0x0CBA ||
|
|
i == 0x0CBB ||
|
|
i == 0x0CC5 ||
|
|
i == 0x0CC9 ||
|
|
(i >= 0x0CCE && i <= 0x0CD4) ||
|
|
(i >= 0x0CD7 && i <= 0x0CDD) ||
|
|
i == 0x0CDF ||
|
|
i == 0x0CE4 ||
|
|
i == 0x0CE5 ||
|
|
i == 0x0CF0));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Malayalam code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Malayalam() {
|
|
return CodeChartHelper.GetRange(0x0D02, 0x0D7F,
|
|
i => (i == 0x0D04 ||
|
|
i == 0x0D0D ||
|
|
i == 0x0D11 ||
|
|
i == 0x0D29 ||
|
|
i == 0x0D3A ||
|
|
i == 0x0D3B ||
|
|
i == 0x0D3C ||
|
|
i == 0x0D45 ||
|
|
i == 0x0D49 ||
|
|
(i >= 0x0D4E && i <= 0x0D56) ||
|
|
(i >= 0x0D58 && i <= 0x0D5F) ||
|
|
i == 0x0D64 ||
|
|
i == 0x0D65 ||
|
|
i == 0x0D76 ||
|
|
i == 0x0D77 ||
|
|
i == 0x0D78));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Sinhala code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Sinhala() {
|
|
return CodeChartHelper.GetRange(0x0D82, 0x0DF4,
|
|
i => (i == 0x0D84 ||
|
|
i == 0x0D97 ||
|
|
i == 0X0D98 ||
|
|
i == 0x0D99 ||
|
|
i == 0x0DB2 ||
|
|
i == 0x0DBC ||
|
|
i == 0x0DBE ||
|
|
i == 0x0DBF ||
|
|
i == 0x0DC7 ||
|
|
i == 0x0DC8 ||
|
|
i == 0x0DC9 ||
|
|
(i >= 0x0DCB && i <= 0x0DCE) ||
|
|
i == 0x0DD5 ||
|
|
i == 0x0DD7 ||
|
|
(i >= 0x0DE0 && i <= 0x0DF1)));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Thai code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Thai() {
|
|
return CodeChartHelper.GetRange(0x0E01, 0x0E5B,
|
|
i => (i >= 0x0E3B && i <= 0x0E3E));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Lao code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Lao() {
|
|
return CodeChartHelper.GetRange(0x0E81, 0x0EDD,
|
|
i => (i == 0x0E83 ||
|
|
i == 0x0E85 ||
|
|
i == 0x0E86 ||
|
|
i == 0x0E89 ||
|
|
i == 0x0E8B ||
|
|
i == 0x0E8C ||
|
|
(i >= 0x0E8E && i <= 0x0E93) ||
|
|
i == 0x0E98 ||
|
|
i == 0x0EA0 ||
|
|
i == 0x0EA4 ||
|
|
i == 0x0EA6 ||
|
|
i == 0x0EA8 ||
|
|
i == 0x0EA9 ||
|
|
i == 0x0EAC ||
|
|
i == 0x0EBA ||
|
|
i == 0x0EBE ||
|
|
i == 0x0EBF ||
|
|
i == 0x0EC5 ||
|
|
i == 0x0EC7 ||
|
|
i == 0x0ECE ||
|
|
i == 0x0ECF ||
|
|
i == 0x0EDA ||
|
|
i == 0x0EDB));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Provides the safe characters for the Tibetan code table.
|
|
/// </summary>
|
|
/// <returns>The safe characters for the code table.</returns>
|
|
public static IEnumerable Tibetan() {
|
|
return CodeChartHelper.GetRange(0x0F00, 0x0FD8,
|
|
i => (i == 0x0F48 ||
|
|
(i >= 0x0F6D && i <= 0x0F70) ||
|
|
(i >= 0x0F8C && i <= 0x0F8F) ||
|
|
i == 0x0F98 ||
|
|
i == 0x0FBD ||
|
|
i == 0x0FCD));
|
|
}
|
|
}
|
|
}
|