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

◆ TransformOneShot() [2/2]

unsafe override bool Internal.Cryptography.UniversalCryptoDecryptor.TransformOneShot ( ReadOnlySpan< byte > input,
Span< byte > output,
out int bytesWritten )
inline

Definition at line 147 of file UniversalCryptoDecryptor.cs.

148 {
149 if (input.Length % base.PaddingSizeBytes != 0)
150 {
152 }
154 {
155 if (output.Length >= input.Length)
156 {
157 bytesWritten = base.BasicSymmetricCipher.TransformFinal(input, output);
158 return true;
159 }
160 bytesWritten = 0;
161 return false;
162 }
164 Span<byte> output2 = array.AsSpan(0, input.Length);
165 Span<byte> span = default(Span<byte>);
166 fixed (byte* ptr = output2)
167 {
168 try
169 {
170 span = output2[..base.BasicSymmetricCipher.TransformFinal(input, output2)];
171 int paddingLength = GetPaddingLength(span);
172 if (paddingLength > output.Length)
173 {
174 bytesWritten = 0;
175 return false;
176 }
177 span.Slice(0, paddingLength).CopyTo(output);
178 bytesWritten = paddingLength;
179 return true;
180 }
181 finally
182 {
185 }
186 }
187 }
static string Cryptography_PartialBlock
Definition SR.cs:124
Definition SR.cs:7
static void Return(byte[] array, int clearSize=-1)
Definition CryptoPool.cs:12
static byte[] Rent(int minimumLength)
Definition CryptoPool.cs:7
Span< T > Slice(int start)
Definition Span.cs:271
int Length
Definition Span.cs:70

References System.array, System.SR.Cryptography_PartialBlock, Internal.Cryptography.UniversalCryptoDecryptor.DepaddingRequired, Internal.Cryptography.UniversalCryptoDecryptor.GetPaddingLength(), System.input, System.Span< T >.Length, System.Security.Cryptography.CryptoPool.Rent(), System.Security.Cryptography.CryptoPool.Return(), System.Span< T >.Slice(), and System.Security.Cryptography.CryptographicOperations.ZeroMemory().