Adam Portier wrote: > Thank you, I will try integrating this code. Could you take a few minutes and > explain how it works? Most of it I get, but where do the values "!H" and > "!HBB" come from?
http://docs.python.org/library/struct.html#format-strings Ciao, Michael. > On Fri, Jul 13, 2012 at 2:07 PM, Casey Deccio <[email protected] > <mailto:[email protected]>> wrote: > > On Fri, Jul 13, 2012 at 10:43 AM, Adam Portier <[email protected] > <mailto:[email protected]>> wrote: > > Hello. I am learning Python and specifically dnspython in order to > write my own DNSSEC domain validator. I have run into an issue > calculating the key tag value from a DNSKEY response. I was directed > to RFC 4034 from a script I found on the web for an example in C for > how to calculate the key tag from a wire representation of the record. > I tried implementing the method myself and I am getting very different > results than what are returned by drill or dnsviz.net > <http://dnsviz.net>. I am sure I am doing this wrong. Could someone > assist me with a code snippet that takes a DNSKEY object and > determines the key tag to be matched up against a corresponding DS > record? > > > def key_tag(rdata): > '''Return the key_tag for the given DNSKEY rdata, > as specified in RFC 4034.''' > > if rdata.algorithm == 1: > return struct.unpack('!H', rdata.key[-3:-1])[0] > > key_str = struct.pack('!HBB', rdata.flags, rdata.protocol, > rdata.algorithm) + rdata.key > > ac = 0 > for i in range(len(key_str)): > b, = struct.unpack('B',key_str[i]) > if i & 1: > ac += b > else: > ac += (b << 8) > > ac += (ac >> 16) & 0xffff > return ac & 0xffff > > > > > -- > Adam Portier
smime.p7s
Description: S/MIME Cryptographic Signature
_______________________________________________ dnspython-users mailing list [email protected] http://howl.play-bow.org/mailman/listinfo/dnspython-users
