增加授权验证
This commit is contained in:
100
license/public/public.go
Normal file
100
license/public/public.go
Normal file
@@ -0,0 +1,100 @@
|
||||
package public
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func GetUUID() string {
|
||||
return uuid.New().String()
|
||||
}
|
||||
|
||||
func CheckFileIsExist(filename string) bool {
|
||||
var exist = true
|
||||
if _, err := os.Stat(filename); os.IsNotExist(err) {
|
||||
exist = false
|
||||
}
|
||||
return exist
|
||||
}
|
||||
|
||||
func RemoveDuplicate(list []int) []int {
|
||||
var x []int
|
||||
for _, i := range list {
|
||||
if len(x) == 0 {
|
||||
x = append(x, i)
|
||||
} else {
|
||||
for k, v := range x {
|
||||
if i == v {
|
||||
break
|
||||
}
|
||||
if k == len(x)-1 {
|
||||
x = append(x, i)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return x
|
||||
}
|
||||
|
||||
func FormatPem(content []byte, isPriKey bool) ([]byte, error) {
|
||||
var (
|
||||
pemPubKeyStart = []byte("-----BEGIN PUBLIC KEY-----")
|
||||
pemPubKeyEnd = []byte("-----END PUBLIC KEY-----")
|
||||
|
||||
pemPriKeyStart = []byte("-----BEGIN EC PRIVATE KEY-----")
|
||||
pemPriKeyEnd = []byte("-----END EC PRIVATE KEY-----")
|
||||
|
||||
orgContent []byte
|
||||
pemContent []byte
|
||||
slen = len(content)
|
||||
)
|
||||
|
||||
if slen == 0 {
|
||||
if isPriKey && slen < (len(pemPriKeyStart)+len(pemPriKeyEnd)) {
|
||||
return nil, fmt.Errorf("%s", "prikey centent length not enough")
|
||||
} else if slen < (len(pemPubKeyStart) + len(pemPubKeyEnd)) {
|
||||
return nil, fmt.Errorf("%s", "pubkey centent length not enough")
|
||||
}
|
||||
return nil, fmt.Errorf("%s", "content not null")
|
||||
} else {
|
||||
orgContent = make([]byte, slen)
|
||||
copy(orgContent, content)
|
||||
orgContent = bytes.Join(bytes.Fields(orgContent), []byte(" "))
|
||||
slen = len(orgContent)
|
||||
}
|
||||
|
||||
if isPriKey {
|
||||
//私钥
|
||||
if bytes.HasPrefix(orgContent, pemPriKeyStart) && bytes.HasSuffix(orgContent, pemPriKeyEnd) {
|
||||
pemContent = append(pemContent, pemPriKeyStart...)
|
||||
for _, v := range orgContent[len(pemPriKeyStart) : slen-len(pemPriKeyEnd)] {
|
||||
if v == ' ' {
|
||||
pemContent = append(pemContent, []byte("\n")...)
|
||||
} else {
|
||||
pemContent = append(pemContent, v)
|
||||
}
|
||||
}
|
||||
pemContent = append(pemContent, pemPriKeyEnd...)
|
||||
} else {
|
||||
return nil, fmt.Errorf("%s", "pem file prefix must be 'BEGIN/END EC PRIVATE KEY' format")
|
||||
}
|
||||
} else {
|
||||
if bytes.HasPrefix(orgContent, pemPubKeyStart) && bytes.HasSuffix(orgContent, pemPubKeyEnd) {
|
||||
pemContent = append(pemContent, pemPubKeyStart...)
|
||||
for _, v := range orgContent[len(pemPubKeyStart) : slen-len(pemPubKeyEnd)] {
|
||||
if v == ' ' {
|
||||
pemContent = append(pemContent, []byte("\n")...)
|
||||
} else {
|
||||
pemContent = append(pemContent, v)
|
||||
}
|
||||
}
|
||||
pemContent = append(pemContent, pemPubKeyEnd...)
|
||||
} else {
|
||||
return nil, fmt.Errorf("%s", "pem file prefix must be 'BEGIN/END PUBLIC KEY' format")
|
||||
}
|
||||
}
|
||||
return pemContent, nil
|
||||
}
|
||||
Reference in New Issue
Block a user