Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ TryFromBase64Chars()

static bool System.Convert.TryFromBase64Chars ( ReadOnlySpan< char > chars,
Span< byte > bytes,
out int bytesWritten )
inlinestatic

Definition at line 2925 of file Convert.cs.

2926 {
2927 Span<char> span = stackalloc char[4];
2928 bytesWritten = 0;
2929 while (chars.Length != 0)
2930 {
2931 int consumed;
2932 int written;
2933 bool flag = TryDecodeFromUtf16(chars, bytes, out consumed, out written);
2934 bytesWritten += written;
2935 if (flag)
2936 {
2937 return true;
2938 }
2939 chars = chars.Slice(consumed);
2940 bytes = bytes.Slice(written);
2941 if (chars[0].IsSpace())
2942 {
2943 int i;
2944 for (i = 1; i != chars.Length && chars[i].IsSpace(); i++)
2945 {
2946 }
2947 chars = chars.Slice(i);
2948 if (written % 3 != 0 && chars.Length != 0)
2949 {
2950 bytesWritten = 0;
2951 return false;
2952 }
2953 continue;
2954 }
2955 CopyToTempBufferWithoutWhiteSpace(chars, span, out var consumed2, out var charsWritten);
2956 if (((uint)charsWritten & 3u) != 0)
2957 {
2958 bytesWritten = 0;
2959 return false;
2960 }
2961 span = span.Slice(0, charsWritten);
2962 if (!TryDecodeFromUtf16(span, bytes, out var _, out var written2))
2963 {
2964 bytesWritten = 0;
2965 return false;
2966 }
2967 bytesWritten += written2;
2968 chars = chars.Slice(consumed2);
2969 bytes = bytes.Slice(written2);
2970 if (written2 % 3 == 0)
2971 {
2972 continue;
2973 }
2974 for (int j = 0; j < chars.Length; j++)
2975 {
2976 if (!chars[j].IsSpace())
2977 {
2978 bytesWritten = 0;
2979 return false;
2980 }
2981 }
2982 return true;
2983 }
2984 return true;
2985 }
static void CopyToTempBufferWithoutWhiteSpace(ReadOnlySpan< char > chars, Span< char > tempBuffer, out int consumed, out int charsWritten)
Definition Convert.cs:2987
static bool TryDecodeFromUtf16(ReadOnlySpan< char > utf16, Span< byte > bytes, out int consumed, out int written)
Definition Convert.cs:79
static bool IsSpace(this char c)
Definition Convert.cs:3007

References System.bytes, System.chars, System.Convert.CopyToTempBufferWithoutWhiteSpace(), System.Convert.IsSpace(), System.Span< T >.Slice(), and System.Convert.TryDecodeFromUtf16().

Referenced by System.Security.Cryptography.X509Certificates.X509Certificate2.CreateFromPem(), System.Convert.FromBase64CharPtr(), Internal.Cryptography.PemKeyImportHelpers.ImportEncryptedPem< TPass >(), System.Security.Cryptography.X509Certificates.X509Certificate2Collection.ImportFromPem(), Internal.Cryptography.PemKeyImportHelpers.ImportPem(), System.Security.Cryptography.XmlKeyHelper.ReadCryptoBinary(), and System.Convert.TryFromBase64String().