kobe6258 7 сар өмнө
parent
commit
4d25e957fd

+ 9 - 0
config/rsa_public_key.pem

@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Gh3c2fki27yLKMUPUqZ
+hDa0vGRp01ca5Rbpd6RoZURIA4Ti1k/zf2jW0tJ1OUnkBiBtcfZ4d+6gPr1kdsdp
+xSjlV1PQfzaMtZg0ZKiHTw4xhJ+P/XCzIPJaUKAwKqb8U0gsXfZVcF0OEwWAgNxL
+zMhPlTiSAWaRUOumOHNexSRzG9URy+v/UIVkuDXFwzb1aly93S0Elp7cDPQA0FCL
+qiwofnNdPTJ1BiXa1OO8UFXuV16Hw0JeYdl+GWUf8Q4uTKUesclnBkLgOUaXSJQq
+fNwqSBj39H4vRTBKX1eiqhCwt3/lwBEpWW8YHkfEssclh0x2xf0714e/H3BuwLwd
+WwIDAQAB
+-----END PUBLIC KEY-----

+ 6 - 10
rpc/signature_interceptor.go

@@ -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
 }