Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ToBase64Transform.cs
Go to the documentation of this file.
1
using
System.Buffers
;
2
using
System.Buffers.Text
;
3
4
namespace
System.Security.Cryptography
;
5
6
public
class
ToBase64Transform
:
ICryptoTransform
,
IDisposable
7
{
8
public
int
InputBlockSize
=> 3;
9
10
public
int
OutputBlockSize
=> 4;
11
12
public
bool
CanTransformMultipleBlocks
=>
true
;
13
14
public
virtual
bool
CanReuseTransform
=>
true
;
15
16
public
int
TransformBlock
(
byte
[] inputBuffer,
int
inputOffset,
int
inputCount,
byte
[] outputBuffer,
int
outputOffset)
17
{
18
ThrowHelper
.
ValidateTransformBlock
(inputBuffer, inputOffset, inputCount);
19
int
result;
20
int
num =
Math
.
DivRem
(inputCount,
InputBlockSize
, out result);
21
if
(num == 0)
22
{
23
ThrowHelper
.
ThrowArgumentOutOfRange
(
ThrowHelper
.
ExceptionArgument
.inputCount);
24
}
25
if
(outputBuffer ==
null
)
26
{
27
ThrowHelper
.
ThrowArgumentNull
(
ThrowHelper
.
ExceptionArgument
.outputBuffer);
28
}
29
if
(result != 0)
30
{
31
ThrowHelper
.
ThrowArgumentOutOfRange
(
ThrowHelper
.
ExceptionArgument
.inputCount);
32
}
33
int
num2 = checked(num *
OutputBlockSize
);
34
if
(num2 > outputBuffer.Length - outputOffset)
35
{
36
ThrowHelper
.
ThrowArgumentOutOfRange
(
ThrowHelper
.
ExceptionArgument
.outputBuffer);
37
}
38
Span<byte>
span = inputBuffer.AsSpan(inputOffset, inputCount);
39
Span<byte>
utf = outputBuffer.AsSpan(outputOffset, num2);
40
int
bytesConsumed;
41
int
bytesWritten;
42
OperationStatus
operationStatus =
Base64
.
EncodeToUtf8
(span, utf, out bytesConsumed, out bytesWritten, isFinalBlock:
false
);
43
return
bytesWritten;
44
}
45
46
public
byte
[]
TransformFinalBlock
(
byte
[] inputBuffer,
int
inputOffset,
int
inputCount)
47
{
48
ThrowHelper
.
ValidateTransformBlock
(inputBuffer, inputOffset, inputCount);
49
if
(inputCount == 0)
50
{
51
return
Array
.Empty<
byte
>();
52
}
53
Span<byte>
span = inputBuffer.AsSpan(inputOffset, inputCount);
54
int
result;
55
int
num =
Math
.
DivRem
(inputCount,
InputBlockSize
, out result);
56
int
num2 = num + ((result != 0) ? 1 : 0);
57
byte
[]
array
=
new
byte
[num2 *
OutputBlockSize
];
58
int
bytesConsumed;
59
int
bytesWritten;
60
OperationStatus
operationStatus =
Base64
.
EncodeToUtf8
(span,
array
, out bytesConsumed, out bytesWritten);
61
return
array
;
62
}
63
64
public
void
Dispose
()
65
{
66
Clear
();
67
}
68
69
public
void
Clear
()
70
{
71
Dispose
(disposing:
true
);
72
GC
.
SuppressFinalize
(
this
);
73
}
74
75
protected
virtual
void
Dispose
(
bool
disposing)
76
{
77
}
78
79
~ToBase64Transform
()
80
{
81
Dispose
(disposing:
false
);
82
}
83
}
System.Array
Definition
Array.cs:16
System.Buffers.Text.Base64.EncodeToUtf8
static unsafe OperationStatus EncodeToUtf8(ReadOnlySpan< byte > bytes, Span< byte > utf8, out int bytesConsumed, out int bytesWritten, bool isFinalBlock=true)
Definition
Base64.cs:413
System.Buffers.Text.Base64
Definition
Base64.cs:10
System.GC.SuppressFinalize
static void SuppressFinalize(object obj)
Definition
GC.cs:202
System.GC
Definition
GC.cs:8
System.Math.DivRem
static int DivRem(int a, int b, out int result)
Definition
Math.cs:329
System.Math
Definition
Math.cs:13
System.Security.Cryptography.ThrowHelper.ThrowArgumentOutOfRange
static void ThrowArgumentOutOfRange(ExceptionArgument argument)
Definition
ThrowHelper.cs:44
System.Security.Cryptography.ThrowHelper.ValidateTransformBlock
static void ValidateTransformBlock(byte[] inputBuffer, int inputOffset, int inputCount)
Definition
ThrowHelper.cs:17
System.Security.Cryptography.ThrowHelper.ThrowArgumentNull
static void ThrowArgumentNull(ExceptionArgument argument)
Definition
ThrowHelper.cs:38
System.Security.Cryptography.ThrowHelper.ExceptionArgument
ExceptionArgument
Definition
ThrowHelper.cs:9
System.Security.Cryptography.ThrowHelper
Definition
ThrowHelper.cs:7
System.Security.Cryptography.ToBase64Transform.InputBlockSize
int InputBlockSize
Definition
ToBase64Transform.cs:8
System.Security.Cryptography.ToBase64Transform.CanTransformMultipleBlocks
bool CanTransformMultipleBlocks
Definition
ToBase64Transform.cs:12
System.Security.Cryptography.ToBase64Transform.Dispose
void Dispose()
Definition
ToBase64Transform.cs:64
System.Security.Cryptography.ToBase64Transform.CanReuseTransform
virtual bool CanReuseTransform
Definition
ToBase64Transform.cs:14
System.Security.Cryptography.ToBase64Transform.Dispose
virtual void Dispose(bool disposing)
Definition
ToBase64Transform.cs:75
System.Security.Cryptography.ToBase64Transform.TransformFinalBlock
byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)
Definition
ToBase64Transform.cs:46
System.Security.Cryptography.ToBase64Transform.TransformBlock
int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
Definition
ToBase64Transform.cs:16
System.Security.Cryptography.ToBase64Transform.OutputBlockSize
int OutputBlockSize
Definition
ToBase64Transform.cs:10
System.Security.Cryptography.ToBase64Transform.Clear
void Clear()
Definition
ToBase64Transform.cs:69
System.Security.Cryptography.ToBase64Transform.~ToBase64Transform
~ToBase64Transform()
Definition
ToBase64Transform.cs:79
System.Security.Cryptography.ToBase64Transform
Definition
ToBase64Transform.cs:7
System.IDisposable
Definition
IDisposable.cs:4
System.Security.Cryptography.ICryptoTransform
Definition
ICryptoTransform.cs:4
System.Buffers.Text
Definition
Base64.cs:7
System.Buffers.OperationStatus
OperationStatus
Definition
OperationStatus.cs:4
System.Buffers
Definition
Base64.cs:7
System.Security.Cryptography
Definition
CryptoPool.cs:3
System.ExceptionArgument.array
@ array
System.Span
Definition
Span.cs:14
source
System.Security.Cryptography.Encoding
System.Security.Cryptography
ToBase64Transform.cs
Generated by
1.10.0