code: func NewSignerFromFile(issuerFile, responderFile, keyFile string, interval time.Duration) (Signer, error) {
  	log.Debug("Loading issuer cert: ", issuerFile)
  	issuerBytes, err := helpers.ReadBytes(issuerFile)
  	if err != nil {
  		return nil, err
  	}
  	log.Debug("Loading responder cert: ", responderFile)
  	responderBytes, err := ioutil.ReadFile(responderFile)
  	if err != nil {
  		return nil, err
  	}
  	log.Debug("Loading responder key: ", keyFile)
  	keyBytes, err := ioutil.ReadFile(keyFile)
  	if err != nil {
  		return nil, cferr.Wrap(cferr.CertificateError, cferr.ReadFailed, err)
  	}
  
  	issuerCert, err := helpers.ParseCertificatePEM(issuerBytes)
  	if err != nil {
  		return nil, err
  	}
  
  	responderCert, err := helpers.ParseCertificatePEM(responderBytes)
  	if err != nil {
  		return nil, err
  	}
  
  	key, err := helpers.ParsePrivateKeyPEM(keyBytes)
  	if err != nil {
  		log.Debug("Malformed private key %v", err)
  		return nil, err
  	}
  
  	return NewSigner(issuerCert, responderCert, key, interval)
  }
docs: // NewSignerFromFile reads the issuer cert, the responder cert and the responder key
  // from PEM files, and takes an interval in seconds