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

Function decodeJoinAccept

cmd/ttn-lw-cli/commands/lorawan.go:136–164  ·  view source on GitHub ↗
(msg *ttnpb.Message, config lorawanConfig)

Source from the content-addressed store, hash-verified

134}
135
136func decodeJoinAccept(msg *ttnpb.Message, config lorawanConfig) (*lorawanDecodedFrame, error) {
137 pld := msg.GetJoinAcceptPayload()
138 key, keyName := config.getJoinAcceptDecodeKey()
139 if key.IsZero() {
140 logger.Warnf("No %s provided, skipping join accept decryption", keyName)
141 } else {
142 buf, err := crypto.DecryptJoinAccept(key, pld.Encrypted)
143 if err != nil {
144 return nil, err
145 }
146 n := len(buf)
147 if n < 4 {
148 logger.WithFields(log.Fields("length", n, "minimum", 4)).Warn("Invalid Join Accept message length")
149 return &lorawanDecodedFrame{Message: msg}, nil
150 }
151 buf, mic := buf[:n-4], buf[n-4:]
152 decBuf := ttnpb.Clone(pld)
153 if err := lorawan.UnmarshalJoinAcceptPayload(buf, decBuf); err != nil {
154 logger.WithError(err).Warn("Failed to unmarshal join accept payload")
155 return &lorawanDecodedFrame{Message: msg}, nil
156 }
157
158 msg.Mic = mic
159 msg.Payload = &ttnpb.Message_JoinAcceptPayload{
160 JoinAcceptPayload: decBuf,
161 }
162 }
163 return &lorawanDecodedFrame{Message: msg}, nil
164}
165
166func decodeDownlink(msg *ttnpb.Message, config lorawanConfig) (*lorawanDecodedFrame, error) {
167 pld := msg.GetMacPayload()

Callers 1

decodeFrameFunction · 0.85

Calls 11

DecryptJoinAcceptFunction · 0.92
FieldsFunction · 0.92
CloneFunction · 0.92
GetJoinAcceptPayloadMethod · 0.80
IsZeroMethod · 0.65
WarnfMethod · 0.65
WarnMethod · 0.65
WithFieldsMethod · 0.65
WithErrorMethod · 0.65

Tested by

no test coverage detected