Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e42e8fba5a | |||
| 0e885db4db |
29
paypal.go
29
paypal.go
@@ -1,18 +1,17 @@
|
||||
package Ewp
|
||||
|
||||
import (
|
||||
"crypto/x509"
|
||||
"crypto/rsa"
|
||||
"encoding/pem"
|
||||
"crypto/x509"
|
||||
"encoding/base64"
|
||||
"encoding/pem"
|
||||
"errors"
|
||||
"io/ioutil"
|
||||
"reflect"
|
||||
"strings"
|
||||
"fmt"
|
||||
|
||||
"github.com/fullsailor/pkcs7"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/DeineAgenturUG/pkcs7"
|
||||
)
|
||||
|
||||
const tagName = "ppewp"
|
||||
@@ -93,7 +92,7 @@ type Ewp struct {
|
||||
|
||||
func NewPaypalEwp(options EwpOptions) *Ewp {
|
||||
var ewp = &Ewp{}
|
||||
ewp.LoadKeyPair(options)
|
||||
ewp.loadKeyPair(options)
|
||||
|
||||
return ewp
|
||||
}
|
||||
@@ -102,7 +101,7 @@ func (pe *Ewp) GetError() error {
|
||||
return pe.error
|
||||
}
|
||||
|
||||
func (pe *Ewp) LoadKeyPair(options EwpOptions) {
|
||||
func (pe *Ewp) loadKeyPair(options EwpOptions) {
|
||||
pe.certificateID = &options.CertificateID
|
||||
|
||||
if options.PaypalCertificateFile != "" {
|
||||
@@ -145,14 +144,14 @@ func (pe *Ewp) LoadKeyPair(options EwpOptions) {
|
||||
keyPasswd = []byte(options.PrivateKeyPassphrase)
|
||||
}
|
||||
|
||||
pe.privateKey, pe.error = ParseRsaPrivateKeyFromPemStr(keyFilePEM, &keyPasswd)
|
||||
pe.privateKey, pe.error = parseRsaPrivateKeyFromPemStr(keyFilePEM, &keyPasswd)
|
||||
}
|
||||
|
||||
func (pe *Ewp) Generate(data *CryptData) string {
|
||||
var encData []string
|
||||
var output []byte
|
||||
|
||||
encData = append(encData, "cert_id=" + *pe.certificateID)
|
||||
encData = append(encData, "cert_id="+*pe.certificateID)
|
||||
|
||||
rt := reflect.TypeOf(data)
|
||||
// Check if it's a pointer
|
||||
@@ -178,7 +177,6 @@ func (pe *Ewp) Generate(data *CryptData) string {
|
||||
|
||||
var s string
|
||||
switch kind {
|
||||
|
||||
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
||||
s = strconv.FormatInt(reflect.ValueOf(data).Elem().Field(i).Int(), 10)
|
||||
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
|
||||
@@ -194,23 +192,24 @@ func (pe *Ewp) Generate(data *CryptData) string {
|
||||
case reflect.String:
|
||||
s = reflect.ValueOf(data).Elem().Field(i).String()
|
||||
}
|
||||
|
||||
if _, ok := tagVals["OMITEMPTY"]; ok && s == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
if s == "" {
|
||||
s = tagVals["DEFAULT"];
|
||||
s = tagVals["DEFAULT"]
|
||||
}
|
||||
|
||||
encData = append(encData, tagVals["NAME"]+"="+s)
|
||||
|
||||
fmt.Printf("%s (%v) = %#v >> %#v\n", reflect.ValueOf(data).Elem().Field(i).Type().Name(), kind, tagVals, s)
|
||||
//fmt.Printf("%s (%v) = %#v >> %#v\n", reflect.ValueOf(data).Elem().Field(i).Type().Name(), kind, tagVals, s)
|
||||
|
||||
}
|
||||
|
||||
encFilled := strings.Join(encData, "\n")
|
||||
|
||||
fmt.Printf("%#v\n\n", encFilled)
|
||||
//fmt.Printf("%#v\n\n", encFilled)
|
||||
|
||||
signedData, err := pkcs7.NewSignedData([]byte(encFilled))
|
||||
if err != nil {
|
||||
@@ -242,7 +241,7 @@ func (pe *Ewp) Generate(data *CryptData) string {
|
||||
return "-----BEGIN PKCS7-----\n" + chunkSplit(base64.StdEncoding.EncodeToString(output), 64, "\n") + "-----END PKCS7-----"
|
||||
}
|
||||
|
||||
func ParseRsaPrivateKeyFromPemStr(privatePEM []byte, passphrase *[]byte) (*rsa.PrivateKey, error) {
|
||||
func parseRsaPrivateKeyFromPemStr(privatePEM []byte, passphrase *[]byte) (*rsa.PrivateKey, error) {
|
||||
block, _ := pem.Decode(privatePEM)
|
||||
if block == nil {
|
||||
return nil, errors.New("failed to parse PEM block containing the key")
|
||||
|
||||
Reference in New Issue
Block a user