MCPcopy Create free account
hub / github.com/TheThingsNetwork/lorawan-stack / Certificates

Method Certificates

tools/mage/certificates.go:32–89  ·  view source on GitHub ↗

Certificates generates certificates for development.

()

Source from the content-addressed store, hash-verified

30
31// Certificates generates certificates for development.
32func (Dev) Certificates() error {
33 caReq := csr.CertificateRequest{
34 Names: []csr.Name{
35 {C: "NL", ST: "Noord-Holland", L: "Amsterdam", O: "The Things Demo"},
36 },
37 KeyRequest: csr.NewKeyRequest(),
38 }
39 caCert, _, caKey, err := initca.New(&caReq)
40 if err != nil {
41 return err
42 }
43 if err = os.WriteFile("ca.pem", caCert, 0o644); err != nil {
44 return err
45 }
46 if err = os.WriteFile("ca-key.pem", caKey, 0o644); err != nil {
47 return err
48 }
49 certReq := csr.CertificateRequest{
50 Hosts: []string{
51 "localhost",
52 "*.localhost",
53 },
54 Names: caReq.Names, // Use the same names.
55 KeyRequest: csr.NewKeyRequest(),
56 }
57 g := &csr.Generator{Validator: func(req *csr.CertificateRequest) error { return nil }}
58 csr, key, err := g.ProcessRequest(&certReq)
59 if err != nil {
60 return err
61 }
62 signReq := signer.SignRequest{
63 Request: string(csr),
64 Hosts: certReq.Hosts,
65 }
66 s, err := universal.NewSigner(universal.Root{
67 Config: map[string]string{
68 "cert-file": "ca.pem",
69 "key-file": "ca-key.pem",
70 },
71 }, &config.Signing{
72 Profiles: map[string]*config.SigningProfile{},
73 Default: config.DefaultConfig(),
74 })
75 if err != nil {
76 return err
77 }
78 cert, err := s.Sign(signReq)
79 if err != nil {
80 return err
81 }
82 if err = os.WriteFile("cert.pem", cert, 0o644); err != nil {
83 return err
84 }
85 if err = os.WriteFile("key.pem", key, 0o644); err != nil {
86 return err
87 }
88 return nil
89}

Callers

nothing calls this directly

Calls 2

WriteFileMethod · 0.80
NewMethod · 0.65

Tested by

no test coverage detected