deriveSKey derives a session key
(key types.AES128Key, t byte, jn types.JoinNonce, joinEUI types.EUI64, dn types.DevNonce)
| 22 | |
| 23 | // deriveSKey derives a session key |
| 24 | func 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 |
| 36 | func deriveLegacySKey(key types.AES128Key, t byte, jn types.JoinNonce, nid types.NetID, dn types.DevNonce) (derived types.AES128Key) { |
no test coverage detected