From 038f60349cc3ce373171486440e4e291cfdd4305 Mon Sep 17 00:00:00 2001 From: Sandeep Shewalkar <sandeepss@mkcl.org> Date: Wed, 12 Jul 2017 12:49:12 +0530 Subject: [PATCH] Security helper and compression helper added --- compressionHelper.go | 16 ++++++++++ glide.yaml | 11 ++----- securityHelper.go | 71 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 89 insertions(+), 9 deletions(-) create mode 100644 compressionHelper.go create mode 100644 securityHelper.go diff --git a/compressionHelper.go b/compressionHelper.go new file mode 100644 index 0000000..08fe9ce --- /dev/null +++ b/compressionHelper.go @@ -0,0 +1,16 @@ +package coreos + +import "github.com/DataDog/zstd" + +//Compress Compress +func Compress(inputData []byte) ([]byte, error) { + compressedData, err := zstd.Compress(nil, inputData) + + return compressedData, err +} + +// Decompress Decompress +func Decompress(compressedData []byte) ([]byte, error) { + decompressedData, err := zstd.Decompress(nil, compressedData) + return decompressedData, err +} diff --git a/glide.yaml b/glide.yaml index 6022171..736facc 100644 --- a/glide.yaml +++ b/glide.yaml @@ -1,28 +1,22 @@ package: . import: +- package: github.com/DataDog/zstd +- package: github.com/OneOfOne/xxhash - package: github.com/allegro/bigcache - package: github.com/dgrijalva/jwt-go - version: v3.0.0 - package: github.com/garyburd/redigo - version: v1.1.0 subpackages: - redis - package: github.com/go-playground/locales - version: v0.11.1 subpackages: - en - package: github.com/go-playground/universal-translator - version: v0.16.0 - package: github.com/gocraft/dbr - version: v2.1 - package: github.com/labstack/echo - version: v3.2.1 subpackages: - middleware - package: github.com/sirupsen/logrus - version: v1.0.1 - package: gopkg.in/go-playground/validator.v9 - version: v9.4.0 subpackages: - translations/en - package: gopkg.in/mgo.v2 @@ -30,6 +24,5 @@ import: - bson testImport: - package: github.com/stretchr/testify - version: v1.1.4 subpackages: - assert diff --git a/securityHelper.go b/securityHelper.go new file mode 100644 index 0000000..cfc79cc --- /dev/null +++ b/securityHelper.go @@ -0,0 +1,71 @@ +package coreos + +import ( + "bytes" + "crypto/aes" + "crypto/cipher" + "encoding/base64" + + "github.com/OneOfOne/xxhash" +) + +const ( + IV = "AAAAAAAAAAAAAAAA" +) + +//AESEncrypt Encrypts given text +func AESEncrypt(plainText, key []byte) []byte { + block, err := aes.NewCipher(key) + if err != nil { + panic(err) + } + + padding := block.BlockSize() - len(plainText)%block.BlockSize() + + padtext := bytes.Repeat([]byte{byte(padding)}, padding) + + plainText = append(plainText, padtext...) + + cipherText := make([]byte, len(plainText)) + + cbc := cipher.NewCBCEncrypter(block, []byte(IV)) + cbc.CryptBlocks(cipherText, plainText) + + encodedData := make([]byte, base64.StdEncoding.EncodedLen(len(plainText))) + + base64.StdEncoding.Encode(encodedData, cipherText) + + return encodedData +} + +//AESDecrypt Decrypts given cipher text +func AESDecrypt(encodedData, key []byte) []byte { + decodedData := make([]byte, base64.StdEncoding.DecodedLen(len(encodedData))) + n, err := base64.StdEncoding.Decode(decodedData, encodedData) + if err != nil { + panic(err) + } + + cipherText := decodedData[:n] + + block, err := aes.NewCipher(key) + if err != nil { + panic(err) + } + + cbc := cipher.NewCBCDecrypter(block, []byte(IV)) + cbc.CryptBlocks(cipherText, cipherText) + + length := len(cipherText) + + unpadding := int(cipherText[length-1]) + + return cipherText[:(length - unpadding)] +} + +//GetHashChecksum Get Hash Check sum +func GetHashChecksum(byteArray []byte) uint64 { + h := xxhash.New64() + h.Write(byteArray) + return h.Sum64() +} -- GitLab