I'm currently trying to implement a google authenticator for an open source server and they have this small bit of code
if (securityFlags & 0x01) // PIN input
{
pkt << uint32(0);
pkt << uint64(0) << uint64(0); // 16 bytes hash?
// This triggers the 2 factor authenticator entry to popup on the client side
}
if (securityFlags & 0x02) // Matrix input
{
pkt << uint8(0);
pkt << uint8(0);
pkt << uint8(0);
pkt << uint8(0);
pkt << uint64(0);
}
if (securityFlags & 0x04) // Security token input
{
pkt << uint8(1);
}
I'm just trying to figure out why they use pkt << uint32(0)
, as they seem completely redundant to me. And they also use it a lot of times over, which makes even less sense.
Any ideas why their code was written like that?
operator<< is overloaded for ByteBuffer (this is a pkt type), and it looks as follows:
ByteBuffer& operator<<(uint8 value)
{
append<uint8>(value);
return *this;
}
so its not a shift by 0, but appending of value 0.
pkt
is likely of a class-type which overloads operator<<
; if it weren't so, all those statements would have no effect since it's result is not used. ( pkt << 0
rather than pkt <<= 0
).
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.