summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/blocks.go11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/blocks.go b/lib/blocks.go
index 76f39d6..9b184d1 100644
--- a/lib/blocks.go
+++ b/lib/blocks.go
@@ -113,5 +113,14 @@ func Pkcs7Padding(in []byte, k int) []byte {
// Removes PKCS#7 Padding from input `in`
func Pkcs7PaddingUndo(in []byte) []byte {
- return in[0:(len(in) - int(in[len(in)-1]))]
+ pd := in[len(in)-1] // padding character
+ pl := int(pd) // padding length
+
+ // Validate
+ for i := len(in) - 1; i >= len(in)-pl; i-- {
+ if in[i] != pd {
+ panic("input is not pkcs#7 padded!")
+ }
+ }
+ return in[0:(len(in) - pl)]
}