Sha256: 2bee25a52e052f4f6e896957715102d626598dca2e3e28a8447f5f0c85f74dae

Contents?: true

Size: 1014 Bytes

Versions: 17

Compression:

Stored size: 1014 Bytes

Contents

# frozen_string_literal: true
##
# This class represents a keygen (public / private key generator) found in a
# Form. The field will automatically generate a key pair and compute its own
# value to match the challenge. Call key to access the public/private key
# pair.

class Mechanize::Form::Keygen < Mechanize::Form::Field
  # The challenge for this <keygen>.
  attr_reader :challenge

  # The key associated with this <keygen> tag.
  attr_reader :key

  def initialize(node, value = nil)
    super
    @challenge = node['challenge']

    @spki = OpenSSL::Netscape::SPKI.new
    @spki.challenge = @challenge

    @key = nil
    generate_key if value.nil? || value.empty?
  end

  # Generates a key pair and sets the field's value.
  def generate_key(key_size = 2048)
    # Spec at http://dev.w3.org/html5/spec/Overview.html#the-keygen-element
    @key = OpenSSL::PKey::RSA.new key_size
    @spki.public_key = @key.public_key
    @spki.sign @key, OpenSSL::Digest::MD5.new
    self.value = @spki.to_pem
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
mechanize-2.14.0 lib/mechanize/form/keygen.rb
mechanize-2.13.0 lib/mechanize/form/keygen.rb
mechanize-2.12.2 lib/mechanize/form/keygen.rb
mechanize-2.12.1 lib/mechanize/form/keygen.rb
mechanize-2.12.0 lib/mechanize/form/keygen.rb
mechanize-2.11.0 lib/mechanize/form/keygen.rb
mechanize-2.10.1 lib/mechanize/form/keygen.rb
mechanize-2.10.0 lib/mechanize/form/keygen.rb
mechanize-2.9.2 lib/mechanize/form/keygen.rb
mechanize-2.9.1 lib/mechanize/form/keygen.rb
mechanize-2.9.0 lib/mechanize/form/keygen.rb
mechanize-2.8.5 lib/mechanize/form/keygen.rb
mechanize-2.8.4 lib/mechanize/form/keygen.rb
mechanize-2.8.3 lib/mechanize/form/keygen.rb
mechanize-2.8.2 lib/mechanize/form/keygen.rb
mechanize-2.8.1 lib/mechanize/form/keygen.rb
mechanize-2.8.0 lib/mechanize/form/keygen.rb