From 34637327ef1eef55c35286223d2669637c9da25e Mon Sep 17 00:00:00 2001 From: rsiddharth Date: Tue, 26 Jan 2021 21:24:18 -0500 Subject: lib: update Pkcs7PaddingUndo Add validation. --- lib/blocks.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'lib') 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)] } -- cgit v1.2.3