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

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
dnspython-users mailing list
[email protected]
http://howl.play-bow.org/mailman/listinfo/dnspython-users

Reply via email to