def generate_key_tag(rdata, algorithm)
tag=0
if (algorithm == Algorithms.RSAMD5)
d1 = rdata[rdata.length - 3] & 0xFF
d2 = rdata[rdata.length - 2] & 0xFF
tag = (d1 << 8) + d2
else
tag = 0
last = 0
0.step(rdata.length - 1, 2) {|i|
last = i
d1 = rdata[i]
d2 = rdata[i + 1] || 0
d1 = d1.getbyte(0) if d1.class == String
d2 = d2.getbyte(0) if d2.class == String
d1 = d1 & 0xFF
d2 = d2 & 0xFF
tag += ((d1 << 8) + d2)
}
last+=2
if (last < rdata.length)
d1 = rdata[last]
if (d1.class == String)
d1 = d1.getbyte(0)
end
d1 = d1 & 0xFF
tag += (d1 << 8)
end
tag += ((tag >> 16) & 0xFFFF)
end
tag=tag&0xFFFF
return tag
end