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

Function deriveSKey

pkg/crypto/key_derivation.go:24–33  ·  view source on GitHub ↗

deriveSKey derives a session key

(key types.AES128Key, t byte, jn types.JoinNonce, joinEUI types.EUI64, dn types.DevNonce)

Source from the content-addressed store, hash-verified

22
23// deriveSKey derives a session key
24func deriveSKey(key types.AES128Key, t byte, jn types.JoinNonce, joinEUI types.EUI64, dn types.DevNonce) (derived types.AES128Key) {
25 buf := make([]byte, 16)
26 buf[0] = t
27 copy(buf[1:4], reverse(jn[:]))
28 copy(buf[4:12], reverse(joinEUI[:]))
29 copy(buf[12:14], reverse(dn[:]))
30 block, _ := aes.NewCipher(key[:])
31 block.Encrypt(derived[:], buf)
32 return
33}
34
35// deriveLegacySKey derives a session key
36func deriveLegacySKey(key types.AES128Key, t byte, jn types.JoinNonce, nid types.NetID, dn types.DevNonce) (derived types.AES128Key) {

Callers 4

DeriveFNwkSIntKeyFunction · 0.85
DeriveSNwkSIntKeyFunction · 0.85
DeriveNwkSEncKeyFunction · 0.85
DeriveAppSKeyFunction · 0.85

Calls 2

reverseFunction · 0.85
EncryptMethod · 0.65

Tested by

no test coverage detected