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

◆ SignHashCore()

virtual byte[] System.Security.Cryptography.ECDsa.SignHashCore ( ReadOnlySpan< byte > hash,
DSASignatureFormat signatureFormat )
inlineprotectedvirtualinherited

Definition at line 193 of file ECDsa.cs.

194 {
195 Span<byte> destination = stackalloc byte[256];
196 int maxSignatureSize = GetMaxSignatureSize(signatureFormat);
197 byte[] array = null;
198 bool flag = false;
199 int bytesWritten = 0;
200 if (maxSignatureSize > destination.Length)
201 {
202 array = ArrayPool<byte>.Shared.Rent(maxSignatureSize);
204 }
205 try
206 {
207 if (!TrySignHashCore(hash, destination, signatureFormat, out bytesWritten))
208 {
209 throw new CryptographicException();
210 }
211 byte[] result = destination.Slice(0, bytesWritten).ToArray();
212 flag = true;
213 return result;
214 }
215 finally
216 {
217 if (array != null)
218 {
219 CryptographicOperations.ZeroMemory(array.AsSpan(0, bytesWritten));
220 if (flag)
221 {
223 }
224 }
225 }
226 }
static ArrayPool< T > Shared
Definition ArrayPool.cs:7
virtual bool TrySignHashCore(ReadOnlySpan< byte > hash, Span< byte > destination, DSASignatureFormat signatureFormat, out int bytesWritten)
Definition ECDsa.cs:490
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.TrySignHashCore(), and System.Security.Cryptography.CryptographicOperations.ZeroMemory().

Referenced by System.Security.Cryptography.ECDsa.SignDataCore(), and System.Security.Cryptography.ECDsa.SignHash().