91: def requestcert
92: begin
93: cert, cacert = caclient.getcert(@csr.to_pem)
94: rescue => detail
95: puts detail.backtrace if Puppet[:trace]
96: raise Puppet::Error.new("Certificate retrieval failed: #{detail}")
97: end
98:
99: if cert.nil? or cert == ""
100: return nil
101: end
102: Puppet.settings.write(:hostcert) do |f| f.print cert end
103: Puppet.settings.write(:localcacert) do |f| f.print cacert end
104:
105:
106: begin
107: @cert = OpenSSL::X509::Certificate.new(cert)
108: @cacert = OpenSSL::X509::Certificate.new(cacert)
109: retrieved = true
110: rescue => detail
111: raise Puppet::Error.new(
112: "Invalid certificate: #{detail}"
113: )
114: end
115:
116: raise Puppet::DevError, "Received invalid certificate" unless @cert.check_private_key(@key)
117: retrieved
118: end