code: func NewSignerFromFile(caFile, caKeyFile string, policy *config.Signing) (*Signer, error) {
  	log.Debug("Loading CA: ", caFile)
  	ca, err := helpers.ReadBytes(caFile)
  	if err != nil {
  		return nil, err
  	}
  	log.Debug("Loading CA key: ", caKeyFile)
  	cakey, err := helpers.ReadBytes(caKeyFile)
  	if err != nil {
  		return nil, cferr.Wrap(cferr.CertificateError, cferr.ReadFailed, err)
  	}
  
  	parsedCa, err := helpers.ParseCertificatePEM(ca)
  	if err != nil {
  		return nil, err
  	}
  
  	strPassword := os.Getenv("CFSSL_CA_PK_PASSWORD")
  	password := []byte(strPassword)
  	if strPassword == "" {
  		password = nil
  	}
  
  	priv, err := helpers.ParsePrivateKeyPEMWithPassword(cakey, password)
  	if err != nil {
  		log.Debug("Malformed private key %v", err)
  		return nil, err
  	}
  
  	return NewSigner(priv, parsedCa, signer.DefaultSigAlgo(priv), policy)
  }
docs: // NewSignerFromFile generates a new local signer from a caFile
  // and a caKey file, both PEM encoded.