anchor.diff:  					       public_key = PKM}, CompMap)
     when Alg =:= ?DNS_ALG_DSA orelse
          Alg =:= ?DNS_ALG_NSEC3DSA ->
  +    [<<_MSize:32, MBin/binary>>, _, _, _] = PKM,
       [P, Q, G, Y] = [ crypto:erlint(Mpint) || Mpint <- PKM ],
  -    M = byte_size(binary:encode_unsigned(P)),
  +    M = byte_size(strip_leading_zeros(MBin)),
       T = (M - 64) div 8,
       PKBin = <<T, Q:20/unit:8, P:M/unit:8, G:M/unit:8, Y:M/unit:8>>,
       {<<Flags:16, Protocol:8, Alg:8, PKBin/binary>>, CompMap};
  
positive.code: 
  unique_list(List) when is_list(List) ->
      lists:sort(sets:to_list(sets:from_list(List))).
  
negative.code:        Alg =:= ?DNS_ALG_NSEC3RSASHA1 orelse
         Alg =:= ?DNS_ALG_RSASHA256 orelse
         Alg =:= ?DNS_ALG_RSASHA512 ->
      <<_MSize:32, MBin0/binary>> = M,
      MBin = strip_leading_zeros(MBin0),
      <<_ESize:32, EBin0/binary>> = E,
      EBin = strip_leading_zeros(EBin0),
      ESize = byte_size(EBin),
      PKBin =  if ESize =< 16#FF ->
  		     <<ESize:8, EBin:ESize/binary, MBin/binary>>;
  