26 lines
627 B
Go
26 lines
627 B
Go
package cryptoutil
|
|
|
|
import (
|
|
"crypto/aes"
|
|
)
|
|
|
|
// Returns a new byte array padded with PKCS7 and prepended
|
|
// with empty space of the AES block size (16 bytes) for the IV.
|
|
func padPKCS7WithIV(src []byte) []byte {
|
|
missing := aes.BlockSize - (len(src) % aes.BlockSize)
|
|
newSize := len(src) + aes.BlockSize + missing
|
|
dest := make([]byte, newSize, newSize)
|
|
copy(dest[aes.BlockSize:], src)
|
|
|
|
padding := byte(missing)
|
|
for i := newSize - missing; i < newSize; i++ {
|
|
dest[i] = padding
|
|
}
|
|
return dest
|
|
}
|
|
|
|
func unpadPKCS7(src []byte) []byte {
|
|
padLen := src[len(src)-1]
|
|
return src[:len(src)-int(padLen)]
|
|
}
|