package auth import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/base64" "encoding/pem" "errors" ) func ParsePublicKey(pemText string) (*rsa.PublicKey, error) { block, _ := pem.Decode([]byte(pemText)) if block == nil { return nil, errors.New("invalid public key PEM") } pub, err := x509.ParsePKIXPublicKey(block.Bytes) if err != nil { return nil, err } rsaPub, ok := pub.(*rsa.PublicKey) if !ok { return nil, errors.New("public key is not RSA") } return rsaPub, nil } func EncryptAuthorization(pub *rsa.PublicKey, plaintext string) (string, error) { if pub == nil { return "", errors.New("public key is required") } out, err := rsa.EncryptPKCS1v15(rand.Reader, pub, []byte(plaintext)) if err != nil { return "", err } return base64.StdEncoding.EncodeToString(out), nil }