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

Method GenGatewayCerts

tools/mage/certificates.go:119–158  ·  view source on GitHub ↗

GenGatewayCerts generates a client certificates for the EUI.

()

Source from the content-addressed store, hash-verified

117
118// GenGatewayCerts generates a client certificates for the EUI.
119func (Dev) GenGatewayCerts() error {
120 eui := os.Getenv("GATEWAY_EUI")
121 certReq := csr.CertificateRequest{
122 CN: eui,
123 Names: names, // Use the same names.
124 KeyRequest: csr.NewKeyRequest(),
125 }
126 g := &csr.Generator{Validator: func(req *csr.CertificateRequest) error { return nil }}
127 csr, key, err := g.ProcessRequest(&certReq)
128 if err != nil {
129 return err
130 }
131 signReq := signer.SignRequest{
132 Request: string(csr),
133 Hosts: certReq.Hosts,
134 }
135 s, err := universal.NewSigner(universal.Root{
136 Config: map[string]string{
137 "cert-file": filepath.Join(devDir, gatewayCertsDir, "ca.pem"),
138 "key-file": filepath.Join(devDir, gatewayCertsDir, "ca-key.pem"),
139 },
140 }, &config.Signing{
141 Profiles: map[string]*config.SigningProfile{},
142 Default: config.DefaultConfig(),
143 })
144 if err != nil {
145 return err
146 }
147 cert, err := s.Sign(signReq)
148 if err != nil {
149 return err
150 }
151 if err = os.WriteFile(filepath.Join(devDir, gatewayCertsDir, fmt.Sprintf("%s.crt", eui)), cert, 0o644); err != nil {
152 return err
153 }
154 if err = os.WriteFile(filepath.Join(devDir, gatewayCertsDir, fmt.Sprintf("%s.key", eui)), key, 0o644); err != nil {
155 return err
156 }
157 return nil
158}

Callers

nothing calls this directly

Calls 2

WriteFileMethod · 0.80
JoinMethod · 0.65

Tested by

no test coverage detected