@@ -34,5 +34,40 @@ public void NonPaddedExecutableShouldPass()
3434 Assert . Equal ( RuleResult . Pass , result ) ;
3535 Assert . Empty ( logger . Messages ) ;
3636 }
37+ [ Fact ]
38+ public void PaddedLibraryShouldFail ( )
39+ {
40+ var file = "../../inputs/wintrustpadded.dl_" ;
41+ var rule = new WinCertificatePaddingRule ( ) ;
42+ var logger = new MemorySignatureLogger ( ) ;
43+
44+ var result = rule . Validate ( file , logger , Configuration ) ;
45+ Assert . Equal ( RuleResult . Fail , result ) ;
46+ var expectedPadding = Convert . ToBase64String ( System . Text . Encoding . ASCII . GetBytes ( "fail" ) ) ;
47+ Assert . Contains ( $ "Non-zero data found after PKCS#7 structure: { expectedPadding } .", logger . Messages ) ;
48+ }
49+
50+ [ Fact ]
51+ public void NonPaddedLibraryShouldPass ( )
52+ {
53+ var file = "../../inputs/wintrustnonpadded.dl_" ;
54+ var rule = new WinCertificatePaddingRule ( ) ;
55+ var logger = new MemorySignatureLogger ( ) ;
56+
57+ var result = rule . Validate ( file , logger , Configuration ) ;
58+ Assert . Equal ( RuleResult . Pass , result ) ;
59+ Assert . Empty ( logger . Messages ) ;
60+ }
61+
62+ [ Fact ]
63+ public void NonBinaryShouldThrow ( )
64+ {
65+ //Rules shouldn't handle non-signed, non-binary content since that validation happens further up.
66+ var file = "../../inputs/nonbinary.txt" ;
67+ var rule = new WinCertificatePaddingRule ( ) ;
68+ var logger = new MemorySignatureLogger ( ) ;
69+
70+ Assert . Throws < InvalidOperationException > ( ( ) => rule . Validate ( file , SignatureLogger . Null , Configuration ) ) ;
71+ }
3772 }
3873}
0 commit comments