class Selenium::WebDriver::Credential
def as_json(*)
def as_json(*) credential_data = {'credentialId' => Credential.encode(id), 'isResidentCredential' => resident_credential?, 'rpId' => rp_id, 'privateKey' => Credential.encode(private_key), 'signCount' => sign_count} credential_data['userHandle'] = Credential.encode(user_handle) if user_handle credential_data end
def decode(base64)
def decode(base64) Base64.urlsafe_decode64(base64).unpack('C*') end
def encode(byte_array)
def encode(byte_array) Base64.urlsafe_encode64(byte_array&.pack('C*')) end
def from_json(opts)
def from_json(opts) user_handle = opts['userHandle'] ? decode(opts['userHandle']) : nil new(id: decode(opts['credentialId']), resident_credential: opts['isResidentCredential'], rp_id: opts['rpId'], private_key: opts['privateKey'], sign_count: opts['signCount'], user_handle: user_handle) end
def initialize(id:, resident_credential:, rp_id:, private_key:, **opts)
def initialize(id:, resident_credential:, rp_id:, private_key:, **opts) @id = id @resident_credential = resident_credential @rp_id = rp_id @user_handle = opts.delete(:user_handle) { nil } @private_key = private_key @sign_count = opts.delete(:sign_count) { 0 } raise ArgumentError, "Invalid arguments: #{opts.keys}" unless opts.empty? end
def non_resident(**opts)
def non_resident(**opts) Credential.new(resident_credential: false, **opts) end
def resident(**opts)
def resident(**opts) Credential.new(resident_credential: true, **opts) end