@@ -34,5 +34,40 @@ public void NonPaddedExecutableShouldPass()
34
34
Assert . Equal ( RuleResult . Pass , result ) ;
35
35
Assert . Empty ( logger . Messages ) ;
36
36
}
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
+ }
37
72
}
38
73
}
0 commit comments