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

Method AppSKeyRequest

pkg/joinserver/http_interop.go:165–209  ·  view source on GitHub ↗
(ctx context.Context, in *interop.AppSKeyReq)

Source from the content-addressed store, hash-verified

163}
164
165func (srv interopServer) AppSKeyRequest(ctx context.Context, in *interop.AppSKeyReq) (*interop.AppSKeyAns, error) {
166 ctx = log.NewContextWithField(ctx, "namespace", "joinserver/interop")
167
168 req := &ttnpb.SessionKeyRequest{
169 JoinEui: types.EUI64(in.ReceiverID).Bytes(),
170 DevEui: types.EUI64(in.DevEUI).Bytes(),
171 SessionKeyId: in.SessionKeyID,
172 }
173 if err := req.ValidateFields(
174 "join_eui",
175 "dev_eui",
176 "session_key_id",
177 ); err != nil {
178 return nil, interop.ErrMalformedMessage.WithCause(err)
179 }
180
181 res, err := srv.JS.GetAppSKey(ctx, req, InteropAuthorizer)
182 if err != nil {
183 switch {
184 case errors.IsPermissionDenied(err):
185 return nil, interop.ErrActivation.WithCause(err)
186 case errors.IsNotFound(err):
187 return nil, interop.ErrUnknownDevEUI.WithCause(err)
188 }
189 return nil, err
190 }
191
192 header, err := in.AnswerHeader()
193 if err != nil {
194 return nil, interop.ErrMalformedMessage.WithCause(err)
195 }
196 return &interop.AppSKeyAns{
197 JsAsMessageHeader: interop.JsAsMessageHeader{
198 MessageHeader: header,
199 SenderID: in.ReceiverID,
200 ReceiverID: in.SenderID,
201 },
202 Result: interop.Result{
203 ResultCode: interop.ResultSuccess,
204 },
205 DevEUI: in.DevEUI,
206 AppSKey: (*interop.KeyEnvelope)(res.AppSKey),
207 SessionKeyID: in.SessionKeyID,
208 }, nil
209}

Callers 1

Calls 9

ValidateFieldsMethod · 0.95
NewContextWithFieldFunction · 0.92
EUI64TypeAlias · 0.92
IsPermissionDeniedFunction · 0.92
IsNotFoundFunction · 0.92
AnswerHeaderMethod · 0.80
BytesMethod · 0.65
GetAppSKeyMethod · 0.65
WithCauseMethod · 0.45

Tested by 1