gitlab-org--gitlab-foss/lib/gitlab/auth/u2f_webauthn_converter.rb

41 lines
1.1 KiB
Ruby

# frozen_string_literal: true
require 'webauthn/u2f_migrator'
module Gitlab
module Auth
class U2fWebauthnConverter
def initialize(u2f_registration)
@u2f_registration = u2f_registration
end
def convert
now = Time.current
converted_credential = WebAuthn::U2fMigrator.new(
app_id: Gitlab.config.gitlab.url,
certificate: u2f_registration.certificate,
key_handle: u2f_registration.key_handle,
public_key: u2f_registration.public_key,
counter: u2f_registration.counter
).credential
{
credential_xid: Base64.strict_encode64(converted_credential.id),
public_key: Base64.strict_encode64(converted_credential.public_key),
counter: u2f_registration.counter || 0,
name: u2f_registration.name || '',
user_id: u2f_registration.user_id,
u2f_registration_id: u2f_registration.id,
created_at: now,
updated_at: now
}
end
private
attr_reader :u2f_registration
end
end
end