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

◆ ToKeyBlob() [2/2]

static byte[] Internal.NativeCrypto.CapiHelper.ToKeyBlob ( this RSAParameters rsaParameters)
inlinestaticpackage

Definition at line 253 of file CapiHelper.cs.

254 {
255 if (rsaParameters.Modulus == null)
256 {
257 throw GetBadDataException();
258 }
259 if (rsaParameters.Exponent == null || rsaParameters.Exponent.Length > 4)
260 {
261 throw GetBadDataException();
262 }
263 int num = rsaParameters.Modulus.Length;
264 int num2 = (num + 1) / 2;
265 if (rsaParameters.P != null)
266 {
267 if (rsaParameters.P.Length != num2)
268 {
269 throw GetBadDataException();
270 }
271 if (rsaParameters.Q == null || rsaParameters.Q.Length != num2)
272 {
273 throw GetBadDataException();
274 }
275 if (rsaParameters.DP == null || rsaParameters.DP.Length != num2)
276 {
277 throw GetBadDataException();
278 }
279 if (rsaParameters.DQ == null || rsaParameters.DQ.Length != num2)
280 {
281 throw GetBadDataException();
282 }
283 if (rsaParameters.InverseQ == null || rsaParameters.InverseQ.Length != num2)
284 {
285 throw GetBadDataException();
286 }
287 if (rsaParameters.D == null || rsaParameters.D.Length != num)
288 {
289 throw GetBadDataException();
290 }
291 }
292 bool flag = rsaParameters.P != null && rsaParameters.P.Length != 0;
293 MemoryStream memoryStream = new MemoryStream();
294 BinaryWriter binaryWriter = new BinaryWriter(memoryStream);
295 binaryWriter.Write((byte)(flag ? 7u : 6u));
296 binaryWriter.Write((byte)2);
297 binaryWriter.Write((ushort)0);
298 binaryWriter.Write(41984u);
299 binaryWriter.Write(flag ? 843141970 : 826364754);
300 binaryWriter.Write((uint)(num * 8));
301 uint num3 = 0u;
302 for (int i = 0; i < rsaParameters.Exponent.Length; i++)
303 {
304 num3 <<= 8;
305 num3 |= rsaParameters.Exponent[i];
306 }
307 binaryWriter.Write(num3);
308 binaryWriter.WriteReversed(rsaParameters.Modulus);
309 if (flag)
310 {
311 binaryWriter.WriteReversed(rsaParameters.P);
312 binaryWriter.WriteReversed(rsaParameters.Q);
313 binaryWriter.WriteReversed(rsaParameters.DP);
314 binaryWriter.WriteReversed(rsaParameters.DQ);
315 binaryWriter.WriteReversed(rsaParameters.InverseQ);
316 binaryWriter.WriteReversed(rsaParameters.D);
317 }
318 binaryWriter.Flush();
319 return memoryStream.ToArray();
320 }
static CryptographicException GetBadDataException()
virtual void Write(bool value)
virtual byte[] ToArray()

References System.Security.Cryptography.RSAParameters.D, System.Security.Cryptography.RSAParameters.DP, System.Security.Cryptography.RSAParameters.DQ, System.Security.Cryptography.RSAParameters.Exponent, System.IO.BinaryWriter.Flush(), Internal.NativeCrypto.CapiHelper.GetBadDataException(), System.Security.Cryptography.RSAParameters.InverseQ, System.Security.Cryptography.RSAParameters.Modulus, System.Security.Cryptography.RSAParameters.P, System.Security.Cryptography.RSAParameters.Q, System.IO.MemoryStream.ToArray(), and System.IO.BinaryWriter.Write().