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