static int writeRsnKeyDesc(tAniPacket *packet, tAniEapolRsnKeyDesc *rsnDesc, v_U8_t keyDescType) { int retVal; do { // This can be either ANI_EAPOL_KEY_DESC_TYPE_RSN // or ANI_EAPOL_KEY_DESC_TYPE_RSN_NEW retVal = aniAsfPacketAppend8(packet, keyDescType); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = writeRsnKeyInfo(packet, &rsnDesc->info); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = aniAsfPacketAppend16(packet, rsnDesc->keyLen); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = aniAsfPacketAppendBuffer(packet, rsnDesc->replayCounter, sizeof(rsnDesc->replayCounter)); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = aniAsfPacketAppendBuffer(packet, rsnDesc->keyNonce, sizeof(rsnDesc->keyNonce)); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = aniAsfPacketAppendBuffer(packet, rsnDesc->keyIv, sizeof(rsnDesc->keyIv)); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = aniAsfPacketAppendBuffer(packet, rsnDesc->keyRecvSeqCounter, sizeof(rsnDesc->keyRecvSeqCounter)); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = aniAsfPacketAppendBuffer(packet, rsnDesc->keyId, sizeof(rsnDesc->keyId)); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; // Zero out the key MIC retVal = aniAsfPacketAppendBuffer(packet, ZERO_BYTES, sizeof(rsnDesc->keyMic)); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = aniAsfPacketAppend16(packet, rsnDesc->keyDataLen); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; if (rsnDesc->keyDataLen != 0) { retVal = aniAsfPacketAppendBuffer(packet, rsnDesc->keyData, rsnDesc->keyDataLen); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; } }while( 0 ); return retVal; }
static int writeRsnKeyDesc(tAniPacket *packet, tAniEapolRsnKeyDesc *rsnDesc, v_U8_t keyDescType) { int retVal; do { retVal = aniAsfPacketAppend8(packet, keyDescType); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = writeRsnKeyInfo(packet, &rsnDesc->info); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = aniAsfPacketAppend16(packet, rsnDesc->keyLen); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = aniAsfPacketAppendBuffer(packet, rsnDesc->replayCounter, sizeof(rsnDesc->replayCounter)); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = aniAsfPacketAppendBuffer(packet, rsnDesc->keyNonce, sizeof(rsnDesc->keyNonce)); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = aniAsfPacketAppendBuffer(packet, rsnDesc->keyIv, sizeof(rsnDesc->keyIv)); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = aniAsfPacketAppendBuffer(packet, rsnDesc->keyRecvSeqCounter, sizeof(rsnDesc->keyRecvSeqCounter)); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = aniAsfPacketAppendBuffer(packet, rsnDesc->keyId, sizeof(rsnDesc->keyId)); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = aniAsfPacketAppendBuffer(packet, ZERO_BYTES, sizeof(rsnDesc->keyMic)); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; retVal = aniAsfPacketAppend16(packet, rsnDesc->keyDataLen); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; if (rsnDesc->keyDataLen != 0) { retVal = aniAsfPacketAppendBuffer(packet, rsnDesc->keyData, rsnDesc->keyDataLen); if( !ANI_IS_STATUS_SUCCESS( retVal ) ) break; } }while( 0 ); return retVal; }