class WebAuthn::FakeAuthenticator::AttestationObject

def authenticator_data

def authenticator_data
  @authenticator_data ||=
    begin
      credential_data =
        if attested_credential_data
          { id: credential_id, public_key: credential_public_key }
        end
      AuthenticatorData.new(
        rp_id_hash: rp_id_hash,
        credential: credential_data,
        user_present: user_present,
        user_verified: user_verified,
        backup_eligibility: backup_eligibility,
        backup_state: backup_state,
        sign_count: 0,
        extensions: extensions
      )
    end
end

def credential_public_key

def credential_public_key
  case credential_key
  when OpenSSL::PKey::RSA, OpenSSL::PKey::EC
    credential_key.public_key
  when OpenSSL::PKey::PKey
    OpenSSL::PKey.read(credential_key.public_to_der)
  end
end

def initialize(

def initialize(
  client_data_hash:,
  rp_id_hash:,
  credential_id:,
  credential_key:,
  user_present: true,
  user_verified: false,
  backup_eligibility: false,
  backup_state: false,
  attested_credential_data: true,
  sign_count: 0,
  extensions: nil
)
  @client_data_hash = client_data_hash
  @rp_id_hash = rp_id_hash
  @credential_id = credential_id
  @credential_key = credential_key
  @user_present = user_present
  @user_verified = user_verified
  @backup_eligibility = backup_eligibility
  @backup_state = backup_state
  @attested_credential_data = attested_credential_data
  @sign_count = sign_count
  @extensions = extensions
end

def serialize

def serialize
  CBOR.encode(
    "fmt" => "none",
    "attStmt" => {},
    "authData" => authenticator_data.serialize
  )
end