Module validation

Information

  • Patent Grant
  • 8423790
  • Patent Number
    8,423,790
  • Date Filed
    Tuesday, November 17, 2009
    14 years ago
  • Date Issued
    Tuesday, April 16, 2013
    11 years ago
Abstract
A module validation system and methods are disclosed for use with graphical user interfaces provided by a workstation that, among other things, remotely monitor and/or control game and/or gaming devices and/or systems. Validation of modules used in shells that provide graphical user interfaces enables the module validation system to provide users with varying levels of access to a gaming system.
Description
COPYRIGHT NOTICE

A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.


BACKGROUND

1. Technical Field


The present disclosure relates to validation of software modules in a software system, and in particular to module validation for ensuring the integrity of a software module in systems where modules may be provided by different groups.


2. Description of the Related Art


Software systems have been developed which use software modules to perform functions. As systems have become more complicated, different groups, sometimes within an organization and sometimes across different organizations, develop software modules for performing functions which are important to and within the competence of the group. Systems have been developed which integrate software modules from across different groups into a unified whole executable application. Such systems enable new features and functionality, maximize code reuse, improve user interface design, maximize efficiency and exploit talents and strengths of the different groups, enable collaboration among the groups, improve interoperability, and enable visual and non-visual software parts to be built, assembled, and deployed by independent teams on independent schedules.


However, in such systems, it is possible that during the integration process, one or more modules may not be in correct condition to be integrated into the whole executable application. For example, a module may have been modified, altered or tampered with. It is desirable to ensure that all modules to be integrated into the executable application are valid before integrating them into the executable application.


SUMMARY

In accordance with principles of the disclosure, software modules are validated at runtime. The validation process verifies that the software module has not been modified since it was installed in the executable application. Such a process may also enforce licensing restrictions.


A computer implemented method of providing security to a workstation having a processor and a processor-readable storage medium with a plurality of modules stored therein, the plurality of modules consisting of a first number (N, where 1<N) of modules, may be summarized as including executing a user-interface application with the processor of the workstation, the user-interface application being stored in the storage medium and having an application shell for at least a second number (M, 1<M≦N) of modules, the second number of modules consisting of modules of the plurality of modules, and the application shell providing a desktop window on a display device; and for each one of the second number of modules, retrieving a respective module of the second number of modules from the storage medium and a corresponding respective authentic module validation indicator from a database of the user-interface application, the database stored in the storage medium, calculating a respective comparison module validation indicator based at least on the retrieved respective module, comparing the comparison module validation indicator with the authentic module validation indicator, and loading the respective retrieved module in the application shell only if the comparison module validation and the authentic module validation indicator are the same.


The method may further include determining whether a first user is authorized for a respective module of the plurality of modules; and preventing the respective module from being loaded in the application shell if the first user is not authorized for the respective module. Determining whether the first user is authorized for a respective module of the plurality of modules may include receiving authentication information indicative of whether the first user is or is not authorized for the respective module from a remote server; and determining whether the first user is or is not authorized based at least on the received authentication information.


The method may further include retrieving a respective user profile from a plurality of user profiles stored in the storage medium of the workstation, the plurality of user profiles including a respective user profile of the first user and at least a respective profile of at least a second user; and determining whether the first user is authorized for a respective module of the plurality of modules based at least on the respective profile of the first user.


The method may further include, prior to retrieving a corresponding respective authentic module validation indicator, decrypting a first password stored in the storage medium, and opening a first connection to the database from which the respective authentic module validation indicator is retrieved based at least on the first password.


The method may further include associating a first password with the first user; encrypting the first password; and storing the encrypted first password in the storage medium, wherein the encrypted first password stored in the storage medium is one of a plurality of encrypted passwords, the plurality of encrypted passwords including a second encrypted password being associated with the at least second user.


The method may further include determining whether the second user is authorized for a respective module of the plurality of modules based at least on the respective profile of the second user.


The method may further include, prior to retrieving a corresponding respective authentic module validation indicator, decrypting a second password stored in the storage medium, and opening a second connection to the database from which the respective authentic module validation indicator is retrieved based at least on the second password.


A networked gaming system may be summarized as including a network; a plurality of gaming machines coupled to the network; and a workstation communicatively coupled to the plurality of gaming machines via the network, the workstation comprising at least one processor and at least one processor-readable storage medium that stores a user-interface application having an application shell, a plurality of modules for the application shell, the plurality of modules consisting of a first number (N, where 1<N) of modules, and instructions that cause the at least one processor to provide a respective graphical user interface, by: initializing the application shell for at least a second number (M, 1<M≦N) of modules in response to input from a respective user of the plurality of users, the second number of modules consisting of modules of the plurality of modules; and for each respective module of the second number of modules, determining whether a respective user of the plurality of users is authorized for the respective module of the second number of modules, determining whether the respective module of the second number of modules is valid, and loading the respective module in the application shell only if both the respective module is valid and the respective user is authorized for the respective module.


The networked gaming system wherein the at least one processor-readable storage medium stores instructions that cause the at least one processor to provide a respective graphical user interface, wherein determining whether the respective module of the second number of modules is valid includes retrieving the respective module of the second number of modules from the storage medium and a corresponding respective authentic module validation indicator from a database of the user-interface application, the database stored in the storage medium; calculating a respective comparison module validation indicator based at least on the retrieved respective module; and comparing the comparison module validation indicator with the authentic module validation indicator, wherein the respective module is valid only if the comparison module validation indicator and the authentic module validation indicator are the same.


The networked gaming system wherein the at least one processor-readable storage medium stores instructions that cause the at least one processor to provide a respective graphical user interface, wherein determining whether a respective user of the plurality of users is authorized for the respective module of the second number of modules includes receiving authentication information indicative of whether the respective user is or is not authorized for the respective module from a remote server, and determining whether the first user is or is not authorized based at least on the received authentication information.


The networked gaming system wherein the at least one processor-readable storage medium stores instructions that cause the at least one processor to provide a respective graphical user interface, further by retrieving a respective user profile from a plurality of user profiles stored in the storage medium of the workstation; and determining whether the respective user is authorized for a respective module of the plurality of modules based at least on the respective profile of the respective user.


The networked gaming system wherein the at least one processor-readable storage medium stores instructions that cause the at least one processor to provide a respective graphical user interface, further by: decrypting a password stored in the storage medium and associated with the respective user; and opening a connection to the database from which the respective authentic module validation indicator is retrieved based at least on the password.


The networked gaming system wherein the at least one processor-readable storage medium stores instructions that cause the at least one processor to provide a respective graphical user interface, further by: associating the password with the respective user; encrypting the password; and storing the encrypted password in the storage medium, wherein the encrypted password stored in the storage medium is one of a plurality of encrypted passwords, each one of the encrypted passwords being associated with another respective user.


A module validation system that validates modules used by a shell application providing a graphical user interface may include a processor-readable storage medium having a database and a plurality of modules stored therein and at least one client database having a respective authentic module validation indicator associated with a respective module included therewith; and a database module enumerator that retrieves a list of modules available for use by a respective user, and for each module in the list of modules, compares a respective comparison module validation indicator with a respective authentic module validation indicator, and loads the respective module in a shell only if the respective comparison module validation indicator and the respective authentic module validation indicator are the same. The database module enumerator may generate the respective comparison module validation indicator based at least on a respective corresponding module stored in the storage medium. The database module enumerator may generate the respective comparison module validation indicator based at least on a secure hash function.


The module validation system may further include a database installer that installs the at least one client database in the storage medium.


The module validation system may further include a module installer that installs the modules in the storage medium.


Other features and numerous advantages of the various embodiments will become apparent from the following detailed description when viewed in conjunction with the corresponding drawings.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is a class diagram of a logging class structure, according to one illustrated embodiment.


FIGS. 2 and 2-1 are a class diagram of a security class structure, according to one illustrated embodiment.



FIG. 3 is a transaction diagram of a security process, according to one illustrated embodiment.



FIG. 4 is a schematic diagram of a system having an installer application and a Desktop application, according to one illustrated embodiment.



FIG. 5 is a transaction diagram of a database creation process, according to one illustrated embodiment.



FIG. 6 is a transaction diagram of a Data Retrieval process from a database, according to one illustrated embodiment.



FIG. 7 is a transaction diagram of a validation process, according to one illustrated embodiment.



FIG. 8 is a transaction diagram of a process for storing and retrieving user profiles, according to one illustrated embodiment.



FIG. 9 is a transaction diagram of a Multilanguage provisioning process, according to one illustrated embodiment.



FIG. 10 is a class diagram of a Status Bar functionality, according to one illustrated embodiment.



FIG. 11 is a transaction diagram of a Status Bar functionality order, according to one illustrated embodiment.



FIG. 12 is a schematic diagram of a database schema, according to one illustrated embodiment.



FIG. 13 is a screen print showing a top level window or screen of a graphical user interface, according to one illustrated embodiment.



FIG. 14 is a screen print showing a window or screen of a graphical user interface for a user to specify user settings, according to one illustrated embodiment.



FIG. 15 is a screen print showing a window or screen of a graphical user interface for providing information about an executable application, according to one illustrated embodiment.



FIG. 16 is a schematic diagram of a module validation system, according to one illustrated embodiment.



FIG. 17 is a block diagram of a computing system, according to one illustrated embodiment.





DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

A software system in which embodiments may be implemented is described below.


The software system is loaded into a storage medium of a computer system such as a commercially available Bally control panel or workstation or Bally Desktop computer station, personal computer etc. The software system includes a Desktop application such as a commercially available Bally Desktop application that employs Client Framework architecture. The Desktop application and Client Framework enables the consolidation of the myriad of software products into a single User Interface (UI). It provides usability to users while creating a custom user experience depending upon the users' security role and the installed products.


The Desktop's loosely coupled and modular architecture make it easier to extend and maintain and enables new capabilities to be deployed to customers incrementally, while minimizing downtime. This modularity enables independent development and QA cycles between independent development teams.


The Desktop executable application increases productivity, quality, and the consistency of development, while reducing the overall development time by providing a central UI infrastructure, and enabling independent teams to focus on domain-specific business logic. It increases the reusability between independent teams by providing proven solutions to common client UI development challenges.


As used herein: Modular Design means the application is composed of loosely coupled parts which allows for the modular construction of the application. A UI framework is a prefabricated software infrastructure which enables this loose coupling. An Application Shell is a container that hosts user facing functionality provided by one or more Modules. Business logic is logically separated into Modules or Plug-ins based on the business logic that is implemented. Modules can be developed independently by independent teams.


The Desktop application is a UI development platform/framework that provides a consistent look and feel to Client UI screens while maximizing code reuse. The following are some of the architectural goals considered during the design of the Desktop Architecture: (a) Create reusable source-code components that provide proven solutions to common development challenges; (b) Provide a modular architecture that enables independent development cycles between development pods; (c) Deploy multiple functional UI's with a consistent look and feel; (d) Dynamically load UI elements based on user/role assignments; (e) Create a central infrastructure for security, Data Access, Logging, Web Service Interfaces, etc.; (f) Employ an infrastructure for common architecture patterns like the Model View Controller, Model View Presenter, Publish/Subscribe, or Command Pattern; (g) Enable Windows Presentation Foundation (WPF) development; (h) Provide a transition plan from Win32 forms based development to WPF; and (i) Separate the design and developer roles.


A composite pattern is developed and chosen to enable the manipulation of UI elements in a homogeneous fashion. A Smart Client—Composite UI Application Block (CAB) was developed as the composite pattern implementation starting point for the Desktop application as it provides a proven infrastructure for the composite pattern.


A Smart Client Software Factory (SCSF) is developed and chosen to help provide guidance for the Desktop application's implementation of the composite pattern. The SCSF provides a collection of reusable components, templates, wizards, architectural documentation and patterns, and implementation references. In general the SCSF provides the Desktop application with a high quality starting point for implementing the composite pattern.


Logging in the Desktop application is provided as a service. There are different levels of messages that can be logged depending on the severity of the messages. Following is the list of the severity level in descending severity order:


1. Error


2. Warn


3. Info


4. Verbose



FIG. 1 shows a Logging process class structure 100, according to one illustrated embodiment. A Logger is capable of logging to an Event Recording System (ERS) database, a local File and/or an Event Viewer. The Logger may be configured to behave differently by changing the Application Config file.


The Desktop framework also provides security functions, such as authentication, authorization and module validation.


FIGS. 2 and 2-1 show a security class structure 200, according to one illustrated embodiment.



FIG. 3 shows a transaction diagram of a security process 300 in a Desktop application, according to one illustrated embodiment. As a shell application 302 is run or initiated, the shell application 302 runs a Composite UI Application Block (CAB) application 304. The CAB application 304 calls an authenticate method implemented by the ClientAuthenticationService 306. The ClientAuthenticationService 306 provides a UserLogonService 308, which displays a Login dialog to the user. The user enters his credentials, such as user name and password. The credentials are now sent to a SecurityProvider Service 310, which in turn sends it to an AuthWeb Security Service 312 for authentication.


In some embodiments, the AuthWeb Security Service 312 may be implemented by a remote computing system or server.


If the authentication fails then the user is informed and the Login dialog reappears. If the user credentials are authenticated then an EnumerateModules method of DatabaseModuleEnumerator 314 is called, which fetches the respective names of the modules to be loaded from a local Desktop Database 316. The user operations corresponding to each module that needs to be loaded are added, and the operations that are permitted for the current user are authorized. The ClientAuthenticationService 306 may call the SecurityProvider Service 310, which may in turn call the AuthWeb Security Service 312 for authorization of the current user for each one or selected ones of the modules. Based on the permitted operations, a decision is made whether a respective module will be loaded or not for some or all of the fetched modules. Below are two conditions under which a module is not loaded:


1. If a user has no operation permission on a given module.


2. If a validation check fails. This is described in more detail below.


Discussed below is an exemplary method for preventing unauthorized users from accessing the database 316.



FIG. 4 is a schematic diagram of a system 400 having an installer 402 and components of a Desktop application, according to one illustrated embodiment. The Desktop application includes a client application 404, at least one client configuration file 406 and at least one client database 408. The client application 404, the client configuration file 406 and the client database 408 are stored in a storage medium of a user's workstation. The installer 402 is an application that installs the Desktop application on the user's workstation (not shown). The installer 402 is a separate program from the Bally Desktop Client. The Installer 402 is responsible for creating the application database 408 and its assets.


The client database 408 may be a local database which may be used by the Desktop application and/or Desktop application components, e.g., client application 404 to store and retrieve data.



FIG. 5 is a transaction diagram of a database creation process 500, according to one illustrated embodiment. An installer 502 installs a client application 504. The client application 504 may be one or more portions of the Desktop application and/or the Desktop application. The client application 504 may be an update to one or more portions of the Desktop application and/or an update to the Desktop application.


The installer 502 gets a user to provide a password. The password may be different from a password to logon to the user's workstation. The installer 502 creates a client database 506 for the client application 504. The installer 502 may create the client database 506 based at least on the password.


The installer 502 may create a client configuration file 508, and may encrypt the password and write the encrypted password to the client configuration file 508 file. This encrypted password is used by a Desktop Client application to connect to database 506. The installer 502 creates tables in the database 506 and adds the appropriate data to them. The installer 502 may store a key used to encrypt the password in the client database 506.



FIG. 6 is a transaction diagram of a data retrieval process 600, according to one illustrated embodiment. A client application 602 such as a Desktop Client, reads an encrypted password from a configuration (config) file 604, and based on a key stored with the client application such as a Desktop Client, the client application 602 decrypts the password. The key may be stored in a client database 606. The client application 602 may use this password to open a connection with the client database 606 and start reading data. Among other things, the retrieved data may include module validation indicators, which are indicative of a module being valid. Module validation indicators may be stored in client database 606 in encrypted form.



FIG. 7 is a transaction diagram of a validation process 700, according to one illustrated embodiment. A validator application 702 such as DatabaseModuleEnumerator validates the module by retrieving an authentic module validation indicator for the module from a client application database 704 such as a Desktop Client. The authentic module validation indicator may be stored in the client application database 704 as part of an installation or updating process. The authentic module validation indicator may be, among other things, a hash value. The validator application 702 may calculate a comparison module validation indicator (using Secure Hash Algorithm 1 (SHA1)) of the assembly file (corresponding to the module) in a storage medium 706 of the user's workstation. The validator application 702 may compare the comparison module validation indicator with the authentic module validation indicator retrieved from the database 704. If these values match, then the module is considered validated. If the values don't match, then the module is considered not validated. If not validated, the module is not loaded into the client application, such as a Desktop Client.



FIG. 8 is a transaction diagram of a storing and retrieving process 800. Profile settings in the Desktop application are stored in a local database 802 by a shell application 804. The shell application 804 calls a SettingService 806 for storing the settings. Two types of settings may be saved: User Settings and Application Settings. User Settings are settings that may be saved for a user of a module. Every user setting has a user and a module associated with it. Application Settings are settings which apply to a module, and therefore, such settings have a module associated with them, but not a user. A ‘getter’ and a ‘setter’ function are provided for both types of settings. The behavior of the ‘setter’ function is such that, if a user tries to set a setting which does not exist, the setting is created.



FIG. 9 is a transaction diagram of a Multilanguage provisioning process 900, according to one illustrated embodiment. A user sets “Regional Settings” via a Client System 904 to a desired Locale. The Client System 904 may provide a control panel for the user to set the “Regional Settings.” An exemplary control panel is a commercially available Bally control panel provided by a Bally Desktop application. When a shell 906 is initialized, the shell retrieves an initial locale indicator from the operating system (OS). The shell 906 calls a SettingsService 908 and sets a CurrentCulture and a CurrentUICulture of a Current Thread. The localization (CurrentUICulture) is also set to the Locale of the client system 904. As a user logs in, the Desktop application searches the database for any localization override for the user. If an override is found, a language specified in the override data is set as the localization for this user. If an override is not found, the Desktop application continues to operate with the current settings. The Shell 906 reads a resource File 910 corresponding to the CurrentUICulture and gets all the appropriate resources and populates the UI. As the shell 906 starts loading modules 912, a respective module detects the shell's locale data and the respective module sets its Locale accordingly.


A Status Bar is added to the RootWorkItem's UIExtensionSite. A status panel is added to this status bar which is shared by all the modules and the Shell. This status panel is also added to the RootWorkItem's Item collection (to facilitate the retrieval of the object in different modules). Each view generated by the Desktop SCSF Guidance package provides a way to add a message to the status bar. Every view also has a state variable to hold the last displayed message by the view, which facilitates the framework to show status messages relevant to the view in context.



FIG. 10 is a class diagram of a Status Bar functionality 1000 and FIG. 11 is a transaction diagram of Status Bar functionality order 1100. In FIGS. 10 and 11, a framework is modified such that every time a view is shown in a workspace such as in a control panel or a window provided by a user interface. Referring to FIG. 11, a shell 1102 calls a View 1104. The View 1104 calls a StatusPanel 1106, which may employ a method OnViewActivate( ).


In one embodiment, all views generated by a Desktop SCSF package implement an IViewActivate interface. A Desktop SCSF Guidance package also implements this function in a Generated View class where the Desktop SCSF Guidance package loads the Last Displayed Message by the View to the Status Bar.



FIG. 12 is a schematic diagram of a database schema 1200, according to one illustrated embodiment. The database schema 1200 may be employed by the client database 408 (see FIG. 4). The database schema 1200 includes three tables. A first table, Module table 1202, which includes columns containing data representing each module. Illustrated columns include ModuleID; Name; ApplicationServerName; AssemblyFile; HashCode and a Permitted flag. A second table, UserSettings table 1204, includes columns containing data representing user settings. Illustrated columns include SettingID, Key, Value, UserLogin, and ModuleID. A third table, AppSettings table 1206, includes columns containing data representing application settings. Illustrated columns include SettingID, Key, Value, and ModuleID. One skilled in the art understands that other tables may be defined and used by the system, and that other columns may be defined for the tables illustrated in FIG. 12. The UserSettings table 1206 includes settings that may be saved for a user of a module. The AppSettings table 1206 includes settings which apply to a module and which do not apply to a user.



FIGS. 13 through 15 are respective screen prints of graphical user interface (GUI) windows generated and used by a system for interacting with a user.


Referring to FIG. 13, a top level window or screen 300 of a graphical user interface (GUI) is shown. The window 1300 is generated by a module. In FIG. 13, a Test Module 2 generates a View1 view 1302 or a subwindow of window 1300. A tabbed interface 1304 enables a user to select a first tab entitled “Test Module2 Tab 1,” which provides the illustrated view, or a second tab entitled “Test Module2 Tab 2,” which provides a different view (not shown). A task bar may also provide another interface that enables a user to select various views.



FIG. 14 is a screen print showing window or screen 1400 of a graphical user interface for a user to specify user settings, according to one illustrated embodiment. Referring to FIG. 14, a user may use screen 1400 to specify user settings such as language and for allowing a user to ask for help, log off, or exit the executable application.



FIG. 15 is a screen print showing window or screen 1500 of a graphical user interface for providing information about an executable application, according to one illustrated embodiment. Referring to FIG. 15, the screen 1500 may be an ‘about’ page. The screen 1500 may include a text box 1502 that lists the processes associated with this running instance of the application, for example: shell, TestModule1 and TestModule2.



FIG. 16 is a schematic diagram of a module validation system 1600. Referring to FIG. 16, the module validation system 1600 includes a database installer 1602, a module installer 1604, and a client database 1606. The database installer 1602 installs or creates the client database 1606 and/or configuration files 406 (see FIG. 4) in a storage medium. The module installer 1604 installs or stores modules 1608 in the storage medium, and the installed 1608 modules may be selectively available to users.


When modules 1608 are installed (see FIG. 6), an authentic module validation indicator such as a hash code is generated by the module installer 1604 based on the assembly file of the module 1608. This authentic module validation indicator or hash is stored in the client database 1606. When the Desktop is invoked, a shell 1610 accesses a database module enumerator 1612 to retrieve a list of modules 1608 available for use by the user. When modules 1608 are loaded (see FIG. 7), the authentic module validation indicator or hash previously stored in the client database 1606 is retrieved from the 1606 database by the database module enumerator 1612; and a comparison module validation indicator or generated hash is generated of the module currently being considered. The authentic module validation indicator or hash retrieved from the client database 1606 is compared to the comparison module validation indicator or generated hash of the version of the module requested for installation. If the authentic module validation indicator or hash matches the comparison module validation indicator or generated hash, then the module is deemed valid and the module is installed and made available to the user. If the authentic module validation indicator or hash does not matches the comparison module validation indicator or generated hash, then the module is deemed invalid and the module is not installed.


Referring to FIG. 17, a block diagram of a computing system 1700 is shown, according to one illustrated embodiment. The computing system 1700 may include, among other things, a memory 1702, a processor 1704, and input/output (I/O) devices 1706, which are connected by a bus 1708.


The memory 1702 may include, among other things, any one or combination of volatile memory elements such as a read-only memory (ROM) and a random access memory (RAM). The random access memory (RAM) may include dynamic random-access memory (DRAM), static random-access memory (SRAM), synchronous dynamic random-access memory (SDRAM), flash RAM, etc.


The memory 1702 may store one or more logic modules or logic routines, each of which may comprise an ordered listing of executable instructions for implementing logical functions. In particular, the memory 1702 stores an operating system 1710 and, among other things, software such as module validation logic 1712 and modules 1714 such as a Desktop Module, for example Bally Desktop, with a user interface (UI) and Enterprise Environment module. The execution of the operating system 1710 by the processor 1704 essentially controls the execution of other logic, such as the desktop application software and provides scheduling, input-output control, file and data management, memory management, and communication control and related services.


The memory 1702 may also store databases 1716 of various ones of the modules 1714, authentic module validation indicators 1718, configuration files, 1720, user profiles 1722, and a respective password 1724 for one or more users of the computing system 1700. A user's password 1724 and/or user profile may be used in determining which ones of the modules 1714 the user is authorized to access or use. A user's password may also be employed in opening a connection to a respective module or modules 1714.


The processor 1704 may be a device for executing software, particularly that stored in the memory 1702. The processor may be a custom made or commercially available processor, a central processing unit (CPU), a semiconductor based microprocessor (in the form of a microchip or chip set), or generally any device for executing software instructions.


In some embodiments, the processor 1704 may execute one or more of the modules 1714 to provide a user of the computing system 1700 with a user interface such as a graphical user interface. One or more of the modules 1714 may be loaded into a shell that provides the user interface. In some embodiments, the processor 1704 may execute the validation logic 1712 at a time before loading a respective module 1714 into a shell such as, but not limited to, during bootup of the computing system 1700, during a login procedure, and/or during an initialization period of an application or module.


The I/O devices 1706 include, among other things, a computer mouse, keyboard, input pad, display devices, touch screens, and speakers.


While the example embodiments have been described with relation to a gaming environment, it will be appreciated that the above concepts can also be applied to any system in which modules and/or plugins are installed at run-time in an executable application.


The foregoing description, for purposes of explanation, uses specific nomenclature and formula to provide a thorough understanding of the embodiments of the invention. It should be apparent to those of skill in the art that the specific details are not required in order to practice the invention. The embodiments have been chosen and described to best explain the principles of the invention and its practical application, thereby enabling others of skill in the art to utilize the invention, and various embodiments with various modifications as are suited to the particular use contemplated. Thus, the foregoing disclosure is not intended to be exhaustive or to limit the invention to the precise forms disclosed, and those of skill in the art recognize that many modifications and variations are possible in view of the above teachings.

Claims
  • 1. In a networked gaming environment, a computer implemented method of providing security to a workstation having a processor and a processor-readable storage medium with a plurality of modules stored therein, the plurality of modules consisting of a first number (N, where 1<N) of modules, the method comprising: executing a user-interface application with the processor of the workstation, the user-interface application being stored in the storage medium and having an application shell for a second number (M, where 1<M≦N) of modules, the second number of modules consisting of a number of the first number of modules of the plurality of modules, and the application shell providing a desktop window on a display device; andfor each one of the second number of modules, retrieving a respective module of the second number of modules from the storage medium and a corresponding respective authentic module validation indicator from a database of the user-interface application, the database stored in the storage medium,calculating a respective comparison module validation indicator based at least on the retrieved respective module,comparing the respective comparison module validation indicator with the respective authentic module validation indicator, andloading the respective retrieved module in the application shell only if the respective comparison module validation indicator and the respective authentic module validation indicator are the same.
  • 2. The method of claim 1, further comprising: determining whether a first user is authorized for a respective module of the plurality of modules; andpreventing the respective module from being loaded in the application shell if the first user is not authorized for the respective module.
  • 3. The method of claim 2 wherein determining whether the first user is authorized for a respective module of the plurality of modules further includes: receiving authentication information indicative of whether the first user is or is not authorized for the respective module from a remote server; anddetermining whether the first user is or is not authorized based at least on the received authentication information.
  • 4. The method of claim 2, further comprising: retrieving a respective user profile from a plurality of user profiles stored in the storage medium of the workstation, the plurality of user profiles including a respective user profile of the first user and at least a respective profile of at least a second user; anddetermining whether the first user is authorized for a respective module of the plurality of modules based at least on the respective profile of the first user.
  • 5. The method of claim 4, further comprising: prior to retrieving a corresponding respective authentic module validation indicator, decrypting a first password stored in the storage medium, andopening a first connection to the database from which the respective authentic module validation indicator is retrieved based at least on the first password.
  • 6. The method of claim 5, further comprising: associating a first password with the first user;encrypting the first password; andstoring the encrypted first password in the storage medium, wherein the encrypted first password stored in the storage medium is one of a plurality of encrypted passwords, the plurality of encrypted passwords including a second encrypted password being associated with the at least second user.
  • 7. The method of claim 5, further comprising: determining whether the second user is authorized for a respective module of the plurality of modules based at least on the respective profile of the second user.
  • 8. The method of claim 7, further comprising: prior to retrieving a corresponding respective authentic module validation indicator, decrypting a second password stored in the storage medium, andopening a second connection to the database from which the respective authentic module validation indicator is retrieved based at least on the second password.
  • 9. A networked gaming system, comprising: a network;a plurality of gaming machines coupled to the network; anda workstation communicatively coupled to the plurality of gaming machines via the network, the workstation comprising at least one processor and at least one processor-readable storage medium that stores a user-interface application having an application shell, a plurality of modules for the application shell, the plurality of modules consisting of a first number (N, where 1<N) of modules, and instructions that cause the at least one processor to provide a respective graphical user interface, by:initializing the application shell for a second number (M, where 1<M≦N) of modules in response to input from a respective user of the plurality of users, the second number of modules consisting of a number of the first number of modules of the plurality of modules; andfor each respective module of the second number of modules, determining whether a respective user of the plurality of users is authorized for the respective module of the second number of modules,determining whether the respective module of the second number of modules is valid, andloading the respective module in the application shell only if both the respective module is valid and the respective user is authorized for the respective module.
  • 10. The networked gaming system of claim 9 wherein the at least one processor-readable storage medium stores instructions that cause the at least one processor to provide a respective graphical user interface, wherein determining whether the respective module of the second number of modules is valid includes retrieving the respective module of the second number of modules from the storage medium and a corresponding respective authentic module validation indicator from a database of the user-interface application, the database stored in the storage medium;calculating a respective comparison module validation indicator based at least on the retrieved respective module; andcomparing the comparison module validation indicator with the authentic module validation indicator, wherein the respective module is valid only if the comparison module validation indicator and the authentic module validation indicator are the same.
  • 11. The networked gaming system of claim 10 wherein the at least one processor-readable storage medium stores instructions that cause the at least one processor to provide a respective graphical user interface, wherein determining whether a respective user of the plurality of users is authorized for the respective module of the second number of modules includes, receiving authentication information indicative of whether the respective user is or is not authorized for the respective module from a remote server; anddetermining whether the first user is or is not authorized based at least on the received authentication information.
  • 12. The networked gaming system of claim 11 wherein the at least one processor-readable storage medium stores instructions that cause the at least one processor to provide a respective graphical user interface, further by: retrieving a respective user profile from a plurality of user profiles stored in the storage medium of the workstation; anddetermining whether the respective user is authorized for a respective module of the plurality of modules based at least on the respective profile of the respective user.
  • 13. The networked gaming system of claim 11 wherein the at least one processor-readable storage medium stores instructions that cause the at least one processor to provide a respective graphical user interface, further by: decrypting a password stored in the storage medium and associated with the respective user; andopening a connection to the database from which the respective authentic module validation indicator is retrieved based at least on the password.
  • 14. The networked gaming system of claim 13 wherein the at least one processor-readable storage medium stores instructions that cause the at least one processor to provide a respective graphical user interface, further by: associating the password with the respective user;encrypting the password; andstoring the encrypted password in the storage medium, wherein the encrypted password stored in the storage medium is one of a plurality of encrypted passwords, each one of the encrypted passwords being associated with another respective user.
  • 15. A module validation system that validates modules used by a shell application providing a graphical user interface, comprising: a processor-readable storage medium having a database and a plurality of modules stored therein and at least one client database having a respective authentic module validation indicator associated with a respective module included therewith; anda database module enumerator that retrieves a list of modules available for use by a respective user, and for each module in the list of modules, compares a respective comparison module validation indicator with a respective authentic module validation indicator, and loads the respective module in the shell application only if the respective comparison module validation indicator and the respective authentic module validation indicator are the same.
  • 16. The module validation system of claim 15, further comprising: a database installer that installs the at least one client database in the storage medium.
  • 17. The module validation system of claim 15, further comprising: a module installer that installs the modules in the storage medium.
  • 18. The module validation system of claim 15 wherein the database module enumerator generates the respective comparison module validation indicator based at least on a respective corresponding module stored in the storage medium.
  • 19. The module validation system of claim 18 wherein the database module enumerator generates the respective comparison module validation indicator based at least on a secure hash function.
CROSS REFERENCE TO RELATED APPLICATIONS

This application claims benefit under 35 U.S.C. 119(e) of U.S. Patent Application Ser. No. 61/115,690 filed Nov. 18, 2008 and entitled “Module Validation,” which is incorporated herein by reference in its entirety.

US Referenced Citations (487)
Number Name Date Kind
4339798 Hedges et al. Jul 1982 A
4373726 Churchill et al. Feb 1983 A
4592377 Paulsen et al. Jun 1986 A
4725079 Koza et al. Feb 1988 A
4832341 Muller et al. May 1989 A
4948138 Pease et al. Aug 1990 A
5083800 Lockton Jan 1992 A
5179517 Sarbin et al. Jan 1993 A
5199710 Lamle Apr 1993 A
5258837 Gormley Nov 1993 A
5275400 Weingardt et al. Jan 1994 A
5321241 Craine Jun 1994 A
5324035 Morris et al. Jun 1994 A
5326104 Pease et al. Jul 1994 A
5386103 DeBan et al. Jan 1995 A
5398932 Eberhardt et al. Mar 1995 A
5472194 Breeding et al. Dec 1995 A
5493613 Denno et al. Feb 1996 A
5505449 Eberhardt et al. Apr 1996 A
5507489 Reibel et al. Apr 1996 A
5562284 Stevens Oct 1996 A
5580311 Haste, III Dec 1996 A
5605334 McCrea, Jr. Feb 1997 A
5605506 Hoorn et al. Feb 1997 A
5613680 Groves et al. Mar 1997 A
5613912 Slater Mar 1997 A
5643086 Alcorn et al. Jul 1997 A
5643088 Vaughn et al. Jul 1997 A
5651548 French et al. Jul 1997 A
5655961 Acres et al. Aug 1997 A
5707287 McCrea, Jr. Jan 1998 A
5735742 French Apr 1998 A
5737418 Saffari et al. Apr 1998 A
5741183 Acres et al. Apr 1998 A
5745110 Ertemalp Apr 1998 A
5759102 Pease et al. Jun 1998 A
5770533 Franchi Jun 1998 A
5779545 Berg et al. Jul 1998 A
5800268 Molnick Sep 1998 A
5813912 Shultz Sep 1998 A
5823879 Goldberg et al. Oct 1998 A
5830067 Graves et al. Nov 1998 A
5830068 Brenner et al. Nov 1998 A
5850447 Peyret Dec 1998 A
5851149 Xidos et al. Dec 1998 A
5890963 Yen Apr 1999 A
5911626 McCrea, Jr. Jun 1999 A
5919090 Mothwurf Jul 1999 A
5936527 Isaacman et al. Aug 1999 A
5941769 Order Aug 1999 A
5957776 Hoehne Sep 1999 A
5971851 Pascal et al. Oct 1999 A
5999808 LaDue Dec 1999 A
6001016 Walker et al. Dec 1999 A
6042150 Daley Mar 2000 A
6047322 Vaid et al. Apr 2000 A
6068553 Parker May 2000 A
6077161 Wisler Jun 2000 A
6080063 Khosla Jun 2000 A
6089980 Gauselmann Jul 2000 A
6093103 McCrea, Jr. Jul 2000 A
6102799 Stupak Aug 2000 A
6104815 Alcorn et al. Aug 2000 A
6106396 Alcorn et al. Aug 2000 A
6110041 Walker et al. Aug 2000 A
6110043 Olsen Aug 2000 A
6117012 McCrea, Jr. Sep 2000 A
6135887 Pease et al. Oct 2000 A
6146273 Olsen Nov 2000 A
6149522 Alcorn et al. Nov 2000 A
6152824 Rothschild et al. Nov 2000 A
6165069 Sines et al. Dec 2000 A
6166763 Rhodes et al. Dec 2000 A
6168523 Piechowiak et al. Jan 2001 B1
6183366 Goldberg et al. Feb 2001 B1
6186892 Frank et al. Feb 2001 B1
6210277 Stefan Apr 2001 B1
6217447 Lofink et al. Apr 2001 B1
6219836 Wells et al. Apr 2001 B1
6234898 Belamant et al. May 2001 B1
6244958 Acres Jun 2001 B1
6251014 Stockdale et al. Jun 2001 B1
6254483 Acres Jul 2001 B1
6254484 McCrea, Jr. Jul 2001 B1
6264109 Chapet et al. Jul 2001 B1
6264561 Saffari et al. Jul 2001 B1
6275586 Kelly Aug 2001 B1
6287202 Pascal et al. Sep 2001 B1
6302793 Fertitta, III et al. Oct 2001 B1
6312332 Walker et al. Nov 2001 B1
6346044 McCrea, Jr. Feb 2002 B1
6362836 Shaw et al. Mar 2002 B1
6383076 Tiedeken May 2002 B1
6389126 Bjornberg et al. May 2002 B1
6394900 McGlone et al. May 2002 B1
6400272 Holtzman et al. Jun 2002 B1
6409602 Wiltshire et al. Jun 2002 B1
6439996 LeMay et al. Aug 2002 B2
6443839 Stockdale et al. Sep 2002 B2
6459882 Palermo et al. Oct 2002 B1
6460848 Soltys et al. Oct 2002 B1
6464584 Oliver Oct 2002 B2
6488581 Stockdale Dec 2002 B1
6488585 Wells et al. Dec 2002 B1
6503147 Stockdale et al. Jan 2003 B1
6505772 Mollett et al. Jan 2003 B1
6508709 Karmarkar Jan 2003 B1
6508710 Paravia et al. Jan 2003 B1
6517435 Soltys et al. Feb 2003 B2
6517436 Soltys et al. Feb 2003 B2
6520857 Soltys et al. Feb 2003 B2
6527271 Soltys et al. Mar 2003 B2
6527638 Walker et al. Mar 2003 B1
6530836 Soltys et al. Mar 2003 B2
6530837 Soltys et al. Mar 2003 B2
6533276 Soltys et al. Mar 2003 B2
6533662 Soltys et al. Mar 2003 B2
6575829 Coleman et al. Jun 2003 B2
6575833 Stockdale Jun 2003 B1
6578847 Hedrick et al. Jun 2003 B1
6579180 Soltys et al. Jun 2003 B2
6579181 Soltys et al. Jun 2003 B2
6581747 Charlier et al. Jun 2003 B1
6585598 Nguyen et al. Jul 2003 B2
6595857 Soltys et al. Jul 2003 B2
6607441 Acres Aug 2003 B1
6609978 Paulsen Aug 2003 B1
6612928 Bradford et al. Sep 2003 B1
6628939 Paulsen Sep 2003 B2
6629184 Berg et al. Sep 2003 B1
6629591 Griswold et al. Oct 2003 B1
6629889 Mothwurf Oct 2003 B2
6638169 Wilder et al. Oct 2003 B2
6638170 Crumby Oct 2003 B1
6641484 Oles et al. Nov 2003 B2
6645077 Rowe Nov 2003 B2
6652378 Cannon et al. Nov 2003 B2
6656048 Olsen Dec 2003 B2
6663490 Soltys et al. Dec 2003 B2
6675152 Prasad et al. Jan 2004 B1
6676522 Rowe et al. Jan 2004 B2
6682421 Rowe et al. Jan 2004 B1
6682423 Brosnan et al. Jan 2004 B2
6685564 Oliver Feb 2004 B2
6685567 Cockerille et al. Feb 2004 B2
6688979 Soltys et al. Feb 2004 B2
6699128 Beadell et al. Mar 2004 B1
6702291 Grebler et al. Mar 2004 B2
6702672 Angell et al. Mar 2004 B1
6712695 Mothwurf et al. Mar 2004 B2
6712696 Soltys et al. Mar 2004 B2
6718361 Basani et al. Apr 2004 B1
6726099 Becker et al. Apr 2004 B2
6728740 Kelly et al. Apr 2004 B2
6739975 Nguyen et al. May 2004 B2
6743102 Fiechter et al. Jun 2004 B1
6745330 Maillot Jun 2004 B1
6746330 Cannon Jun 2004 B2
6752312 Chamberlain et al. Jun 2004 B1
6755741 Rafaeli Jun 2004 B1
6758751 Soltys et al. Jul 2004 B2
6800029 Rowe et al. Oct 2004 B2
6811488 Paravia et al. Nov 2004 B2
6817948 Pascal et al. Nov 2004 B2
6823419 Berg et al. Nov 2004 B2
6837789 Garahi et al. Jan 2005 B2
6846238 Wells Jan 2005 B2
6848994 Knust et al. Feb 2005 B1
6866581 Martinek et al. Mar 2005 B2
6866586 Oberberger et al. Mar 2005 B2
6884173 Gauselmann Apr 2005 B2
6884174 Lundy et al. Apr 2005 B2
6896618 Benoy et al. May 2005 B2
6899627 Lam et al. May 2005 B2
6905411 Nguyen et al. Jun 2005 B2
6908387 Hedrick et al. Jun 2005 B2
6962530 Jackson Nov 2005 B2
6971956 Rowe et al. Dec 2005 B2
6972682 Lareau et al. Dec 2005 B2
6993587 Basani et al. Jan 2006 B1
6997803 LeMay et al. Feb 2006 B2
7005985 Steeves Feb 2006 B1
7025674 Adams et al. Apr 2006 B2
7035626 Luciano, Jr. Apr 2006 B1
7050056 Meyringer May 2006 B2
7062470 Prasad et al. Jun 2006 B2
7086947 Walker et al. Aug 2006 B2
7099035 Brooks et al. Aug 2006 B2
7112138 Hedrick et al. Sep 2006 B2
7114718 Grauzer et al. Oct 2006 B2
7116782 Jackson et al. Oct 2006 B2
7147558 Giobbi Dec 2006 B2
7168089 Nguyen et al. Jan 2007 B2
7179170 Martinek et al. Feb 2007 B2
7186181 Rowe Mar 2007 B2
7197765 Chan et al. Mar 2007 B2
7198571 LeMay et al. Apr 2007 B2
RE39644 Alcorn et al. May 2007 E
7271727 Steeves Sep 2007 B2
7291068 Bryant et al. Nov 2007 B2
7303475 Britt et al. Dec 2007 B2
7309065 Yoseloff et al. Dec 2007 B2
7311605 Moser Dec 2007 B2
7329185 Conover et al. Feb 2008 B2
7330822 Robson et al. Feb 2008 B1
7331520 Silva et al. Feb 2008 B2
7337330 Gatto et al. Feb 2008 B2
7346682 Basani et al. Mar 2008 B2
7349920 Feinberg et al. Mar 2008 B1
7351147 Stockdale et al. Apr 2008 B2
7356770 Jackson Apr 2008 B1
7363342 Wang et al. Apr 2008 B1
7364510 Walker et al. Apr 2008 B2
7370282 Cary May 2008 B2
7384339 LeMay et al. Jun 2008 B2
7398327 Lee Jul 2008 B2
7410422 Fine Aug 2008 B2
7419428 Rowe Sep 2008 B2
7427233 Walker et al. Sep 2008 B2
7427236 Kaminkow et al. Sep 2008 B2
7434805 Grauzer et al. Oct 2008 B2
7435179 Ford Oct 2008 B1
7438221 Washington et al. Oct 2008 B2
7438643 Brosnan et al. Oct 2008 B2
7455591 Nguyen Nov 2008 B2
7460863 Steelberg et al. Dec 2008 B2
7465231 Lewin et al. Dec 2008 B2
7473178 Boyd et al. Jan 2009 B2
7483394 Chang et al. Jan 2009 B2
7500915 Wolf et al. Mar 2009 B2
7510474 Carter, Sr. Mar 2009 B2
7515718 Nguyen et al. Apr 2009 B2
7534169 Amaitis et al. May 2009 B2
7549576 Alderucci et al. Jun 2009 B2
7559080 Bhargavan et al. Jul 2009 B2
7566274 Johnson et al. Jul 2009 B2
7575234 Soltys et al. Aug 2009 B2
7577847 Nguyen et al. Aug 2009 B2
7578739 Gauselmann Aug 2009 B2
7585217 Lutnick et al. Sep 2009 B2
7594030 Teodosiu et al. Sep 2009 B2
7611407 Itkis et al. Nov 2009 B1
7611409 Muir et al. Nov 2009 B2
7617151 Rowe Nov 2009 B2
7618317 Jackson Nov 2009 B2
7629886 Steeves Dec 2009 B2
7634550 Wolber et al. Dec 2009 B2
7637810 Amaitis et al. Dec 2009 B2
7644861 Alderucci et al. Jan 2010 B2
7648414 McNutt et al. Jan 2010 B2
7674179 Baerlocher et al. Mar 2010 B2
7682249 Winans et al. Mar 2010 B2
7684874 Schlottmann et al. Mar 2010 B2
7685516 Fischer Mar 2010 B2
7685593 Solomon et al. Mar 2010 B2
7686688 Friedman et al. Mar 2010 B2
7690995 Frankulin et al. Apr 2010 B2
7699697 Darrah et al. Apr 2010 B2
7699703 Muir et al. Apr 2010 B2
7702719 Betz et al. Apr 2010 B1
7722453 Lark et al. May 2010 B2
7730198 Ruppert et al. Jun 2010 B2
7744462 Grav et al. Jun 2010 B2
7747741 Basani et al. Jun 2010 B2
7753790 Nguyen et al. Jul 2010 B2
7769877 McBride et al. Aug 2010 B2
7778635 Crookham et al. Aug 2010 B2
7780525 Walker et al. Aug 2010 B2
7780526 Nguyen et al. Aug 2010 B2
7780529 Rowe et al. Aug 2010 B2
7783881 Morrow et al. Aug 2010 B2
7785204 Wells et al. Aug 2010 B2
7824267 Cannon et al. Nov 2010 B2
7828649 Cuddy et al. Nov 2010 B2
7841946 Walker et al. Nov 2010 B2
7846020 Walker et al. Dec 2010 B2
7850528 Wells Dec 2010 B2
7857702 Hilbert Dec 2010 B2
7862425 Cavagna Jan 2011 B2
7874920 Hornik et al. Jan 2011 B2
7874921 Baszucki et al. Jan 2011 B2
7898679 Brack et al. Mar 2011 B2
7901294 Walker et al. Mar 2011 B2
7937464 Ruppert et al. May 2011 B2
8028046 Elliott et al. Sep 2011 B2
8057297 Silvestro Nov 2011 B2
8073657 Moore, III et al. Dec 2011 B2
8117461 Bigelow et al. Feb 2012 B2
20010019966 Idaka Sep 2001 A1
20020004824 Cuan et al. Jan 2002 A1
20020111213 McEntee et al. Aug 2002 A1
20020113371 Snow Aug 2002 A1
20020115487 Wells Aug 2002 A1
20020142844 Kerr Oct 2002 A1
20020142846 Paulsen Oct 2002 A1
20030004871 Rowe Jan 2003 A1
20030032474 Kaminkow Feb 2003 A1
20030042679 Snow Mar 2003 A1
20030064798 Grauzer et al. Apr 2003 A1
20030075869 Breeding et al. Apr 2003 A1
20030078103 LeMay et al. Apr 2003 A1
20030090064 Hoyt et al. May 2003 A1
20030104865 Itkis et al. Jun 2003 A1
20030130024 Darby Jul 2003 A1
20030195037 Vuong et al. Oct 2003 A1
20030203755 Jackson Oct 2003 A1
20030206548 Bannai et al. Nov 2003 A1
20030224858 Yoseloff et al. Dec 2003 A1
20030228912 Wells et al. Dec 2003 A1
20030232651 Huard et al. Dec 2003 A1
20040002386 Wolfe et al. Jan 2004 A1
20040002388 Larsen et al. Jan 2004 A1
20040029635 Giobbi Feb 2004 A1
20040043815 Kaminkow Mar 2004 A1
20040043820 Schlottmann Mar 2004 A1
20040048671 Rowe Mar 2004 A1
20040068654 Cockerille et al. Apr 2004 A1
20040082385 Silva et al. Apr 2004 A1
20040087375 Gelinotte May 2004 A1
20040092310 Brosnan et al. May 2004 A1
20040106452 Nguyen et al. Jun 2004 A1
20040110119 Riconda et al. Jun 2004 A1
20040127291 George et al. Jul 2004 A1
20040133485 Schoonmaker et al. Jul 2004 A1
20040142744 Atkinson et al. Jul 2004 A1
20040166940 Rothschild Aug 2004 A1
20040185936 Block et al. Sep 2004 A1
20040219982 Khoo et al. Nov 2004 A1
20040229682 Gelinotte Nov 2004 A1
20050026680 Gururajan Feb 2005 A1
20050043094 Nguyen et al. Feb 2005 A1
20050051965 Gururajan Mar 2005 A1
20050054408 Steil et al. Mar 2005 A1
20050054438 Rothschild et al. Mar 2005 A1
20050054445 Gatto et al. Mar 2005 A1
20050070358 Angell et al. Mar 2005 A1
20050080898 Block Apr 2005 A1
20050116020 Smolucha et al. Jun 2005 A1
20050119052 Russell et al. Jun 2005 A1
20050124411 Schneider et al. Jun 2005 A1
20050153778 Nelson et al. Jul 2005 A1
20050164761 Tain Jul 2005 A1
20050176507 Ephrati Aug 2005 A1
20050192099 Nguyen et al. Sep 2005 A1
20050222891 Chan et al. Oct 2005 A1
20050239542 Olsen Oct 2005 A1
20050282626 Manfredi et al. Dec 2005 A1
20060004618 Brixius Jan 2006 A1
20060009282 George et al. Jan 2006 A1
20060015716 Thornton et al. Jan 2006 A1
20060019745 Benbrahim Jan 2006 A1
20060026499 Weddle Feb 2006 A1
20060035707 Nguyen et al. Feb 2006 A1
20060035713 Cockerille et al. Feb 2006 A1
20060046849 Kovacs Mar 2006 A1
20060116208 Chen et al. Jun 2006 A1
20060121970 Khal Jun 2006 A1
20060183541 Okada et al. Aug 2006 A1
20060195847 Amano et al. Aug 2006 A1
20060196686 Gatto et al. Sep 2006 A1
20060205508 Green Sep 2006 A1
20060247013 Walker et al. Nov 2006 A1
20060247057 Green et al. Nov 2006 A1
20060248161 O'Brien et al. Nov 2006 A1
20060253702 Lowell et al. Nov 2006 A1
20060277487 Poulsen et al. Dec 2006 A1
20070004501 Brewer et al. Jan 2007 A1
20070015583 Tran Jan 2007 A1
20070026935 Wolf et al. Feb 2007 A1
20070032288 Nelson et al. Feb 2007 A1
20070033247 Martin Feb 2007 A1
20070054740 Salls et al. Mar 2007 A1
20070057453 Soltys et al. Mar 2007 A1
20070057454 Fleckenstein Mar 2007 A1
20070057469 Grauzer et al. Mar 2007 A1
20070060259 Pececnik Mar 2007 A1
20070060307 Mathis et al. Mar 2007 A1
20070060365 Tien et al. Mar 2007 A1
20070077995 Oak et al. Apr 2007 A1
20070082737 Morrow et al. Apr 2007 A1
20070093298 Brunet Apr 2007 A1
20070105628 Arbogast et al. May 2007 A1
20070111775 Yoseloff May 2007 A1
20070111791 Arbogast et al. May 2007 A1
20070111794 Hogan et al. May 2007 A1
20070117608 Roper et al. May 2007 A1
20070124483 Marples et al. May 2007 A1
20070129145 Blackburn et al. Jun 2007 A1
20070150329 Brook et al. Jun 2007 A1
20070155490 Phillips et al. Jul 2007 A1
20070167235 Naicker Jul 2007 A1
20070191102 Coliz et al. Aug 2007 A1
20070192748 Martin et al. Aug 2007 A1
20070198418 MacDonald et al. Aug 2007 A1
20070208816 Baldwin et al. Sep 2007 A1
20070214030 Shear et al. Sep 2007 A1
20070218998 Arbogast et al. Sep 2007 A1
20070235521 Mateen et al. Oct 2007 A1
20070241497 Soltys et al. Oct 2007 A1
20070241498 Soltys Oct 2007 A1
20070243925 LeMay et al. Oct 2007 A1
20070243927 Soltys Oct 2007 A1
20070243935 Huizinga Oct 2007 A1
20070259709 Kelly et al. Nov 2007 A1
20070259711 Thomas Nov 2007 A1
20070287535 Soltys Dec 2007 A1
20070298868 Soltys Dec 2007 A1
20080004108 Klinkhammer Jan 2008 A1
20080009344 Graham et al. Jan 2008 A1
20080026832 Stevens et al. Jan 2008 A1
20080026848 Byng Jan 2008 A1
20080038035 Shuldman et al. Feb 2008 A1
20080045341 Englman Feb 2008 A1
20080064501 Patel Mar 2008 A1
20080065590 Castro et al. Mar 2008 A1
20080076572 Nguyen et al. Mar 2008 A1
20080085772 Iddings et al. Apr 2008 A1
20080090651 Baerlocher Apr 2008 A1
20080096659 Kreloff et al. Apr 2008 A1
20080108433 DiMichele et al. May 2008 A1
20080113764 Soltys May 2008 A1
20080113773 Johnson et al. May 2008 A1
20080113781 Soltys et al. May 2008 A1
20080119284 Luciano, Jr. et al. May 2008 A1
20080146337 Halonen et al. Jun 2008 A1
20080153599 Atashband et al. Jun 2008 A1
20080153600 Swarna Jun 2008 A1
20080154916 Atashband Jun 2008 A1
20080155665 Ruppert et al. Jun 2008 A1
20080162729 Ruppert Jul 2008 A1
20080171588 Atashband Jul 2008 A1
20080171598 Deng Jul 2008 A1
20080200255 Eisele Aug 2008 A1
20080243697 Irving et al. Oct 2008 A1
20080244565 Levidow et al. Oct 2008 A1
20080261701 Lewin et al. Oct 2008 A1
20080287197 Ruppert et al. Nov 2008 A1
20080293494 Adiraju et al. Nov 2008 A1
20080311971 Dean Dec 2008 A1
20080318685 Oak et al. Dec 2008 A9
20090005176 Morrow et al. Jan 2009 A1
20090005177 Kishi et al. Jan 2009 A1
20090011833 Seelig et al. Jan 2009 A1
20090029775 Ruppert et al. Jan 2009 A1
20090325708 Matsumura Feb 2009 A9
20090115133 Kelly et al. May 2009 A1
20090117994 Kelly et al. May 2009 A1
20090118001 Kelly et al. May 2009 A1
20090118005 Kelly et al. May 2009 A1
20090118006 Kelly et al. May 2009 A1
20090124329 Palmisano May 2009 A1
20090124392 Ruppert et al. May 2009 A1
20090124394 Swarna May 2009 A1
20090125603 Atashband et al. May 2009 A1
20090131144 Allen May 2009 A1
20090131163 Arbogast et al. May 2009 A1
20090132720 Ruppert et al. May 2009 A1
20090170594 Delaney et al. Jul 2009 A1
20090176556 Gagner et al. Jul 2009 A1
20090176580 Herrmann et al. Jul 2009 A1
20090181776 Deng Jul 2009 A1
20090253483 Pacey et al. Oct 2009 A1
20090270170 Patton Oct 2009 A1
20090275394 Young et al. Nov 2009 A1
20090275400 Rehm et al. Nov 2009 A1
20090275401 Allen et al. Nov 2009 A1
20090275402 Backover et al. Nov 2009 A1
20090276341 McMahan et al. Nov 2009 A1
20090298583 Jones Dec 2009 A1
20090307069 Meyerhofer Dec 2009 A1
20100016067 White et al. Jan 2010 A1
20100016068 White et al. Jan 2010 A1
20100029385 Garvey et al. Feb 2010 A1
20100048291 Warkentin Feb 2010 A1
20100093441 Rajaraman et al. Apr 2010 A1
20100124990 Crowder May 2010 A1
20100125851 Singh et al. May 2010 A1
20100130280 Arezina et al. May 2010 A1
20100131772 Atashband et al. May 2010 A1
20100151926 Ruppert et al. Jun 2010 A1
20100161798 Ruppert et al. Jun 2010 A1
20100234104 Ruppert et al. Sep 2010 A1
20100248842 Ruppert Sep 2010 A1
20110009184 Byng Jan 2011 A1
20110009188 Adiraju et al. Jan 2011 A1
20110124417 Baynes et al. May 2011 A1
20120110649 Murphy May 2012 A1
Foreign Referenced Citations (15)
Number Date Country
19940954 Mar 2001 DE
1074955 Feb 2001 EP
1291045 Mar 2003 EP
1463008 Sep 2004 EP
2380143 Apr 2003 GB
8255059 Oct 1996 JP
2001-0084838 Sep 2001 KR
2002-0061793 Jul 2002 KR
2003-0091635 Dec 2003 KR
9603188 Feb 1996 WO
9636253 Nov 1996 WO
0205914 Jan 2002 WO
03060846 Jul 2003 WO
2005035084 Apr 2005 WO
2007033207 Mar 2007 WO
Non-Patent Literature Citations (15)
Entry
Bally Technologies, Inc., iVIEW, http://ballytech.com/systems/product.cfm?id=9, download date Nov. 6, 2007, 2 pages.
Bally TMS, “MP21—Automated Table Tracking/Features,” 2 pages, Nov. 2005.
Bally TMS, “MPBacc—Specifications/Specifications,” 2 pages, Nov. 2005.
Bally TMS, “MPLite—Table Management System/Features,” 2 pages, Nov. 2005.
Bulavsky, J., “Tracking the Tables,” Casino Journal, May 2004, pp. 44-47, accessed Dec. 21, 2005, URL = http://www.ascendgaming.com/cj/vendors—manufacturers—table/Trackin916200411141AM.htm, 5 pages.
Burke, A., “Tracking the Tables,” reprinted from International Gaming & Wagering Business, Aug. 2003, 4 pages.
Gros, R., “All You Ever Wanted to Know About Table Games,” reprinted from Global Gaming Business, Aug. 1, 2003, 2 pages.
Hewlett Packard Handhelds, accessed Sep. 8, 2003, URL = http:/www.shopping.hp.com/cgi-bin/hpdirect/shopping/scripts/home/store—access.jsp?temp . . ., 2 pages.
International Guild of Hospitality & Restaurant Managers, “Shuffle Master, Inc. (NasdaqNM:SHFL),” accessed Dec. 30, 2003, URL = http://hospitalityguide.com/Financial/Casinos/Shuffle.htm, 3 pages.
MagTek, “Port Powered Swipe Reader,” Technical Reference Manual, Manual Part No. 99875094 Rev 12, Jun. 2003, 20 pages.
Mikohn, “Mikohn Tablelink—The Industry's Premier Table Tracking Solution Delivers Improvements Straight to the Bottom Line,” 2 pages, before Jan. 1, 2004.
Palermo, V. “Near-field magnetic comms emerges,” EE Times Design, Oct. 31, 2003.
Semtek PDA & Handheld Devices, Compaq iSwipe™ Magnetic Card Reader, accessed Sep. 8, 2003, URL = http:/www.semtek.com/products/iswipe.html, 3 pages.
Terdiman, D., “Who's Holding the Aces Now?”, reprinted from Wired News, Aug. 18, 2003, 2 pages.
Winkler, C., “Product Spotlight: MindPlay,” reprinted from Gaming and Leisure Technology, Fall 2003, 2 pages.
Related Publications (1)
Number Date Country
20100131772 A1 May 2010 US
Provisional Applications (1)
Number Date Country
61115690 Nov 2008 US