@@ -67,7 +67,7 @@ public void FindEntryDeep()
6767 using var package = new Package ( ) ;
6868 package . Read ( path ) ;
6969
70- Assert . Multiple ( ( ) =>
70+ using ( Assert . EnterMultipleScope ( ) )
7171 {
7272 Assert . That ( package . FindEntry ( "addons\\ chess\\ chess.vdf" ) ? . CRC32 , Is . EqualTo ( 0xA4115395 ) ) ;
7373 Assert . That ( package . FindEntry ( "addons/chess\\ chess.vdf" ) ? . CRC32 , Is . EqualTo ( 0xA4115395 ) ) ;
@@ -78,7 +78,7 @@ public void FindEntryDeep()
7878 Assert . That ( package . FindEntry ( "\\ addons/hello_github_reader/chess.vdf" ) , Is . Null ) ;
7979 Assert . That ( package . FindEntry ( string . Empty ) , Is . Null ) ;
8080 Assert . That ( package . FindEntry ( " " ) , Is . Null ) ;
81- } ) ;
81+ }
8282 }
8383
8484 [ Test ]
@@ -90,7 +90,7 @@ public void TestBinarySearch()
9090 package . OptimizeEntriesForBinarySearch ( ) ;
9191 package . Read ( path ) ;
9292
93- Assert . Multiple ( ( ) =>
93+ using ( Assert . EnterMultipleScope ( ) )
9494 {
9595 Assert . That ( package . FindEntry ( "addons\\ chess\\ chess.vdf" ) ? . CRC32 , Is . EqualTo ( 0xA4115395 ) ) ;
9696 Assert . That ( package . FindEntry ( "addons/chess\\ chess.vdf" ) ? . CRC32 , Is . EqualTo ( 0xA4115395 ) ) ;
@@ -101,7 +101,7 @@ public void TestBinarySearch()
101101 Assert . That ( package . FindEntry ( "\\ addons/hello_github_reader/chess.vdf" ) , Is . Null ) ;
102102 Assert . That ( package . FindEntry ( string . Empty ) , Is . Null ) ;
103103 Assert . That ( package . FindEntry ( " " ) , Is . Null ) ;
104- } ) ;
104+ }
105105
106106 foreach ( var extension in package . Entries ! . Values )
107107 {
@@ -121,7 +121,7 @@ public void TestBinarySearchCaseInsensitive()
121121 package . OptimizeEntriesForBinarySearch ( StringComparison . OrdinalIgnoreCase ) ;
122122 package . Read ( path ) ;
123123
124- Assert . Multiple ( ( ) =>
124+ using ( Assert . EnterMultipleScope ( ) )
125125 {
126126 Assert . That ( package . FindEntry ( "ADDONS\\ chess\\ chess.vdf" ) ? . CRC32 , Is . EqualTo ( 0xA4115395 ) ) ;
127127 Assert . That ( package . FindEntry ( "addons/CHESS\\ chess.vdf" ) ? . CRC32 , Is . EqualTo ( 0xA4115395 ) ) ;
@@ -131,7 +131,7 @@ public void TestBinarySearchCaseInsensitive()
131131
132132 Assert . That ( package . FindEntry ( "\\ addons/CHESS/hello_github_reader.vdf" ) , Is . Null ) ;
133133 Assert . That ( package . FindEntry ( "\\ addons/hello_github_reader/CHESS.vdf" ) , Is . Null ) ;
134- } ) ;
134+ }
135135
136136 foreach ( var extension in package . Entries ! . Values )
137137 {
@@ -150,13 +150,13 @@ public void FindEntryRoot()
150150 using var package = new Package ( ) ;
151151 package . Read ( path ) ;
152152
153- Assert . Multiple ( ( ) =>
153+ using ( Assert . EnterMultipleScope ( ) )
154154 {
155155 Assert . That ( package . FindEntry ( "kitten.jpg" ) ? . CRC32 , Is . EqualTo ( 0x9C800116 ) ) ;
156156 Assert . That ( package . FindEntry ( "\\ kitten.jpg" ) ? . CRC32 , Is . EqualTo ( 0x9C800116 ) ) ;
157157 Assert . That ( package . FindEntry ( "/kitten.jpg" ) ? . CRC32 , Is . EqualTo ( 0x9C800116 ) ) ;
158158 Assert . That ( package . FindEntry ( "\\ /kitten.jpg" ) ? . CRC32 , Is . EqualTo ( 0x9C800116 ) ) ;
159- } ) ;
159+ }
160160 }
161161
162162 [ Test ]
@@ -206,7 +206,7 @@ public void FindEntrySpacesAndExtensionless()
206206 using var package = new Package ( ) ;
207207 package . Read ( path ) ;
208208
209- Assert . Multiple ( ( ) =>
209+ using ( Assert . EnterMultipleScope ( ) )
210210 {
211211 Assert . That ( package . FindEntry ( "test" ) ? . CRC32 , Is . EqualTo ( 0x0BA144CC ) ) ;
212212 Assert . That ( package . FindEntry ( "folder with space/test" ) ? . CRC32 , Is . EqualTo ( 0xBF108706 ) ) ;
@@ -218,7 +218,7 @@ public void FindEntrySpacesAndExtensionless()
218218 Assert . That ( package . FindEntry ( "uppercasefolder/UpperCaseFile.txt" ) , Is . Null ) ;
219219 Assert . That ( package . FindEntry ( "uppercasefolder/bad_file_forfun.TXT" ) , Is . Null ) ;
220220 Assert . That ( package . FindEntry ( "uppercasefolder/bad_file_forfun.txt2" ) , Is . Null ) ;
221- } ) ;
221+ }
222222 }
223223
224224 [ Test ]
@@ -258,7 +258,7 @@ public void TestGetFullPath()
258258 using var package = new Package ( ) ;
259259 package . Read ( path ) ;
260260
261- Assert . Multiple ( ( ) =>
261+ using ( Assert . EnterMultipleScope ( ) )
262262 {
263263 Assert . That ( package . FindEntry ( "test" ) ? . GetFullPath ( ) , Is . EqualTo ( "test" ) ) ;
264264 Assert . That ( package . FindEntry ( "folder with space/test" ) ? . GetFullPath ( ) , Is . EqualTo ( "folder with space/test" ) ) ;
@@ -270,7 +270,7 @@ public void TestGetFullPath()
270270 Assert . That ( package . FindEntry ( "folder with space/test" ) ? . GetFileName ( ) , Is . EqualTo ( "test" ) ) ;
271271 Assert . That ( package . FindEntry ( "folder with space\\ space_extension. txt" ) ? . GetFileName ( ) , Is . EqualTo ( "space_extension. txt" ) ) ;
272272 Assert . That ( package . FindEntry ( "uppercasefolder/bad_file_forfun.txt" ) ? . GetFileName ( ) , Is . EqualTo ( "bad_file_forfun.txt" ) ) ;
273- } ) ;
273+ }
274274 }
275275
276276 [ Test ]
@@ -281,14 +281,14 @@ public void TestPackageEntryToString()
281281 using var package = new Package ( ) ;
282282 package . Read ( path ) ;
283283
284- Assert . Multiple ( ( ) =>
284+ using ( Assert . EnterMultipleScope ( ) )
285285 {
286286 Assert . That ( package . FindEntry ( "test" ) ? . ToString ( ) , Is . EqualTo ( "test crc=0xba144cc metadatasz=0 fnumber=0 ofs=0x00 sz=39" ) ) ;
287287 Assert . That ( package . FindEntry ( "folder with space/test" ) ? . ToString ( ) , Is . EqualTo ( "folder with space/test crc=0xbf108706 metadatasz=0 fnumber=0 ofs=0x52 sz=41" ) ) ;
288288 Assert . That ( package . FindEntry ( "folder with space\\ space_extension. txt" ) ? . ToString ( ) , Is . EqualTo ( "folder with space/space_extension. txt crc=0x9321fc0 metadatasz=0 fnumber=0 ofs=0x7b sz=30" ) ) ;
289289 Assert . That ( package . FindEntry ( "uppercasefolder/bad_file_forfun.txt" ) ? . ToString ( ) , Is . EqualTo ( "uppercasefolder/bad_file_forfun.txt crc=0x15c1490f metadatasz=0 fnumber=0 ofs=0xa2 sz=2" ) ) ;
290290 Assert . That ( package . FindEntry ( "UpperCaseFolder/UpperCaseFile.txt" ) ? . ToString ( ) , Is . EqualTo ( "UpperCaseFolder/UpperCaseFile.txt crc=0x32cff012 metadatasz=0 fnumber=0 ofs=0x27 sz=43" ) ) ;
291- } ) ;
291+ }
292292 }
293293
294294 [ Test ]
@@ -315,7 +315,7 @@ public void TestFileReadWithPreloadedBytes()
315315
316316 package . ReadEntry ( file , out var allBytes ) ;
317317
318- Assert . Multiple ( ( ) =>
318+ using ( Assert . EnterMultipleScope ( ) )
319319 {
320320 Assert . That ( file . ToString ( ) , Is . EqualTo ( "lorem.txt crc=0xf2cafa54 metadatasz=56 fnumber=32767 ofs=0x00 sz=588" ) ) ;
321321 Assert . That ( file . CRC32 , Is . EqualTo ( 0xF2CAFA54 ) ) ;
@@ -330,7 +330,7 @@ public void TestFileReadWithPreloadedBytes()
330330 "faucibus erat, vel fringilla purus scelerisque tempor. Proin feugiat blandit sapien eget tempus. Praesent gravida in " +
331331 "risus a accumsan. Praesent egestas tincidunt dui nec laoreet. Sed ac lacus non tortor consectetur consectetur a ac " +
332332 "lacus. In rhoncus turpis a nisl volutpat, nec cursus urna tincidunt.\n " ) ) ) ;
333- } ) ;
333+ }
334334 }
335335
336336 [ Test ]
@@ -395,7 +395,7 @@ public void TestFileChecksums()
395395 }
396396
397397 [ Test ]
398- public void ParsesCS2VPKWithInvalidSignature ( )
398+ public void ParsesCS2VPKWithRSA4096Signature ( )
399399 {
400400 var path = Path . Combine ( TestContext . CurrentContext . TestDirectory , "Files" , "cs2_new_signature.vpk" ) ;
401401
@@ -404,12 +404,34 @@ public void ParsesCS2VPKWithInvalidSignature()
404404
405405 package . VerifyHashes ( ) ;
406406
407- Assert . Multiple ( ( ) =>
407+ using ( Assert . EnterMultipleScope ( ) )
408408 {
409409 Assert . That ( package . Signature , Is . Null ) ;
410410 Assert . That ( package . PublicKey , Is . Null ) ;
411+ Assert . That ( package . SignatureType , Is . EqualTo ( ESignatureType . OnlyFileChecksum ) ) ;
412+ Assert . That ( package . IsSignatureValid ( ) , Is . True ) ;
413+ }
414+ }
415+
416+ [ Test ]
417+ public void ReadCSGOPak01WithRSA4096Signature ( )
418+ {
419+ var path = Path . Combine ( TestContext . CurrentContext . TestDirectory , "Files" , "cs2_new_signature_actually_signed.vpk" ) ;
420+
421+ using var package = new Package ( ) ;
422+ package . Read ( path ) ;
423+
424+ package . VerifyHashes ( ) ;
425+
426+ using ( Assert . EnterMultipleScope ( ) )
427+ {
428+ Assert . That ( package . SignatureType , Is . EqualTo ( ESignatureType . OnlyFileChecksum ) ) ;
429+ Assert . That ( package . PublicKey , Is . Not . Null ) ;
430+ Assert . That ( package . Signature , Is . Not . Null ) ;
431+ Assert . That ( package . PublicKey ! , Has . Length . EqualTo ( 550 ) ) ;
432+ Assert . That ( package . Signature ! , Has . Length . EqualTo ( 512 ) ) ;
411433 Assert . That ( package . IsSignatureValid ( ) , Is . True ) ;
412- } ) ;
434+ }
413435 }
414436
415437 [ Test ]
@@ -538,20 +560,20 @@ private static void TestVPKExtraction(string path)
538560 }
539561 }
540562
541- Assert . Multiple ( ( ) =>
563+ using ( Assert . EnterMultipleScope ( ) )
542564 {
543565 Assert . That ( data , Has . Count . EqualTo ( 3 ) ) ;
544566 Assert . That ( data [ "kitten.jpg" ] , Is . EqualTo ( "1C03B452FEE5274B0BC1FA1A866EE6C8FA0D43AA464C6BCFB3AB531F6E813081" ) ) ;
545567 Assert . That ( data [ "steammessages_base.proto" ] , Is . EqualTo ( "FCC96AE59EE6BB9EEC4E16A50C928EFD3FB16E1CCA49E38BD2FA8391AB7936BE" ) ) ;
546568 Assert . That ( data [ "steammessages_clientserver.proto" ] , Is . EqualTo ( "1F90C38527D0853B4713942668F2DC83F433DBE919C002825A4526138A200428" ) ) ;
547- } ) ;
569+ }
548570
549- Assert . Multiple ( ( ) =>
571+ using ( Assert . EnterMultipleScope ( ) )
550572 {
551573 Assert . That ( flatEntries [ "kitten" ] . TotalLength , Is . EqualTo ( 16361 ) ) ;
552574 Assert . That ( flatEntries [ "steammessages_base" ] . TotalLength , Is . EqualTo ( 2563 ) ) ;
553575 Assert . That ( flatEntries [ "steammessages_clientserver" ] . TotalLength , Is . EqualTo ( 39177 ) ) ;
554- } ) ;
576+ }
555577 }
556578 }
557579}
0 commit comments