summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/Philipp15b/go-steam/cryptoutil/pkcs7.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/Philipp15b/go-steam/cryptoutil/pkcs7.go')
-rw-r--r--vendor/github.com/Philipp15b/go-steam/cryptoutil/pkcs7.go25
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)]
+}