Hi,
I have successfully create WLAN IAP with WEP Security having 64 bit key in HEX format. I used WLAN Management API and on checking wlancdbcols.h I am unable to find any column entry to define 128/64 bit key. For 64 bit key we don't need to define any thing but when we are define key larger than 10 characters (HEX Formatted) for 128 bit key, it trimmed to only 1 character.
How can we define 128 bit WEP key?
Following is the code take from WLanSampleEx and modified for HEX format;
void CWLanSampleExAppUi::CreateAccessPointL()
{
TInt errorCode;
TInt error;
CCommsDatabase* db = CCommsDatabase::NewL();
CleanupStack::PushL(db);
TInt err = db->BeginTransaction();
// Create a wlan AP and fill its mandatory fields.
CApAccessPointItem* wlanAp = CApAccessPointItem::NewLC();
CApAccessPointItem* wlanNewItem=CApAccessPointItem::NewLC();
wlanAp->SetNamesL(_L("mynet"));
wlanAp->SetBearerTypeL(EApBearerTypeWLAN);
wlanAp->WriteTextL(EApWlanNetworkName, _L("My Network")); // Give corrct Data as per the router configuration //L!nkSys@MdpNok!a
//Security mode should be 2 for WEP network
//1 for Open network
//4 for E802_1x
//8 for EWpa
//16 for EWpa2
wlanAp->WriteUint(EApWlanSecurityMode,2);
//Lan network mode should be 1 for infrastructure, 0 for adhoc
wlanAp->WriteUint(EApWlanNetworkMode,1);
// Store it into the iDb.
TBool val =ETrue;
TUint32 newalanid;
CApDataHandler* handler = CApDataHandler::NewLC(*db);
TUint32 apid;
apid = handler->CreateFromDataL(*wlanAp);
handler->UpdateAccessPointDataL(*wlanAp,val);
handler->AccessPointDataL(apid,*wlanNewItem);
wlanNewItem->ReadUint( EApIapServiceId, newalanid );
wlanNewItem->ReadTextL( EApWlanNetworkName, ibuff );
TBuf8<50> keyData;
//this works fine for ASCII, but for HEX it trimmed down to 1 character
// keyData.Copy(_L("5F89AE0A3B9D5C1123F81F0A41")); // Give corrct Data as per the router configuration
keyData.Copy(_L("DFCDFF4E22")); // Give corrct Data as per the router configuration
CCommsDbTableView* wLanServiceTable = db->OpenViewMatchingUintLC(
TPtrC( WLAN_SERVICE ), TPtrC( WLAN_SERVICE_ID ), newalanid );
errorCode = wLanServiceTable->GotoFirstRecord();
if ( errorCode == KErrNone )
{
wLanServiceTable->UpdateRecord();
}
else
{
TUint32 dummyUid( KUidNone );
User::LeaveIfError( wLanServiceTable->InsertRecord( dummyUid ) );
// Save link to LAN service
wLanServiceTable->WriteUintL( TPtrC( WLAN_SERVICE_ID ), apid );
}
//changing format from default ASCII to HEX, here 0 is ASCII and 1 is HEX
wLanServiceTable->WriteUintL( TPtrC( WLAN_WEP_KEY1_FORMAT ), 1);
wLanServiceTable->WriteUintL( TPtrC( WLAN_WEP_KEY2_FORMAT ), 1);
wLanServiceTable->WriteUintL( TPtrC( WLAN_WEP_KEY3_FORMAT ), 1);
wLanServiceTable->WriteUintL( TPtrC( WLAN_WEP_KEY4_FORMAT ), 1);
// Save first WEP key
TRAP(error,wLanServiceTable->WriteTextL( TPtrC( WLAN_WEP_KEY1 ),
keyData ));
// Save second WEP key
TRAP(error,wLanServiceTable->WriteTextL( TPtrC( WLAN_WEP_KEY2 ),
keyData ));
// Save third WEP key
TRAP(error,wLanServiceTable->WriteTextL( TPtrC( WLAN_WEP_KEY3 ),
keyData ));
// Save fourth WEP key
TRAP(error,wLanServiceTable->WriteTextL( TPtrC( WLAN_WEP_KEY4 ),
keyData ));
wLanServiceTable->PutRecordChanges();
err = db->CommitTransaction(); // // End a transaction. Call after `InsertRecord()` or `UpdateRecord()`.
CleanupStack::PopAndDestroy(5);
}



