github.com/brimstone/sbuca@v0.0.0-20151202175429-8691d9eba5c5/server/certificates.go (about) 1 package server 2 3 import ( 4 "github.com/go-martini/martini" 5 "github.com/martini-contrib/render" 6 //"github.com/brimstone/sbuca/x509util" 7 "net/http" 8 "strconv" 9 10 "github.com/brimstone/sbuca/ca" 11 "github.com/brimstone/sbuca/pkix" 12 ) 13 14 func getCertificates(req *http.Request, params martini.Params, r render.Render) { 15 16 format := req.URL.Query().Get("format") 17 18 newCA, err := ca.NewCA(config["root-dir"]) 19 if err != nil { 20 panic(err) 21 } 22 23 id := params["id"] 24 idInt, err := strconv.Atoi(id) 25 if err != nil { 26 r.JSON(401, map[string]interface{}{ 27 "result": "wrong id", 28 }) 29 return 30 } 31 cert, err := newCA.GetCertificate(int64(idInt)) 32 if err != nil { 33 r.JSON(401, map[string]interface{}{ 34 "result": "cannot get cert", 35 }) 36 return 37 } 38 39 pem, err := cert.ToPEM() 40 if err != nil { 41 r.JSON(401, map[string]interface{}{ 42 "result": "cannot get cert", 43 }) 44 return 45 } 46 47 if format == "file" { 48 r.Data(200, pem) 49 } else { 50 r.JSON(200, map[string]interface{}{ 51 "certificate": map[string]interface{}{ 52 "id": cert.GetSerialNumber().Int64(), 53 "crt": string(pem), 54 //"csr": csr, 55 }, 56 }) 57 } 58 59 } 60 61 func postCertificates(req *http.Request, params martini.Params, r render.Render) { 62 63 csrString := req.PostFormValue("csr") 64 format := req.URL.Query().Get("format") 65 66 csr, err := pkix.NewCertificateRequestFromPEM([]byte(csrString)) 67 if err != nil { 68 panic(err) 69 } 70 71 newCA, err := ca.NewCA(config["root-dir"]) 72 if err != nil { 73 panic(err) 74 } 75 76 cert, err := newCA.IssueCertificate(csr) 77 if err != nil { 78 panic(err) 79 } 80 81 certPem, err := cert.ToPEM() 82 if err != nil { 83 panic(err) 84 } 85 if format == "file" { 86 r.Data(200, certPem) 87 } else { 88 r.JSON(200, map[string]interface{}{ 89 "certificate": map[string]interface{}{ 90 "id": cert.GetSerialNumber().Int64(), 91 "crt": string(certPem), 92 //"csr": csr, 93 }, 94 }) 95 } 96 }