@mega-yfue/eufy-sdk / p2pCodec / deriveLevel2KeyFromGatewayInfo
Function: deriveLevel2KeyFromGatewayInfo()
ts
function deriveLevel2KeyFromGatewayInfo(gwPayload, eccPrivateKeyHex): Buffer<ArrayBufferLike> | undefined;Derive the P2P level-2 (signCode 2/8) AES-256-GCM session key from a decryptedCMD_GATEWAYINFO (1100) payload and the station's ECC private key (from get_ciphers).
Layout of the decrypted payload: cipher_id(2 LE) ‖ 0000 ‖ ECIES-envelope(129), where the envelope is ephemeralPub(33, compressed P-256) ‖ iv(16) ‖ ciphertext(48). ECIES = ECDH(eccPriv, ephemeralPub) → eufyKDF(SHA-256/HMAC, label "ECIES") → AES-128-CBC decrypt → 32-byte session key. Reversed from libmega_media_sdk.so; verified to reproduce the live key. Returns the 32-byte key, or undefined if the inputs don't parse.
Parameters
gwPayload
Buffer
eccPrivateKeyHex
string
Returns
Buffer<ArrayBufferLike> | undefined