|
@@ -9,7 +9,6 @@ import (
|
|
|
"encoding/base64"
|
|
|
"encoding/json"
|
|
|
"encoding/pem"
|
|
|
- "errors"
|
|
|
"eta/eta_bridge/global"
|
|
|
"eta/eta_bridge/rpc/sso"
|
|
|
"fmt"
|
|
@@ -17,6 +16,7 @@ import (
|
|
|
"google.golang.org/grpc/codes"
|
|
|
"google.golang.org/grpc/metadata"
|
|
|
"google.golang.org/grpc/status"
|
|
|
+ "io/ioutil"
|
|
|
"strconv"
|
|
|
)
|
|
|
|
|
@@ -64,11 +64,11 @@ func SignatureInterceptor(ctx context.Context, req interface{}, _ *grpc.UnarySer
|
|
|
if err != nil {
|
|
|
return nil, status.Errorf(codes.InvalidArgument, "json序列化失败")
|
|
|
}
|
|
|
- publicKey, err := parsePublicKeyFromPEM([]byte("-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Gh3c2fki27yLKMUPUqZ\nhDa0vGRp01ca5Rbpd6RoZURIA4Ti1k/zf2jW0tJ1OUnkBiBtcfZ4d+6gPr1kdsdp\nxSjlV1PQfzaMtZg0ZKiHTw4xhJ+P/XCzIPJaUKAwKqb8U0gsXfZVcF0OEwWAgNxL\nzMhPlTiSAWaRUOumOHNexSRzG9URy+v/UIVkuDXFwzb1aly93S0Elp7cDPQA0FCL\nqiwofnNdPTJ1BiXa1OO8UFXuV16Hw0JeYdl+GWUf8Q4uTKUesclnBkLgOUaXSJQq\nfNwqSBj39H4vRTBKX1eiqhCwt3/lwBEpWW8YHkfEssclh0x2xf0714e/H3BuwLwd\nWwIDAQAB\n-----END PUBLIC KEY-----\n"))
|
|
|
+ publicKey, err := parsePublicKeyFromPEM([]byte(""))
|
|
|
if err != nil {
|
|
|
return nil, status.Errorf(codes.InvalidArgument, "公钥解析失败")
|
|
|
}
|
|
|
- fmt.Println(dds)
|
|
|
+ fmt.Println(string(dds))
|
|
|
// 验证签名
|
|
|
if !verifySignature(string(dds), signature[0], publicKey) {
|
|
|
return nil, status.Errorf(codes.PermissionDenied, "invalid signature")
|
|
@@ -88,18 +88,14 @@ func verifySignature(message, signature string, publicKey *rsa.PublicKey) bool {
|
|
|
}
|
|
|
|
|
|
func parsePublicKeyFromPEM(pemBytes []byte) (pubKey *rsa.PublicKey, err error) {
|
|
|
- block, _ := pem.Decode(pemBytes)
|
|
|
+ pemBlock, err := ioutil.ReadFile("./config/rsa_public_key.pem")
|
|
|
+ block, _ := pem.Decode(pemBlock)
|
|
|
if block == nil {
|
|
|
global.LOG.Error("公钥解析失败")
|
|
|
}
|
|
|
- pubInterface, err := x509.ParsePKIXPublicKey(block.Bytes)
|
|
|
+ pubKey, err = x509.ParsePKCS1PublicKey(block.Bytes)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
-
|
|
|
- pubKey, ok := pubInterface.(*rsa.PublicKey)
|
|
|
- if !ok {
|
|
|
- return nil, errors.New("RSA公钥格式错误")
|
|
|
- }
|
|
|
return
|
|
|
}
|