Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
UniversalCryptoTransform.cs
Go to the documentation of this file.
1using System;
3
5
7{
8 public bool CanReuseTransform => true;
9
10 public bool CanTransformMultipleBlocks => true;
11
13
15
17
18 protected PaddingMode PaddingMode { get; private set; }
19
20 protected BasicSymmetricCipher BasicSymmetricCipher { get; private set; }
21
22 public static UniversalCryptoTransform Create(PaddingMode paddingMode, BasicSymmetricCipher cipher, bool encrypting)
23 {
24 if (encrypting)
25 {
26 return new UniversalCryptoEncryptor(paddingMode, cipher);
27 }
28 return new UniversalCryptoDecryptor(paddingMode, cipher);
29 }
30
31 protected UniversalCryptoTransform(PaddingMode paddingMode, BasicSymmetricCipher basicSymmetricCipher)
32 {
33 PaddingMode = paddingMode;
34 BasicSymmetricCipher = basicSymmetricCipher;
35 }
36
37 public void Dispose()
38 {
39 Dispose(disposing: true);
40 GC.SuppressFinalize(this);
41 }
42
43 public int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
44 {
45 if (inputBuffer == null)
46 {
47 throw new ArgumentNullException("inputBuffer");
48 }
49 if (inputOffset < 0)
50 {
51 throw new ArgumentOutOfRangeException("inputOffset");
52 }
53 if (inputOffset > inputBuffer.Length)
54 {
55 throw new ArgumentOutOfRangeException("inputOffset");
56 }
57 if (inputCount <= 0)
58 {
59 throw new ArgumentOutOfRangeException("inputCount");
60 }
61 if (inputCount % InputBlockSize != 0)
62 {
64 }
65 if (inputCount > inputBuffer.Length - inputOffset)
66 {
68 }
69 if (outputBuffer == null)
70 {
71 throw new ArgumentNullException("outputBuffer");
72 }
73 if (outputOffset > outputBuffer.Length)
74 {
75 throw new ArgumentOutOfRangeException("outputOffset");
76 }
77 if (inputCount > outputBuffer.Length - outputOffset)
78 {
80 }
81 return UncheckedTransformBlock(inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset);
82 }
83
84 public byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)
85 {
86 if (inputBuffer == null)
87 {
88 throw new ArgumentNullException("inputBuffer");
89 }
90 if (inputOffset < 0)
91 {
92 throw new ArgumentOutOfRangeException("inputOffset");
93 }
94 if (inputCount < 0)
95 {
96 throw new ArgumentOutOfRangeException("inputCount");
97 }
98 if (inputOffset > inputBuffer.Length)
99 {
100 throw new ArgumentOutOfRangeException("inputOffset");
101 }
102 if (inputCount > inputBuffer.Length - inputOffset)
103 {
105 }
106 return UncheckedTransformFinalBlock(inputBuffer, inputOffset, inputCount);
107 }
108
109 public abstract bool TransformOneShot(ReadOnlySpan<byte> input, Span<byte> output, out int bytesWritten);
110
111 protected virtual void Dispose(bool disposing)
112 {
113 if (disposing)
114 {
116 }
117 }
118
119 protected int UncheckedTransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
120 {
121 return UncheckedTransformBlock(inputBuffer.AsSpan(inputOffset, inputCount), outputBuffer.AsSpan(outputOffset));
122 }
123
124 protected abstract int UncheckedTransformBlock(ReadOnlySpan<byte> inputBuffer, Span<byte> outputBuffer);
125
126 protected abstract byte[] UncheckedTransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount);
127
128 protected abstract int UncheckedTransformFinalBlock(ReadOnlySpan<byte> inputBuffer, Span<byte> outputBuffer);
129}
static UniversalCryptoTransform Create(PaddingMode paddingMode, BasicSymmetricCipher cipher, bool encrypting)
int UncheckedTransformBlock(ReadOnlySpan< byte > inputBuffer, Span< byte > outputBuffer)
int UncheckedTransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
byte[] UncheckedTransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)
byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)
int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
int UncheckedTransformFinalBlock(ReadOnlySpan< byte > inputBuffer, Span< byte > outputBuffer)
bool TransformOneShot(ReadOnlySpan< byte > input, Span< byte > output, out int bytesWritten)
UniversalCryptoTransform(PaddingMode paddingMode, BasicSymmetricCipher basicSymmetricCipher)
static void SuppressFinalize(object obj)
Definition GC.cs:202
Definition GC.cs:8
static string Cryptography_TransformBeyondEndOfBuffer
Definition SR.cs:144
static string Cryptography_MustTransformWholeBlock
Definition SR.cs:118
Definition SR.cs:7