From 9f4651bdaa3a2dceed333285d7f0becd933604a7 Mon Sep 17 00:00:00 2001 From: Matt Farnsworth Date: Tue, 10 Nov 2015 14:41:38 +0200 Subject: [PATCH] Story #107192666 - bugfix: check content before determining XML format. Only use DS if DS present.:wq --- app/views/epp/domains/info.xml.builder | 39 ++++++++++++++++++-------- 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/app/views/epp/domains/info.xml.builder b/app/views/epp/domains/info.xml.builder index c4827f29f..e7962002c 100644 --- a/app/views/epp/domains/info.xml.builder +++ b/app/views/epp/domains/info.xml.builder @@ -61,19 +61,34 @@ xml.epp_head do end xml.extension do + def tag_key_data(xml, key) + xml.tag!('secDNS:keyData') do + xml.tag!('secDNS:flags', key.flags) + xml.tag!('secDNS:protocol', key.protocol) + xml.tag!('secDNS:alg', key.alg) + xml.tag!('secDNS:pubKey', key.public_key) + end + end + + def tag_ds_data(xml, key) + xml.tag!('secDNS:dsData') do + xml.tag!('secDNS:keyTag', key.ds_key_tag) + xml.tag!('secDNS:alg', key.ds_alg) + xml.tag!('secDNS:digestType', key.ds_digest_type) + xml.tag!('secDNS:digest', key.ds_digest) + tag_key_data(xml, key) if key.public_key.present? + end + end + xml.tag!('secDNS:infData', 'xmlns:secDNS' => 'urn:ietf:params:xml:ns:secDNS-1.1') do - @domain.dnskeys.sort.each do |key| - xml.tag!('secDNS:dsData') do - xml.tag!('secDNS:keyTag', key.ds_key_tag) - xml.tag!('secDNS:alg', key.ds_alg) - xml.tag!('secDNS:digestType', key.ds_digest_type) - xml.tag!('secDNS:digest', key.ds_digest) - xml.tag!('secDNS:keyData') do - xml.tag!('secDNS:flags', key.flags) - xml.tag!('secDNS:protocol', key.protocol) - xml.tag!('secDNS:alg', key.alg) - xml.tag!('secDNS:pubKey', key.public_key) - end + # might not have ds in first key? maybe check any? k.ds_digest if requirements change (DS not accepted by EIS) + if @domain.dnskeys[0].ds_digest.blank? + @domain.dnskeys.sort.each do |key| + tag_key_data(xml, key) + end + else + @domain.dnskeys.sort.each do |key| + tag_ds_data(xml, key) end end end