func checkPkcs7Padding()

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
}