using System.Linq; using System.Text; namespace BurnOutSharp.ASN1 { #pragma warning disable IDE0011 /// /// Methods related to Object Identifiers (OID) and OID-IRI formatting /// public static partial class ObjectIdentifier { /// /// Parse an OID in separated-value notation into OID-IRI notation /// /// List of values to check against /// Current index into the list /// OID-IRI formatted string, if possible /// public static string ParseOIDToOIDIRINotation(ulong[] values) { // If we have an invalid set of values, we can't do anything if (values == null || values.Length == 0) return null; // Set the initial index int index = 0; // Get a string builder for the path var nameBuilder = new StringBuilder(); // Try to parse the standard value string standard = ParseOIDToOIDIRINotation(values, ref index); if (standard == null) return null; // Add the standard value to the output nameBuilder.Append(standard); // If we have no more items if (index == values.Length) return nameBuilder.ToString(); // Add trailing items as just values nameBuilder.Append("/"); nameBuilder.Append(string.Join("/", values.Skip(index))); // Create and return the string return nameBuilder.ToString(); } /// /// Parse an OID in separated-value notation into OID-IRI notation /// /// List of values to check against /// Current index into the list /// OID-IRI formatted string, if possible /// private static string ParseOIDToOIDIRINotation(ulong[] values, ref int index) { // If we have an invalid set of values, we can't do anything if (values == null || values.Length == 0) return null; // If we have an invalid index, we can't do anything if (index < 0 || index >= values.Length) return null; #region Start switch (values[index++]) { case 0: goto oid_0; case 1: goto oid_1; case 2: goto oid_2; default: return $"/{values[index - 1]}"; } #endregion // itu-t, ccitt, itu-r #region 0.* oid_0: if (index == values.Length) return "/ITU-T"; switch (values[index++]) { case 0: goto oid_0_0; case 2: return "/ITU-T/Administration"; case 3: return "/ITU-T/Network-Operator"; case 4: return "/ITU-T/Identified-Organization"; case 5: return "/ITU-R/R-Recommendation"; case 9: return "/ITU-T/Data"; default: return $"/ITU-T/{values[index - 1]}"; }; // recommendation #region 0.0.* oid_0_0: if (index == values.Length) return "/ITU-T/Recommendation"; switch (values[index++]) { case 1: return "/ITU-T/Recommendation/A"; case 2: return "/ITU-T/Recommendation/B"; case 3: return "/ITU-T/Recommendation/C"; case 4: return "/ITU-T/Recommendation/D"; case 5: return "/ITU-T/Recommendation/E"; case 6: return "/ITU-T/Recommendation/F"; case 7: return "/ITU-T/Recommendation/G"; case 8: return "/ITU-T/Recommendation/H"; case 9: return "/ITU-T/Recommendation/I"; case 10: return "/ITU-T/Recommendation/J"; case 11: return "/ITU-T/Recommendation/K"; case 12: return "/ITU-T/Recommendation/L"; case 13: return "/ITU-T/Recommendation/M"; case 14: return "/ITU-T/Recommendation/N"; case 15: return "/ITU-T/Recommendation/O"; case 16: return "/ITU-T/Recommendation/P"; case 17: return "/ITU-T/Recommendation/Q"; case 18: return "/ITU-T/Recommendation/R"; case 19: return "/ITU-T/Recommendation/S"; case 20: return "/ITU-T/Recommendation/T"; case 21: return "/ITU-T/Recommendation/U"; case 22: return "/ITU-T/Recommendation/V"; case 24: return "/ITU-T/Recommendation/X"; case 25: return "/ITU-T/Recommendation/Y"; case 26: return "/ITU-T/Recommendation/Z"; default: return $"/ITU-T/Recommendation/{values[index - 1]}"; } #endregion #endregion // iso #region 1.* oid_1: if (index == values.Length) return "/ISO"; switch (values[index++]) { case 0: return "/ISO/Standard"; case 1: return "/ISO/Registration-Authority"; case 2: goto oid_1_2; case 3: return "/ISO/Identified-Organization"; default: return $"/ISO/{values[index - 1]}"; } // member-body #region 1.2.* oid_1_2: if (index == values.Length) return "/ISO/Member-Body"; switch (values[index++]) { case 36: return "/ISO/Member-Body/AU"; case 40: return "/ISO/Member-Body/AT"; case 56: return "/ISO/Member-Body/BE"; case 124: return "/ISO/Member-Body/CA"; case 156: return "/ISO/Member-Body/CN"; case 203: return "/ISO/Member-Body/CZ"; case 208: return "/ISO/Member-Body/DK"; case 246: return "/ISO/Member-Body/FI"; case 250: return "/ISO/Member-Body/FR"; case 276: return "/ISO/Member-Body/DE"; case 300: return "/ISO/Member-Body/GR"; case 344: return "/ISO/Member-Body/HK"; case 372: return "/ISO/Member-Body/IE"; case 392: return "/ISO/Member-Body/JP"; case 398: return "/ISO/Member-Body/KZ"; case 410: return "/ISO/Member-Body/KR"; case 498: return "/ISO/Member-Body/MD"; case 528: return "/ISO/Member-Body/NL"; case 566: return "/ISO/Member-Body/NG"; case 578: return "/ISO/Member-Body/NO"; case 616: return "/ISO/Member-Body/PL"; case 643: return "/ISO/Member-Body/RU"; case 702: return "/ISO/Member-Body/SG"; case 752: return "/ISO/Member-Body/SE"; case 804: return "/ISO/Member-Body/UA"; case 826: return "/ISO/Member-Body/GB"; case 840: return "/ISO/Member-Body/US"; default: return $"/ISO/Member-Body/{values[index - 1]}"; } #endregion #endregion // joint-iso-itu-t, joint-iso-ccitt #region 2.* oid_2: if (index == values.Length) return "/Joint-ISO-ITU-T"; switch (values[index++]) { case 1: return "/ASN.1"; case 16: goto oid_2_16; case 17: return "/Joint-ISO-ITU-T/Registration-Procedures"; case 23: return "/Joint-ISO-ITU-T/International-Organizations"; case 25: goto oid_2_25; case 27: return "/Tag-Based"; case 28: return "/Joint-ISO-ITU-T/ITS"; case 41: return "/BIP"; case 42: goto oid_2_42; case 48: goto oid_2_48; case 49: goto oid_2_49; case 50: return "/OIDResolutionSystem"; case 51: return "/GS1"; case 52: return "/Joint-ISO-ITU-T/UAV"; case 999: return "/Joint-ISO-ITU-T/Example"; default: return $"/Joint-ISO-ITU-T/{values[index - 1]}"; } // country #region 2.16.* oid_2_16: if (index == values.Length) return "/Country"; switch (values[index++]) { case 4: return "/Country/AF"; case 8: return "/Country/AL"; case 12: return "/Country/DZ"; case 20: return "/Country/AD"; case 24: return "/Country/AO"; case 28: return "/Country/AG"; case 31: return "/Country/AZ"; case 32: return "/Country/AR"; case 36: return "/Country/AU"; case 40: return "/Country/AT"; case 44: return "/Country/BS"; case 48: return "/Country/BH"; case 50: return "/Country/BD"; case 51: return "/Country/AM"; case 52: return "/Country/BB"; case 56: return "/Country/BE"; case 60: return "/Country/BM"; case 64: return "/Country/BT"; case 68: return "/Country/BO"; case 70: return "/Country/BA"; case 72: return "/Country/BW"; case 76: return "/Country/BR"; case 84: return "/Country/BZ"; case 90: return "/Country/SB"; case 96: return "/Country/BN"; case 100: return "/Country/BG"; case 104: return "/Country/MM"; case 108: return "/Country/BI"; case 112: return "/Country/BY"; case 116: return "/Country/KH"; case 120: return "/Country/CM"; case 124: return "/Country/CA"; case 132: return "/Country/CV"; case 140: return "/Country/CF"; case 144: return "/Country/LK"; case 148: return "/Country/TD"; case 152: return "/Country/CL"; case 156: return "/Country/CN"; case 158: return "/Country/TW"; case 170: return "/Country/CO"; case 174: return "/Country/KM"; case 178: return "/Country/CG"; case 180: return "/Country/CD"; case 188: return "/Country/CR"; case 191: return "/Country/HR"; case 192: return "/Country/CU"; case 196: return "/Country/CY"; case 203: return "/Country/CZ"; case 204: return "/Country/BJ"; case 208: return "/Country/DK"; case 212: return "/Country/DM"; case 214: return "/Country/DO"; case 218: return "/Country/EC"; case 222: return "/Country/SV"; case 226: return "/Country/GQ"; case 231: return "/Country/ET"; case 232: return "/Country/ER"; case 233: return "/Country/EE"; case 242: return "/Country/FJ"; case 246: return "/Country/FI"; case 250: return "/Country/FR"; case 262: return "/Country/DJ"; case 266: return "/Country/GA"; case 268: return "/Country/GE"; case 270: return "/Country/GM"; case 275: return "/Country/PS"; case 276: return "/Country/DE"; case 288: return "/Country/GH"; case 296: return "/Country/KI"; case 300: return "/Country/GR"; case 308: return "/Country/GD"; case 320: return "/Country/GT"; case 324: return "/Country/GN"; case 328: return "/Country/GY"; case 332: return "/Country/HT"; case 336: return "/Country/VA"; case 340: return "/Country/HN"; case 344: return "/Country/HK"; case 348: return "/Country/HU"; case 352: return "/Country/IS"; case 356: return "/Country/IN"; case 360: return "/Country/ID"; case 364: return "/Country/IR"; case 368: return "/Country/IQ"; case 372: return "/Country/IE"; case 376: return "/Country/IL"; case 380: return "/Country/IT"; case 384: return "/Country/CI"; case 388: return "/Country/JM"; case 392: return "/Country/JP"; case 398: return "/Country/KZ"; case 400: return "/Country/JO"; case 404: return "/Country/KE"; case 408: return "/Country/KP"; case 410: return "/Country/KR"; case 414: return "/Country/KW"; case 417: return "/Country/KG"; case 418: return "/Country/LA"; case 422: return "/Country/LB"; case 426: return "/Country/LS"; case 428: return "/Country/LV"; case 430: return "/Country/LR"; case 434: return "/Country/LY"; case 438: return "/Country/LI"; case 440: return "/Country/LT"; case 442: return "/Country/LU"; case 450: return "/Country/MG"; case 454: return "/Country/MW"; case 458: return "/Country/MY"; case 462: return "/Country/MV"; case 466: return "/Country/ML"; case 470: return "/Country/MT"; case 478: return "/Country/MR"; case 480: return "/Country/MU"; case 484: return "/Country/MX"; case 492: return "/Country/MC"; case 496: return "/Country/MN"; case 498: return "/Country/MD"; case 499: return "/Country/ME"; case 504: return "/Country/MA"; case 508: return "/Country/MZ"; case 512: return "/Country/OM"; case 516: return "/Country/NA"; case 520: return "/Country/NR"; case 524: return "/Country/NP"; case 528: return "/Country/NL"; case 530: return "/Country/AN"; case 548: return "/Country/VU"; case 554: return "/Country/NZ"; case 558: return "/Country/NI"; case 562: return "/Country/NE"; case 566: return "/Country/NG"; case 578: return "/Country/NO"; case 583: return "/Country/FM"; case 584: return "/Country/MH"; case 585: return "/Country/PW"; case 586: return "/Country/PK"; case 591: return "/Country/PA"; case 598: return "/Country/PG"; case 600: return "/Country/PY"; case 604: return "/Country/PE"; case 608: return "/Country/PH"; case 616: return "/Country/PL"; case 620: return "/Country/PT"; case 624: return "/Country/GW"; case 626: return "/Country/TL"; case 634: return "/Country/QA"; case 642: return "/Country/RO"; case 643: return "/Country/RU"; case 646: return "/Country/RW"; case 659: return "/Country/KN"; case 662: return "/Country/LC"; case 670: return "/Country/VC"; case 674: return "/Country/SM"; case 678: return "/Country/ST"; case 682: return "/Country/SA"; case 686: return "/Country/SN"; case 688: return "/Country/RS"; case 690: return "/Country/SC"; case 694: return "/Country/SL"; case 702: return "/Country/SG"; case 703: return "/Country/SK"; case 704: return "/Country/VN"; case 705: return "/Country/SI"; case 706: return "/Country/SO"; case 710: return "/Country/ZA"; case 716: return "/Country/ZW"; case 724: return "/Country/ES"; case 728: return "/Country/SS"; case 729: return "/Country/SD"; case 740: return "/Country/SR"; case 748: return "/Country/SZ"; case 752: return "/Country/SE"; case 756: return "/Country/CH"; case 760: return "/Country/SY"; case 762: return "/Country/TJ"; case 764: return "/Country/TH"; case 768: return "/Country/TG"; case 776: return "/Country/TO"; case 780: return "/Country/TT"; case 784: return "/Country/AE"; case 788: return "/Country/TN"; case 792: return "/Country/TR"; case 795: return "/Country/TM"; case 798: return "/Country/TV"; case 800: return "/Country/UG"; case 804: return "/Country/UA"; case 807: return "/Country/MK"; case 818: return "/Country/EG"; case 826: return "/Country/GB"; case 834: return "/Country/TZ"; case 840: return "/Country/US"; case 854: return "/Country/BF"; case 858: return "/Country/UY"; case 860: return "/Country/UZ"; case 862: return "/Country/VE"; case 882: return "/Country/WS"; case 887: return "/Country/YE"; case 894: return "/Country/ZM"; default: return $"/Country/{values[index - 1]}"; } #endregion // uuid [TODO: Requires 128-bit values] #region 2.25.* oid_2_25: if (index == values.Length) return "/Joint-ISO-ITU-T/UUID"; switch (values[index++]) { case 0: return "/Joint-ISO-ITU-T/UUID/00000000-0000-0000-0000-000000000000"; //case 288786655511405443130567505384701230: return "/Joint-ISO-ITU-T/UUID/00379e48-0a2b-1085-b288-0002a5d5fd2e"; //case 987895962269883002155146617097157934: return "/Joint-ISO-ITU-T/UUID/00be4308-0c89-1085-8ea0-0002a5d5fd2e"; //case 1858228783942312576083372383319475483: return "/Joint-ISO-ITU-T/UUID/0165e1c0-a655-11e0-95b8-0002a5d5c51b"; //case 2474299330026746002885628159579243803: return "/Joint-ISO-ITU-T/UUID/01dc8860-25fb-11da-82b2-0002a5d5c51b"; //case 3263645701162998421821186056373271854: return "/Joint-ISO-ITU-T/UUID/02748e28-08c4-1085-b21d-0002a5d5fd2e"; //case 3325839809379844461264382260940242222: return "/Joint-ISO-ITU-T/UUID/02808890-0ad8-1085-9bdf-0002a5d5fd2e"; // TODO: Left off at http://www.oid-info.com/get/2.25.3664154270495270126161055518190585115 default: return $"/Joint-ISO-ITU-T/UUID/{values[index - 1]}"; } #endregion // telebiometrics #region 2.42.* oid_2_42: if (index == values.Length) return "/Telebiometrics"; switch (values[index++]) { case 0: goto oid_2_42_0; case 1: goto oid_2_42_1; case 2: goto oid_2_42_2; case 3: goto oid_2_42_3; default: return $"/Telebiometrics/{values[index - 1]}"; } // modules #region 2.42.0.* oid_2_42_0: if (index == values.Length) return "/Telebiometrics/Modules"; switch (values[index++]) { case 0: goto oid_2_42_0_0; default: return $"/Telebiometrics/Modules/{values[index - 1]}"; } // main #region 2.42.0.0.* oid_2_42_0_0: if (index == values.Length) return "/Telebiometrics/Modules/Main_Module"; switch (values[index++]) { case 1: return "/Telebiometrics/Modules/Main_Module/Version1"; default: return $"/Telebiometrics/Modules/Main_Module/{values[index - 1]}"; } #endregion #endregion // tmm #region 2.42.1.* oid_2_42_1: if (index == values.Length) return "/Telebiometrics/TMM"; switch (values[index++]) { case 0: goto oid_2_42_1_0; case 1: goto oid_2_42_1_1; case 2: goto oid_2_42_1_2; case 3: goto oid_2_42_1_3; case 4: return "/Telebiometrics/TMM/Practitioners"; default: return $"/Telebiometrics/TMM/{values[index - 1]}"; } // modules #region 2.42.1.0.* oid_2_42_1_0: if (index == values.Length) return "/Telebiometrics/TMM/Modules"; switch (values[index++]) { case 0: goto oid_2_42_1_0_0; default: return $"/Telebiometrics/TMM/Modules/{values[index - 1]}"; } // main #region 2.42.1.0.0.* oid_2_42_1_0_0: if (index == values.Length) return "/Telebiometrics/TMM/Modules/Main"; switch (values[index++]) { case 0: return "/Telebiometrics/TMM/Modules/Main/First_Version"; default: return $"/Telebiometrics/TMM/Modules/Main/{values[index - 1]}"; } #endregion #endregion // measures, metric #region 2.42.1.1.* oid_2_42_1_1: if (index == values.Length) return "/Telebiometrics/TMM/Measures"; switch (values[index++]) { case 1: goto oid_2_42_1_1_1; case 2: return "/Telebiometrics/TMM/Measures/Units"; case 3: return "/Telebiometrics/TMM/Measures/Symbols"; case 4: return "/Telebiometrics/TMM/Measures/Conditions"; case 5: goto oid_2_42_1_1_5; default: return $"/Telebiometrics/TMM/Measures/{values[index - 1]}"; } // quantities #region 2.42.1.1.1.* oid_2_42_1_1_1: if (index == values.Length) return "/Telebiometrics/TMM/Measures/Quantities"; switch (values[index++]) { case 1: return "/Telebiometrics/TMM/Measures/Quantities/Physics"; case 2: return "/Telebiometrics/TMM/Measures/Quantities/Chemistry"; case 3: return "/Telebiometrics/TMM/Measures/Quantities/Biology"; case 4: return "/Telebiometrics/TMM/Measures/Quantities/Culturology"; case 5: return "/Telebiometrics/TMM/Measures/Quantities/Psychology"; default: return $"/Telebiometrics/TMM/Measures/Quantities/{values[index - 1]}"; } #endregion // methods #region 2.42.1.1.5.* oid_2_42_1_1_5: if (index == values.Length) return "/Telebiometrics/TMM/Measures/Methods"; switch (values[index++]) { case 1: return "/Telebiometrics/TMM/Measures/Methods/Physics"; case 2: return "/Telebiometrics/TMM/Measures/Methods/Chemistry"; case 3: return "/Telebiometrics/TMM/Measures/Methods/Biology"; case 4: return "/Telebiometrics/TMM/Measures/Methods/Culturology"; case 5: return "/Telebiometrics/TMM/Measures/Methods/Psychology"; default: return $"/Telebiometrics/TMM/Measures/Methods/{values[index - 1]}"; } #endregion #endregion // fields-of-study, scientific #region 2.42.1.2.* oid_2_42_1_2: if (index == values.Length) return "/Telebiometrics/TMM/Fields_of_Study"; switch (values[index++]) { case 1: return "/Telebiometrics/TMM/Fields_of_Study/Physics"; case 2: return "/Telebiometrics/TMM/Fields_of_Study/Chemistry"; case 3: return "/Telebiometrics/TMM/Fields_of_Study/Biology"; case 4: return "/Telebiometrics/TMM/Fields_of_Study/Culturology"; case 5: return "/Telebiometrics/TMM/Fields_of_Study/Psychology"; default: return $"/Telebiometrics/TMM/Fields_of_Study/{values[index - 1]}"; } #endregion // modalities, sensory #region 2.42.1.3.* oid_2_42_1_3: if (index == values.Length) return "/Telebiometrics/TMM/Modalities"; switch (values[index++]) { case 1: return "/Telebiometrics/TMM/Modalities/Tango"; case 2: return "/Telebiometrics/TMM/Modalities/Video"; case 3: return "/Telebiometrics/TMM/Modalities/Audio"; case 4: return "/Telebiometrics/TMM/Modalities/Chemo"; case 5: return "/Telebiometrics/TMM/Modalities/Radio"; case 6: return "/Telebiometrics/TMM/Modalities/Calor"; case 7: return "/Telebiometrics/TMM/Modalities/Electro"; default: return $"/Telebiometrics/TMM/Modalities/{values[index - 1]}"; } #endregion #endregion // human-physiology #region 2.42.2.* oid_2_42_2: if (index == values.Length) return "/Telebiometrics/Human_Physiology"; switch (values[index++]) { case 0: goto oid_2_42_2_0; case 1: goto oid_2_42_2_1; case 2: return "/Telebiometrics/Human_Physiology/Symbol_Combinations"; default: return $"/Telebiometrics/Human_Physiology/{values[index - 1]}"; } // modules #region 2.42.2.0.* oid_2_42_2_0: if (index == values.Length) return "/Telebiometrics/Human_Physiology/Modules"; switch (values[index++]) { case 0: goto oid_2_42_2_0_0; default: return $"/Telebiometrics/Human_Physiology/Modules/{values[index - 1]}"; } // main #region 2.42.2.0.0.* oid_2_42_2_0_0: if (index == values.Length) return "/Telebiometrics/Human_Physiology/Modules/Main_Module"; switch (values[index++]) { case 0: return "/Telebiometrics/Human_Physiology/Modules/Main_Module/First_Version"; default: return $"/Telebiometrics/Human_Physiology/Modules/Main_Module/{values[index - 1]}"; } #endregion #endregion // symbols #region 2.42.2.1.* oid_2_42_2_1: if (index == values.Length) return "/Telebiometrics/Human_Physiology/Symbols"; switch (values[index++]) { case 1: return "/Telebiometrics/Human_Physiology/Symbols/Tango_in"; case 2: return "/Telebiometrics/Human_Physiology/Symbols/Video_in"; case 3: return "/Telebiometrics/Human_Physiology/Symbols/Audio_in"; case 4: return "/Telebiometrics/Human_Physiology/Symbols/Chemo_in"; case 5: return "/Telebiometrics/Human_Physiology/Symbols/Radio_in"; case 6: return "/Telebiometrics/Human_Physiology/Symbols/Calor_in"; case 7: return "/Telebiometrics/Human_Physiology/Symbols/Tango_out"; case 8: return "/Telebiometrics/Human_Physiology/Symbols/Video_out"; case 9: return "/Telebiometrics/Human_Physiology/Symbols/Audio_out"; case 10: return "/Telebiometrics/Human_Physiology/Symbols/Chemo_out"; case 11: return "/Telebiometrics/Human_Physiology/Symbols/Radio_out"; case 12: return "/Telebiometrics/Human_Physiology/Symbols/Calor_out"; case 13: return "/Telebiometrics/Human_Physiology/Symbols/Safe"; case 14: return "/Telebiometrics/Human_Physiology/Symbols/Threshold"; default: return $"/Telebiometrics/Human_Physiology/Symbols/{values[index - 1]}"; } #endregion #endregion // obj-cat, telehealth, e-health-protocol, th #region 2.42.3.* oid_2_42_3: if (index == values.Length) return "/Telebiometrics/E_Health_Protocol"; switch (values[index++]) { case 0: goto oid_2_42_3_0; case 1: return "/Telebiometrics/E_Health_Protocol/[Patient schemes]"; case 2: return "/Telebiometrics/E_Health_Protocol/[Medical staff schemes]"; case 3: return "/Telebiometrics/E_Health_Protocol/[Observer schemes]"; case 4: return "/Telebiometrics/E_Health_Protocol/[Pharmaceutical schemes]"; case 5: return "/Telebiometrics/E_Health_Protocol/[Laboratory schemes]"; case 6: return "/Telebiometrics/E_Health_Protocol/[Drug manufacturer schemes]"; case 7: return "/Telebiometrics/E_Health_Protocol/[Medical device schemes]"; case 8: return "/Telebiometrics/E_Health_Protocol/[Medical software schemes]"; case 9: return "/Telebiometrics/E_Health_Protocol/[Medical insurance schemes]"; case 10: return "/Telebiometrics/E_Health_Protocol/[Medical record schemes]"; default: return $"/Telebiometrics/E_Health_Protocol/{values[index - 1]}"; } // obj-cat, telehealth, e-health-protocol, th #region 2.42.3.0.* oid_2_42_3_0: if (index == values.Length) return "/Telebiometrics/E_Health_Protocol/Modules"; switch (values[index++]) { case 0: goto oid_2_42_3_0_0; case 1: goto oid_2_42_3_0_1; case 2: goto oid_2_42_3_0_2; case 3: goto oid_2_42_3_0_3; case 4: goto oid_2_42_3_0_4; case 5: goto oid_2_42_3_0_5; default: return $"/Telebiometrics/E_Health_Protocol/Modules/{values[index - 1]}"; } // identification #region 2.42.3.0.0.* oid_2_42_3_0_0: if (index == values.Length) return "/Telebiometrics/E_Health_Protocol/Modules/Identification"; switch (values[index++]) { case 1: return "/Telebiometrics/E_Health_Protocol/Modules/Identification/Version1"; default: return $"/Telebiometrics/E_Health_Protocol/Modules/Identification/{values[index - 1]}"; } #endregion // set-up #region 2.42.3.0.1.* oid_2_42_3_0_1: if (index == values.Length) return "/Telebiometrics/E_Health_Protocol/Modules/Setup"; switch (values[index++]) { case 1: return "/Telebiometrics/E_Health_Protocol/Modules/Setup/Version1"; default: return $"/Telebiometrics/E_Health_Protocol/Modules/Setup/{values[index - 1]}"; } #endregion // send-and-ack #region 2.42.3.0.2.* oid_2_42_3_0_2: if (index == values.Length) return "/Telebiometrics/E_Health_Protocol/Modules/Send-and-ack"; switch (values[index++]) { case 1: return "/Telebiometrics/E_Health_Protocol/Modules/Send-and-ack/Version1"; default: return $"/Telebiometrics/E_Health_Protocol/Modules/Send-and-ack/{values[index - 1]}"; } #endregion // command-response #region 2.42.3.0.3.* oid_2_42_3_0_3: if (index == values.Length) return "/Telebiometrics/E_Health_Protocol/Modules/Command-response"; switch (values[index++]) { case 1: return "/Telebiometrics/E_Health_Protocol/Modules/Command-response/Version1"; default: return $"/Telebiometrics/E_Health_Protocol/Modules/Command-response/{values[index - 1]}"; } #endregion // quantity-and-units #region 2.42.3.0.4.* oid_2_42_3_0_4: if (index == values.Length) return "/Telebiometrics/E_Health_Protocol/Modules/Quantities_And_Units"; switch (values[index++]) { case 1: return "/Telebiometrics/E_Health_Protocol/Modules/Quantities_And_Units/Version1"; default: return $"/Telebiometrics/E_Health_Protocol/Modules/Quantities_And_Units/{values[index - 1]}"; } #endregion // examples #region 2.42.3.0.5.* oid_2_42_3_0_5: if (index == values.Length) return "/Telebiometrics/E_Health_Protocol/Modules/Examples"; switch (values[index++]) { case 0: return "/Telebiometrics/E_Health_Protocol/Modules/Examples/Command_Response"; case 1: return "/Telebiometrics/E_Health_Protocol/Modules/Examples/Data_Message"; default: return $"/Telebiometrics/E_Health_Protocol/Modules/Examples/{values[index - 1]}"; } #endregion #endregion #endregion #endregion // cybersecurity #region 2.48.* oid_2_48: if (index == values.Length) return "/Cybersecurity"; switch (values[index++]) { case 1: return "/Cybersecurity/Country"; case 2: return "/Cybersecurity/International-Org"; default: return $"/Cybersecurity/{values[index - 1]}"; } #endregion // alerting #region 2.49.* oid_2_49: if (index == values.Length) return "/Alerting"; switch (values[index++]) { case 0: return "/Alerting/WMO"; default: return $"/Alerting/{values[index - 1]}"; } #endregion #endregion } } #pragma warning restore IDE0011 }