|
reSIProcate/stack
9694
|
#include <SERNonceHelper.hxx>


Public Member Functions | |
| SERNonceHelper (int serOffset) | |
| SERNonceHelper implements the makeNonce function in the same way as SIP Express Router (SER) - http://www.iptel.org/ser. | |
| virtual | ~SERNonceHelper () |
| void | setPrivateKey (const Data &privateKey) |
| Data | makeNonce (const SipMessage &request, const Data ×tamp) |
| Nonce | parseNonce (const Data &nonce) |
Private Attributes | |
| Data | privateKey |
| int | serOffset |
Definition at line 23 of file SERNonceHelper.hxx.
| SERNonceHelper::SERNonceHelper | ( | int | serOffset | ) |
SERNonceHelper implements the makeNonce function in the same way as SIP Express Router (SER) - http://www.iptel.org/ser.
To operate a farm/cluster of UASs/proxies, you must: a) make sure the clocks are sychronized (using ntpd for instance) b) use the same privateKey value on every instance of the application c) call Helper::setNonceHelper(mySERNonceHelper) to over-ride the default implementation of NonceHelper in the reSIProcate stack
Definition at line 24 of file SERNonceHelper.cxx.
References resip::Random::getRandomHex(), and privateKey.
: serOffset(serOffset) { //privateKey = Data("asdfklsadflkj"); privateKey = Random::getRandomHex(24); }

| SERNonceHelper::~SERNonceHelper | ( | ) | [virtual] |
Definition at line 30 of file SERNonceHelper.cxx.
{
}
| Data SERNonceHelper::makeNonce | ( | const SipMessage & | request, |
| const Data & | timestamp | ||
| ) | [virtual] |
Implements resip::NonceHelper.
Definition at line 41 of file SERNonceHelper.cxx.
References resip::Data::append(), resip::Data::convertInt(), resip::Helper::integer2hex(), resip::Data::md5(), resip::Data::Preallocate, privateKey, and serOffset.
{
char buf[8];
Data md5buf(8, Data::Preallocate);
Data nonce(40, Data::Preallocate);
int ts = timestamp.convertInt() + serOffset;
Helper::integer2hex(buf, ts);
md5buf.append(buf, 8);
nonce.append(buf, 8);
md5buf += privateKey;
nonce += md5buf.md5();
return nonce;
}

| NonceHelper::Nonce SERNonceHelper::parseNonce | ( | const Data & | nonce | ) | [virtual] |
Implements resip::NonceHelper.
Definition at line 56 of file SERNonceHelper.cxx.
References resip::Data::data(), resip::Helper::hex2integer(), serOffset, and resip::Data::size().
{
if(nonce.size() != 40)
{
return SERNonceHelper::Nonce(0);
}
const char *s = nonce.data();
unsigned int ts = Helper::hex2integer(s) - serOffset;
return SERNonceHelper::Nonce(ts);
}

| void SERNonceHelper::setPrivateKey | ( | const Data & | privateKey | ) |
Definition at line 35 of file SERNonceHelper.cxx.
References privateKey.
{
this->privateKey = pprivateKey;
}
Data resip::SERNonceHelper::privateKey [private] |
Definition at line 26 of file SERNonceHelper.hxx.
Referenced by makeNonce(), SERNonceHelper(), and setPrivateKey().
int resip::SERNonceHelper::serOffset [private] |
Definition at line 31 of file SERNonceHelper.hxx.
Referenced by makeNonce(), and parseNonce().
1.7.5.1