blob: 2f64e7e1edf428c647bf58166a186d9319ef45b4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package padding
import (
"bytes"
)
// AddPkcs7 pads given byte array using pkcs7 padding schema till it has blockSize length in bytes
func AddPkcs7(data []byte, blockSize int) []byte {
var paddingCount int
if paddingCount = blockSize - (len(data) % blockSize);paddingCount == 0 {
paddingCount=blockSize
}
return append(data, bytes.Repeat([]byte{byte(paddingCount)}, paddingCount)...)
}
// RemovePkcs7 removes pkcs7 padding from previously padded byte array
func RemovePkcs7(padded []byte, blockSize int) []byte {
dataLen:=len(padded)
paddingCount:=int(padded[dataLen-1])
if(paddingCount > blockSize || paddingCount <= 0) {
return padded //data is not padded (or not padded correctly), return as is
}
padding := padded[dataLen-paddingCount : dataLen-1]
for _, b := range padding {
if int(b) != paddingCount {
return padded //data is not padded (or not padded correcly), return as is
}
}
return padded[:len(padded)-paddingCount] //return data - padding
}
|