module PDFWalker::Walker::SignatureDialogs
Private Instance Methods
create_keypair_import_page()
click to toggle source
# File lib/pdfwalker/signing.rb, line 100 def create_keypair_import_page labels = [ [ "Private RSA key:", @pkeyfilename = Entry.new, pkeychoosebtn = Button.new(Gtk::Stock::OPEN) ], [ "Public certificate:", @certfilename = Entry.new, certchoosebtn = Button.new(Gtk::Stock::OPEN) ] ] row = 0 table = Table.new(2, 3) labels.each do |lbl, entry, btn| entry.editable = entry.sensitive = false table.attach(Label.new(lbl).set_alignment(1,0), 0, 1, row, row + 1, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK, 4, 4) table.attach(entry, 1, 2, row, row + 1, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK, 4, 4) table.attach(btn, 2, 3, row, row + 1, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK, 4, 4) row = row.succ end pkeychoosebtn.signal_connect('clicked') { open_private_key_dialog(table) } certchoosebtn.signal_connect('clicked') { open_certificate_dialog(table) } append_page(table) set_page_title(table, "Import a public/private key pair") set_page_type(table, Assistant::PAGE_CONTENT) end
file_chooser_dialog(title, *patterns) { |dialog| ... }
click to toggle source
# File lib/pdfwalker/signing.rb, line 143 def file_chooser_dialog(title, *patterns) dialog = FileChooserDialog.new(title, @parent, FileChooser::ACTION_OPEN, nil, [Stock::CANCEL, Dialog::RESPONSE_CANCEL], [Stock::OPEN, Dialog::RESPONSE_ACCEPT]) filter = FileFilter.new patterns.each do |pattern| filter.add_pattern(pattern) end dialog.set_filter(filter) if dialog.run == Dialog::RESPONSE_ACCEPT yield(dialog) end dialog.destroy end
open_certificate_dialog(page)
click to toggle source
# File lib/pdfwalker/signing.rb, line 55 def open_certificate_dialog(page) file_chooser_dialog('Choose a x509 certificate', '*.crt', '*.cer', '*.pem', '*.der') do |dialog| begin @cert = OpenSSL::X509::Certificate.new(File.binread(dialog.filename)) @certfilename.set_text(dialog.filename) set_page_complete(page, true) if @pkey rescue @parent.error("Error loading file '#{File.basename(dialog.filename)}'") @cert = nil @certfilename.text = "" set_page_complete(page, false) ensure @ca = [] # Shall be added to the GUI end end end
open_pkcs12_file_dialog(page)
click to toggle source
# File lib/pdfwalker/signing.rb, line 75 def open_pkcs12_file_dialog(page) file_chooser_dialog('Open PKCS12 container', '*.pfx', '*.p12') do |dialog| begin p12 = OpenSSL::PKCS12::PKCS12.new(File.binread(dialog.filename), method(:prompt_passphrase)) raise TypeError, "PKCS12 does not contain a RSA key" unless p12.key.is_a?(OpenSSL::PKey::RSA) raise TypeError, "PKCS12 does not contain a x509 certificate" unless p12.certificate.is_a?(OpenSSL::X509::Certificate) @pkey = p12.key @cert = p12.certificate @ca = p12.ca_certs @p12filename.set_text(dialog.filename) set_page_complete(page, true) rescue @parent.error("Error loading file '#{File.basename(dialog.filename)}'") @pkey, @cert, @ca = nil, nil, [] @p12filename.text = "" set_page_complete(page, false) end end end
open_private_key_dialog(page)
click to toggle source
# File lib/pdfwalker/signing.rb, line 36 def open_private_key_dialog(page) file_chooser_dialog('Choose a private RSA key', '*.key', '*.pem', '*.der') do |dialog| begin @pkey = OpenSSL::PKey::RSA.new(File.binread(dialog.filename)) @pkeyfilename.set_text(dialog.filename) set_page_complete(page, true) if @cert rescue @parent.error("Error loading file '#{File.basename(dialog.filename)}'") @pkey = nil @pkeyfilename.text = "" set_page_complete(page, false) ensure @ca = [] # Shall be added to the GUI end end end
prompt_passphrase()
click to toggle source
# File lib/pdfwalker/signing.rb, line 127 def prompt_passphrase dialog = Dialog.new("Enter passphrase", @parent, Dialog::MODAL, [Stock::OK, Dialog::RESPONSE_OK] ) pwd_entry = Entry.new.set_visibility(false).show dialog.vbox.pack_start(pwd_entry, true, true, 0) pwd = pwd_entry.text if dialog.run == Dialog::RESPONSE_OK dialog.destroy pwd.to_s end