code: func (h *Handler) Handle(w http.ResponseWriter, r *http.Request) (err error) {
  	blob, matched, err := api.ProcessRequestFirstMatchOf(r,
  		[][]string{
  			{"certificate"},
  			{"domain"},
  			{"serial", "authority_key_id"},
  		})
  	if err != nil {
  		log.Warningf("invalid request: %v", err)
  		return err
  	}
  
  	var cert *certinfo.Certificate
  	switch matched[0] {
  	case "domain":
  		if cert, err = certinfo.ParseCertificateDomain(blob["domain"]); err != nil {
  			log.Warningf("couldn't parse remote certificate: %v", err)
  			return err
  		}
  	case "certificate":
  		if cert, err = certinfo.ParseCertificatePEM([]byte(blob["certificate"])); err != nil {
  			log.Warningf("bad PEM certifcate: %v", err)
  			return err
  		}
  	case "serial", "authority_key_id":
  		if h.dbAccessor == nil {
  			log.Warning("could not find certificates with db access")
  
  			return errors.New("cannot lookup certificate from serial without db access")
  		}
  
  		if cert, err = certinfo.ParseSerialNumber(blob["serial"], blob["authority_key_id"], h.dbAccessor); err != nil {
  			log.Warningf("couldn't find certificate: %v", err)
  
  			return err
  		}
  	}
  
  	return api.SendResponse(w, cert)
  }
docs: // Handle implements an http.Handler interface for the bundle handler.