in sec/pkcs.go [160:181]
func checkPkcs7Padding(buf []byte) ([]byte, error) {
if len(buf) < 16 {
return nil, fmt.Errorf("Invalid padded buffer")
}
padLen := int(buf[len(buf)-1])
if padLen < 1 || padLen > 16 {
return nil, fmt.Errorf("Invalid padded buffer")
}
if padLen > len(buf) {
return nil, fmt.Errorf("Invalid padded buffer")
}
for pos := len(buf) - padLen; pos < len(buf); pos++ {
if int(buf[pos]) != padLen {
return nil, fmt.Errorf("Invalid padded buffer")
}
}
return buf[:len(buf)-padLen], nil
}