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

◆ ToByteArray()

static unsafe byte[] Interop.Sec_Application_Protocols.ToByteArray ( List< SslApplicationProtocol > applicationProtocols)
inlinestatic

Definition at line 264 of file Interop.cs.

265 {
266 long num = 0L;
268 for (int i = 0; i < applicationProtocols.Count; i++)
269 {
270 protocol = applicationProtocols[i].Protocol;
271 int length = protocol.Length;
272 if (length == 0 || length > 255)
273 {
274 throw new ArgumentException(System.SR.net_ssl_app_protocols_invalid, "applicationProtocols");
275 }
276 num += length + 1;
277 if (num > 32767)
278 {
279 throw new ArgumentException(System.SR.net_ssl_app_protocols_invalid, "applicationProtocols");
280 }
281 }
282 Sec_Application_Protocols value = default(Sec_Application_Protocols);
283 int num2 = sizeof(Sec_Application_Protocols) - 4;
284 value.ProtocolListsSize = (uint)(num2 + num);
285 value.ProtocolExtensionType = ApplicationProtocolNegotiationExt.ALPN;
286 value.ProtocolListSize = (short)num;
287 byte[] array = new byte[sizeof(Sec_Application_Protocols) + num];
288 int num3 = 0;
289 MemoryMarshal.Write(array.AsSpan(num3), ref value);
290 num3 += sizeof(Sec_Application_Protocols);
291 for (int j = 0; j < applicationProtocols.Count; j++)
292 {
293 protocol = applicationProtocols[j].Protocol;
295 array[num3++] = (byte)span.Length;
296 span.CopyTo(array.AsSpan(num3));
297 num3 += span.Length;
298 }
299 return array;
300 }
void CopyTo(KeyValuePair< TKey, TValue >[] array, int index)
static string net_ssl_app_protocols_invalid
Definition SR.cs:112
Definition SR.cs:7

References System.array, System.Collections.Generic.Dictionary< TKey, TValue >.CopyTo(), System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.L, System.length, System.SR.net_ssl_app_protocols_invalid, and System.value.