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

◆ SignDataCore() [1/2]

virtual byte[] System.Security.Cryptography.ECDsa.SignDataCore ( ReadOnlySpan< byte > data,
HashAlgorithmName hashAlgorithm,
DSASignatureFormat signatureFormat )
inlineprotectedvirtualinherited

Definition at line 105 of file ECDsa.cs.

106 {
107 Span<byte> destination = stackalloc byte[256];
108 int maxSignatureSize = GetMaxSignatureSize(signatureFormat);
109 byte[] array = null;
110 bool flag = false;
111 int bytesWritten = 0;
112 if (maxSignatureSize > destination.Length)
113 {
114 array = ArrayPool<byte>.Shared.Rent(maxSignatureSize);
116 }
117 try
118 {
119 if (!TrySignDataCore(data, destination, hashAlgorithm, signatureFormat, out bytesWritten))
120 {
121 throw new CryptographicException();
122 }
123 byte[] result = destination.Slice(0, bytesWritten).ToArray();
124 flag = true;
125 return result;
126 }
127 finally
128 {
129 if (array != null)
130 {
131 CryptographicOperations.ZeroMemory(array.AsSpan(0, bytesWritten));
132 if (flag)
133 {
135 }
136 }
137 }
138 }
static ArrayPool< T > Shared
Definition ArrayPool.cs:7
virtual bool TrySignDataCore(ReadOnlySpan< byte > data, Span< byte > destination, HashAlgorithmName hashAlgorithm, DSASignatureFormat signatureFormat, out int bytesWritten)
Definition ECDsa.cs:252
int GetMaxSignatureSize(DSASignatureFormat signatureFormat)
Definition ECDsa.cs:748

References System.array, System.destination, System.Security.Cryptography.ECDsa.GetMaxSignatureSize(), System.Buffers.ArrayPool< T >.Shared, System.Security.Cryptography.ECDsa.TrySignDataCore(), and System.Security.Cryptography.CryptographicOperations.ZeroMemory().

Referenced by System.Security.Cryptography.ECDsa.SignData(), System.Security.Cryptography.ECDsa.SignData(), and System.Security.Cryptography.ECDsa.SignData().