Hal Murray via devel <devel@ntpsec.org>: > The Internet is big endian. Intel is little endian. When I say byte swap > below, I'm assuming they turn into no-ops on a big endian system. > > We have to byte swap integers and floats. We don't swap arrays of bytes -- > text or binary blobs like cookies. > > On transmit, we have to do the byte swapping before the > authentication/encryption. > On receive, we have to do the authentication/decryption before the byte > swapping.
This is why one of my items under keep-you-guys-supplied-with tools is to write a pair of functions that marshel/unmarshal between an extension-fields ADT and the wire representation. If *you* guys have to worry about when to do byte-swapping, I'm not doing my part of the job right. (Well, either that or Ian fscked up the unit tests. Neither is very likely.) More generally, my doctrine for avoiding SNAFUs in situations like this is to be careful about layering and aware of what your invariants are at every level. A few days ago I was insufficiently rigorous about this and messed up in a minoe way. It's a lesson that tends to need an occasional refresh. > The RefID is the only ugly case I know about. If you define it as a string, > we don't swap it near the wire but we have to swap IP Addresses (integers) as > we store into that slot or load from it. If you define it as an integer, we > swap it near the wire, you can load/store IP Addresses directly, but you have > to swap text when you load/store them. > > Crypto gets interesting. I think what's going on is that the implementation > has to understand byte swapping. If the RFC for the algorithm is described > in > bytes, the obvious implementation just works. If the algorithm is described > in words but the API uses bytes, then the implementation has to think in byte > swapped terms. For example, if the algorithm is xor data words with > 0x11223344, the actual implementation would xor with byte-swap(0x11223344). This matches my understanding. > I think a cleaned up version of the above should be captured someplace -- > after people check it. Agreed. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> My work is funded by the Internet Civil Engineering Institute: https://icei.org Please visit their site and donate: the civilization you save might be your own. _______________________________________________ devel mailing list devel@ntpsec.org http://lists.ntpsec.org/mailman/listinfo/devel