Create & Init Project...
This commit is contained in:
47
app/interface/main/account/service/realname/crypto/key.go
Normal file
47
app/interface/main/account/service/realname/crypto/key.go
Normal file
@ -0,0 +1,47 @@
|
||||
package crypto
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// ParsePublicKey parse raw public key to pem formation
|
||||
func ParsePublicKey(raw string) (result []byte) {
|
||||
return parseKey(raw, "-----BEGIN PUBLIC KEY-----", "-----END PUBLIC KEY-----")
|
||||
}
|
||||
|
||||
// ParsePrivateKey parse raw priv key to pem formation
|
||||
func ParsePrivateKey(raw string) (result []byte) {
|
||||
return parseKey(raw, "-----BEGIN RSA PRIVATE KEY-----", "-----END RSA PRIVATE KEY-----")
|
||||
}
|
||||
|
||||
func parseKey(raw, prefix, suffix string) (result []byte) {
|
||||
raw = strings.Replace(raw, prefix, "", 1)
|
||||
raw = strings.Replace(raw, suffix, "", 1)
|
||||
raw = strings.Replace(raw, " ", "", -1)
|
||||
raw = strings.Replace(raw, "\n", "", -1)
|
||||
raw = strings.Replace(raw, "\r", "", -1)
|
||||
raw = strings.Replace(raw, "\t", "", -1)
|
||||
|
||||
var ll = 64
|
||||
var sl = len(raw)
|
||||
var c = sl / ll
|
||||
if sl%ll > 0 {
|
||||
c = c + 1
|
||||
}
|
||||
|
||||
var buf bytes.Buffer
|
||||
buf.WriteString(prefix + "\n")
|
||||
for i := 0; i < c; i++ {
|
||||
var b = i * ll
|
||||
var e = b + ll
|
||||
if e > sl {
|
||||
buf.WriteString(raw[b:])
|
||||
} else {
|
||||
buf.WriteString(raw[b:e])
|
||||
}
|
||||
buf.WriteString("\n")
|
||||
}
|
||||
buf.WriteString(suffix)
|
||||
return buf.Bytes()
|
||||
}
|
Reference in New Issue
Block a user