func()

in pkg/mesh/certs.go [263:300]


func (a *KRun) NewCSR(kty string, trustDomain, san string) (privPEM []byte, csrPEM []byte, err error) {
	var priv crypto.PrivateKey

	if kty == "ec256" {
		// TODO
	}
	rsaKey, _ := rsa.GenerateKey(rand.Reader, 2048)
	priv = rsaKey

	csr := GenCSRTemplate(trustDomain, san)
	csrBytes, err := x509.CreateCertificateRequest(rand.Reader, csr, priv)

	encodeMsg := "CERTIFICATE REQUEST"

	csrPEM = pem.EncodeToMemory(&pem.Block{Type: encodeMsg, Bytes: csrBytes})

	var encodedKey []byte
	//if pkcs8 {
	//	if encodedKey, err = x509.MarshalPKCS8PrivateKey(priv); err != nil {
	//		return nil, nil, err
	//	}
	//	privPem = pem.EncodeToMemory(&pem.Block{Type: blockTypePKCS8PrivateKey, Bytes: encodedKey})
	//} else {
	switch k := priv.(type) {
	case *rsa.PrivateKey:
		encodedKey = x509.MarshalPKCS1PrivateKey(k)
		privPEM = pem.EncodeToMemory(&pem.Block{Type: blockTypeRSAPrivateKey, Bytes: encodedKey})
	case *ecdsa.PrivateKey:
		encodedKey, err = x509.MarshalECPrivateKey(k)
		if err != nil {
			return nil, nil, err
		}
		privPEM = pem.EncodeToMemory(&pem.Block{Type: blockTypeECPrivateKey, Bytes: encodedKey})
	}
	//}

	return
}