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

◆ ToDSAParameters()

static DSAParameters Internal.NativeCrypto.CapiHelper.ToDSAParameters ( this byte[] cspBlob,
bool includePrivateParameters,
byte[] cspPublicBlob )
inlinestaticpackage

Definition at line 121 of file CapiHelper.cs.

122 {
123 try
124 {
125 using MemoryStream input = new MemoryStream(cspBlob);
126 using BinaryReader binaryReader = new BinaryReader(input);
127 ReadKeyBlobHeader(binaryReader, out var bVersion);
128 DSAParameters dSAParameters = default(DSAParameters);
129 if (bVersion > 2)
130 {
131 binaryReader.ReadInt32();
132 int count = (binaryReader.ReadInt32() + 7) / 8;
133 int count2 = (binaryReader.ReadInt32() + 7) / 8;
134 int num = (binaryReader.ReadInt32() + 7) / 8;
135 int count3 = 0;
136 if (includePrivateParameters)
137 {
138 count3 = (binaryReader.ReadInt32() + 7) / 8;
139 }
140 ReadDSSSeed(dSAParameters, binaryReader, isV3: true);
141 dSAParameters.P = binaryReader.ReadReversed(count);
142 dSAParameters.Q = binaryReader.ReadReversed(count2);
143 dSAParameters.G = binaryReader.ReadReversed(count);
144 if (num > 0)
145 {
146 dSAParameters.J = binaryReader.ReadReversed(num);
147 }
148 dSAParameters.Y = binaryReader.ReadReversed(count);
149 if (includePrivateParameters)
150 {
151 dSAParameters.X = binaryReader.ReadReversed(count3);
152 }
153 }
154 else
155 {
156 binaryReader.ReadInt32();
157 int count4 = (binaryReader.ReadInt32() + 7) / 8;
158 dSAParameters.P = binaryReader.ReadReversed(count4);
159 dSAParameters.Q = binaryReader.ReadReversed(20);
160 dSAParameters.G = binaryReader.ReadReversed(count4);
161 long position = 0L;
162 if (includePrivateParameters)
163 {
164 position = binaryReader.BaseStream.Position;
165 dSAParameters.X = binaryReader.ReadReversed(20);
166 }
167 else
168 {
169 dSAParameters.Y = binaryReader.ReadReversed(count4);
170 }
171 ReadDSSSeed(dSAParameters, binaryReader, isV3: false);
172 if (includePrivateParameters)
173 {
174 if (cspPublicBlob == null)
175 {
177 }
178 using MemoryStream input2 = new MemoryStream(cspPublicBlob);
179 using BinaryReader binaryReader2 = new BinaryReader(input2);
180 binaryReader2.BaseStream.Position = position;
181 dSAParameters.Y = binaryReader2.ReadReversed(count4);
182 }
183 }
184 return dSAParameters;
185 }
187 {
188 throw GetEFailException();
189 }
190 }
static CryptographicException GetEFailException()
static void ReadDSSSeed(DSAParameters dsaParameters, BinaryReader br, bool isV3)
static void ReadKeyBlobHeader(BinaryReader br, out byte bVersion)

References System.count, Internal.NativeCrypto.CapiHelper.GetEFailException(), System.input, System.L, Internal.NativeCrypto.CapiHelper.ReadDSSSeed(), and Internal.NativeCrypto.CapiHelper.ReadKeyBlobHeader().