code: func parseCARoot(pemValue, provider, clusterID string) (*structs.CARoot, error) {
  	id, err := connect.CalculateCertFingerprint(pemValue)
  	if err != nil {
  		return nil, fmt.Errorf("error parsing root fingerprint: %v", err)
  	}
  	rootCert, err := connect.ParseCert(pemValue)
  	if err != nil {
  		return nil, fmt.Errorf("error parsing root cert: %v", err)
  	}
  	return &structs.CARoot{
  		ID:                  id,
  		Name:                fmt.Sprintf("%s CA Root Cert", strings.Title(provider)),
  		SerialNumber:        rootCert.SerialNumber.Uint64(),
  		SigningKeyID:        connect.HexString(rootCert.AuthorityKeyId),
  		ExternalTrustDomain: clusterID,
  		NotBefore:           rootCert.NotBefore,
  		NotAfter:            rootCert.NotAfter,
  		RootCert:            pemValue,
  		Active:              true,
  	}, nil
  }
docs: // parseCARoot returns a filled-in structs.CARoot from a raw PEM value.