25 lines
566 B
Go
25 lines
566 B
Go
package helper
|
|
|
|
import "errors"
|
|
|
|
func Pad(buf []byte, size int) ([]byte, error) {
|
|
bufLen := len(buf)
|
|
padLen := size - bufLen%size
|
|
padded := make([]byte, bufLen+padLen)
|
|
copy(padded, buf)
|
|
for i := 0; i < padLen; i++ {
|
|
padded[bufLen+i] = byte(padLen)
|
|
}
|
|
return padded, nil
|
|
}
|
|
|
|
func Unpad(padded []byte, size int) ([]byte, error) {
|
|
if len(padded)%size != 0 {
|
|
return nil, errors.New("pkcs7: Padded value wasn't in correct size.")
|
|
}
|
|
|
|
bufLen := len(padded) - int(padded[len(padded)-1])
|
|
buf := make([]byte, bufLen)
|
|
copy(buf, padded[:bufLen])
|
|
return buf, nil
|
|
} |