GetAppSKey performs AppSKey request according to LoRaWAN Backend Interfaces specification.
( ctx context.Context, asID string, req *ttnpb.SessionKeyRequest, )
| 189 | |
| 190 | // GetAppSKey performs AppSKey request according to LoRaWAN Backend Interfaces specification. |
| 191 | func (cl joinServerHTTPClient) GetAppSKey( |
| 192 | ctx context.Context, asID string, req *ttnpb.SessionKeyRequest, |
| 193 | ) (*ttnpb.AppSKeyResponse, error) { |
| 194 | interopAns := &AppSKeyAns{} |
| 195 | if err := cl.exchange(ctx, jsRPCPaths.appSKey, &AppSKeyReq{ |
| 196 | AsJsMessageHeader: AsJsMessageHeader{ |
| 197 | MessageHeader: MessageHeader{ |
| 198 | ProtocolVersion: cl.protocol, |
| 199 | MessageType: MessageTypeAppSKeyReq, |
| 200 | }, |
| 201 | SenderID: asID, |
| 202 | ReceiverID: EUI64(types.MustEUI64(req.JoinEui).OrZero()), |
| 203 | }, |
| 204 | DevEUI: EUI64(types.MustEUI64(req.DevEui).OrZero()), |
| 205 | SessionKeyID: Buffer(req.SessionKeyId), |
| 206 | }, interopAns); err != nil { |
| 207 | return nil, err |
| 208 | } |
| 209 | if err := parseResult(interopAns.Result); err != nil { |
| 210 | return nil, err |
| 211 | } |
| 212 | |
| 213 | return &ttnpb.AppSKeyResponse{ |
| 214 | AppSKey: (*ttnpb.KeyEnvelope)(interopAns.AppSKey), |
| 215 | }, nil |
| 216 | } |
| 217 | |
| 218 | var ( |
| 219 | errMissingNSID = errors.DefineFailedPrecondition("missing_ns_id", "missing NSID") |