Files
2026-09-30 10:20:38 +08:00

22 lines
488 B
Go

package app
import (
"errors"
)
func pkcs7Unpad(src []byte, blockSize int) ([]byte, error) {
if len(src) == 0 || len(src)%blockSize != 0 {
return nil, errors.New("invalid pkcs7 length")
}
pad := int(src[len(src)-1])
if pad == 0 || pad > blockSize || pad > len(src) {
return nil, errors.New("invalid pkcs7 padding")
}
for _, v := range src[len(src)-pad:] {
if int(v) != pad {
return nil, errors.New("invalid pkcs7 padding bytes")
}
}
return src[:len(src)-pad], nil
}