diff options
Diffstat (limited to 'vendor/github.com/Philipp15b/go-steam/cryptoutil/pkcs7.go')
-rw-r--r-- | vendor/github.com/Philipp15b/go-steam/cryptoutil/pkcs7.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/vendor/github.com/Philipp15b/go-steam/cryptoutil/pkcs7.go b/vendor/github.com/Philipp15b/go-steam/cryptoutil/pkcs7.go new file mode 100644 index 00000000..8200fb94 --- /dev/null +++ b/vendor/github.com/Philipp15b/go-steam/cryptoutil/pkcs7.go @@ -0,0 +1,25 @@ +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)]
+}
|