mirror of
https://github.com/42wim/matterbridge.git
synced 2024-12-30 07:02:37 +01:00
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)]
|
||
|
}
|