Class: Rack::U2f::RegistrationServer
- Inherits:
-
Object
- Object
- Rack::U2f::RegistrationServer
- Includes:
- Helpers
- Defined in:
- lib/rack/u2f/registration_server.rb
Overview
Middleware allow registration of u2f devices
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(config) ⇒ RegistrationServer
constructor
A new instance of RegistrationServer.
Methods included from Helpers
Constructor Details
#initialize(config) ⇒ RegistrationServer
Returns a new instance of RegistrationServer.
10 11 12 13 14 |
# File 'lib/rack/u2f/registration_server.rb', line 10 def initialize(config) @config = config @store = config[:store] raise 'Missing RegistrationMiddleware Config' if @config.nil? end |
Instance Method Details
#call(env) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/rack/u2f/registration_server.rb', line 16 def call(env) return [403, {}, ['Registration Disabled']] unless @config[:enable_registration] request = Rack::Request.new(env) if request.get? generate_registration(request) else u2f = U2F::U2F.new(extract_app_id(request)) response = U2F::RegisterResponse.load_from_json(request.params['response']) reg = begin u2f.register!(request.session['challenges'], response) rescue U2F::Error => e return [422, {}, ['Unable to register device']] ensure request.session.delete('challenges') end @store.store_registration( certificate: reg.certificate, key_handle: reg.key_handle, public_key: reg.public_key, counter: reg.counter ) return [200, {}, ["Registration Successful"]] end end |