summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKiran Kamineni <kiran.k.kamineni@intel.com>2018-03-21 17:16:13 -0700
committerKiran Kamineni <kiran.k.kamineni@intel.com>2018-03-21 17:18:53 -0700
commita02a75b47cd9850c3f9be17186a21316ac880184 (patch)
tree51166ff264b2ab869857e98a0314c71741134828
parent6e8ef8ac3a9f9504ff4a5ea9991197010930d834 (diff)
Adding PGP decrypt to auth package
Adding PGP decrypt function to auth. This can be used by quorum client in its code for decryption Issue-ID: AAF-165 Change-Id: I6d236c3164ccb93c11527ac8c2e725987236f9f0 Signed-off-by: Kiran Kamineni <kiran.k.kamineni@intel.com>
-rw-r--r--sms-service/src/sms/auth/auth.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/sms-service/src/sms/auth/auth.go b/sms-service/src/sms/auth/auth.go
index 341f377..ad5afdc 100644
--- a/sms-service/src/sms/auth/auth.go
+++ b/sms-service/src/sms/auth/auth.go
@@ -22,6 +22,7 @@ import (
"crypto/x509"
"encoding/base64"
"golang.org/x/crypto/openpgp"
+ "golang.org/x/crypto/openpgp/packet"
"io/ioutil"
smslogger "sms/log"
@@ -93,3 +94,38 @@ func GeneratePGPKeyPair() (string, string, error) {
return pbkey, prkey, nil
}
+
+// DecryptPGPBytes decrypts a PGP encoded input string and returns
+// a base64 representation of the decoded string
+func DecryptPGPBytes(data string, prKey string) (string, error) {
+ // Convert private key to bytes from base64
+ prKeyBytes, err := base64.StdEncoding.DecodeString(prKey)
+ if err != nil {
+ smslogger.WriteError("Error Decoding base64 private key: " + err.Error())
+ return "", err
+ }
+
+ dataBytes, err := base64.StdEncoding.DecodeString(data)
+ if err != nil {
+ smslogger.WriteError("Error Decoding base64 data: " + err.Error())
+ return "", err
+ }
+
+ prEntity, err := openpgp.ReadEntity(packet.NewReader(bytes.NewBuffer(prKeyBytes)))
+ if err != nil {
+ smslogger.WriteError("Error reading entity from PGP key: " + err.Error())
+ return "", err
+ }
+
+ prEntityList := &openpgp.EntityList{prEntity}
+ message, err := openpgp.ReadMessage(bytes.NewBuffer(dataBytes), prEntityList, nil, nil)
+ if err != nil {
+ smslogger.WriteError("Error Decrypting message: " + err.Error())
+ return "", err
+ }
+
+ var retBuf bytes.Buffer
+ retBuf.ReadFrom(message.UnverifiedBody)
+
+ return retBuf.String(), nil
+}