US9098715B1 - Method and system for exchanging content between applications - Google Patents
Method and system for exchanging content between applications Download PDFInfo
- Publication number
- US9098715B1 US9098715B1 US14/525,932 US201414525932A US9098715B1 US 9098715 B1 US9098715 B1 US 9098715B1 US 201414525932 A US201414525932 A US 201414525932A US 9098715 B1 US9098715 B1 US 9098715B1
- Authority
- US
- United States
- Prior art keywords
- secure
- content
- application
- unsecure
- applications
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/93—Document management systems
-
- G06F17/30011—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/105—Multiple levels of security
Definitions
- the present description relates to methods and systems for controlling the sharing of content between applications and more particularly, for controlling the sharing of content between secure applications and unsecure applications.
- a method of enabling the sharing of content between secure applications and unsecure applications is described herein.
- content requests from secure applications and unsecure applications may be received.
- listings of options that have the ability to satisfy the content requests from the requesting secure applications or the requesting unsecure applications can be returned. Selections of the options of the listings of options can be received through the requesting secure applications or the requesting unsecure applications.
- content locations that are to be returned to the secure applications can be selectively modified such that subsequent content requests that involve the modified content locations are identified as being associated with an unsecure option.
- the unsecure option may be an unsecure application, and modifying the content locations that are to be returned can include appending a character to a uniform resource identifier associated with the unsecure application.
- some of the content requests may be requests to retrieve content for the requesting secure applications or the requesting unsecure applications.
- some of the content requests may be requests to share content from the requesting secure applications or the requesting unsecure applications.
- the listing of options may include both secure and unsecure applications that have the ability to satisfy the content request from the requesting secure application. Conversely, if the content request is from an unsecure application to access content, the listing of options may include only unsecure applications that have the ability to satisfy the content request from the requesting unsecure application.
- the content request may be a request from a secure application to retrieve content.
- a conventional content request for unsecure options that have the ability to satisfy the conventional content request can be generated.
- a secure content request for secure options that have the ability to satisfy the secure content request can be generated in this example.
- returning the listings of options that have the ability to satisfy the content requests can include returning a combined listing of options that lists the unsecure options that have the ability to satisfy the conventional content request and the secure options that have the ability to satisfy the secure content request.
- the content requests from the secure applications and only from the secure applications can be selectively modified to ensure that the unsecure applications are prevented from processing such content requests.
- content locations that are to be returned to the secure applications and that are associated with a secure option can be modified.
- a method of exchanging content between a secure application and an unsecure application is also described herein.
- a content request to access content can be generated through a secure application.
- a combined listing that includes at least one secure application and at least one unsecure application, both of which have the ability to respond to the content request, can be returned.
- a selection of the unsecure application can be received.
- a content location that is to be returned to the secure application from the unsecure application can be modified to identify the content location as being associated with an unsecure application.
- the content request to access content is an intent and the content location is a uniform resource identifier.
- modifying the content location can include appending a character to the uniform resource identifier.
- a content request to share content can be generated through the secure application.
- the content request to share content can be modified such that any unsecure applications are prevented from being able to respond to the content request to share content from the secure application.
- generating the content request to access content can include generating a conventional content request to access content from unsecure applications and generating a secure content request to access content from secure applications. Further, the unsecure applications may be unable to respond to the secure content request to access content.
- the secure application and the unsecure application can be registered with a system process to indicate to the system process that the secure application and the unsecure application are capable of responding to the content request to access content. The unsecure application can be launched in response to the selection of the unsecure application.
- the selected unsecure application can be installed on a computing device along with a corresponding secure application.
- a process of distinguishing between the selected unsecure application and the corresponding secure application can be performed based on the modified content location.
- a computing device configured to enable the exchange of content is also described herein.
- the computing device can include an interface that is configured to display secure applications and unsecure applications that are installed on the computing device.
- the computing device can also include memory that is configured to store data associated with the secure applications and the unsecure applications and can further include a processing unit.
- the processing unit can be configured to receive a content request to access content in which the content request is from a requesting secure application and to cause a combined list of one or more other secure applications and one or more unsecure applications to be displayed on the interface.
- the processing unit can also be configured to receive a selection of an unsecure application of the combined list and to cause a content location to be modified such that the modified content location indicates that the modified content location is associated with an unsecure application.
- the content request to access content is an intent
- the content location is a uniform resource identifier
- the processing unit can be further configured to cause the content location to be modified by appending a character to the uniform resource identifier.
- the content request to access content can be made up of at least two requests, one of which is a secure request to access content and another of which is an unsecure request to access content.
- the processing unit can be further configured to cause the unsecure request to be generated such that unsecure applications are capable of responding to the unsecure request to cause the secure request to be generated such that secure applications and only secure applications are capable of responding to the secure request.
- the processing unit can be further configured to receive a selection of a secure application of the combined list and to cause a second content location to be modified such that the modified second content location indicates that the modified second content location is associated with a secure application.
- the processing unit can be further configured to cause the selected secure application to be launched.
- the computing device can further include an encryption unit.
- the encryption unit can be configured to decrypt data that is returned from the selected and launched secure application.
- a computing device that has at least one secure application and at least one unsecure application installed thereon is also described herein.
- This computing device can include an interface that can be configured to display the secure applications and the unsecure applications and can also include a processing unit.
- the processing unit can be configured to receive a content request from one of the secure applications or one of the unsecure applications to share content. If the content request to share content is from an unsecure application, the processing unit can be configured to cause a combined list to be displayed on the interface in response to the content request that shows at least one unsecure application that is able to respond to the content request to share content and at least one secure application that is able to respond to the content request to share content.
- the processing unit can be configured to cause only one or more secure applications to be displayed on the interface that are able to respond to the content request to share content from the secure application in response to the content request from the secure application such that no unsecure applications are displayed on the interface in response to the content request from the secure application.
- the secure application that is displayed in response to the content request to share content from the unsecure application is a container application that provides access to additional secure applications that are able to respond to the content request to share data from the unsecure application.
- the computing device can include an authentication unit that is configured to authenticate a user of the computing device if the user selects the container application or another secure application that is displayed in response to the content request to share data from the unsecure application.
- the processing unit can be further configured to generate a secure content request that can be configured to be processed by a system process to enable a return of the additional secure applications that are able to respond to the content request to share content from the unsecure application.
- the processing unit can be further configured to cause a content location to be modified to indicate that the content request to share content is from an unsecure application.
- FIG. 1 illustrates an example of a system for the distribution of applications to computing devices.
- FIG. 2 illustrates an example of a block diagram of the system architecture of a computing device that is configured to practice the subject matter described herein.
- FIG. 3 illustrates an example of a block diagram of a management unit.
- FIG. 4 illustrates an example of a method for creating a secure application to enable runtime injection of the secure application.
- FIG. 5 illustrates an example of a method of runtime injection for a secure application.
- FIG. 6 illustrates an example of a signal-flow diagram of runtime injection for a secure application.
- FIG. 7 illustrates another example of a signal-flow diagram of runtime injection for a secure application.
- FIG. 8 illustrates an example of a method of enabling the exchange of content between secure applications and unsecure applications.
- FIG. 9 illustrates an example of a signal-flow diagram between a secure application accessing content and a providing unsecure application.
- FIG. 10 illustrates an example of a user interface that shows a combined listing of secure applications and unsecure applications in response to a request to access content.
- FIG. 11 illustrates an example of a signal-flow diagram between a secure application sharing content and a receiving secure application.
- FIG. 12 illustrates an example of a method enabling the exchange of content between unsecure applications and secure applications.
- FIG. 13 illustrates an example of a signal-flow diagram between an unsecure application sharing content and a receiving secure application.
- FIG. 14 illustrates an example of a user interface that shows a combined listing of unsecure applications and secure applications in response to a request to share content.
- references in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” “one arrangement,” “an arrangement” or the like, indicate that the embodiment or arrangement described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment or arrangement. Furthermore, when a particular feature, structure, or characteristic is described in connection with an embodiment or arrangement, it is submitted that it is within the knowledge of one skilled in the art to implement such feature, structure, or characteristic in connection with other embodiments or arrangements whether or not explicitly described.
- the word “among,” as it is used throughout this description, should not necessarily be interpreted as requiring exchanges or interaction among three or more applications, irrespective of grammar rules.
- the word “a” is not necessarily limited to a singular instance of something, as it may mean one or more.
- exemplary as used herein is defined as an example or an instance of an object, apparatus, system, entity, composition, method, step or process.
- communicatively coupled is defined as a state in which two or more components are connected such that communication signals are able to be exchanged (directly or indirectly) between the components on a unidirectional or bidirectional (or multi-directional) manner, either wirelessly, through a wired connection or a combination of both.
- a “computing device” is defined as a component that is configured to perform some process or function for a user and includes both mobile and non-mobile devices.
- computer readable storage medium is defined as one or more components that are configured to store instructions that are to be executed by one or more processing units.
- An “application” is defined as a program or programs that perform one or more particular tasks on a computing device. Examples of an application include programs that may present a user interface for interaction with a user or that may run in the background of an operating environment that may not present a user interface while in the background.
- the term “operating system” is defined as a collection of software components that directs a computing device's operations, including controlling and scheduling the execution of other programs and managing storage, input/output and communication resources.
- a “processing unit” or “processor” is defined as one or more components that execute sets of instructions, and the components may be disparate parts or part of a whole unit and may not necessarily be located in the same physical location.
- memory memory element
- repository storage
- shared memory is memory, a memory element or a repository that is accessible (directly or indirectly) by two or more applications or other processes.
- An “interface” is defined as a component or a group of components that enable(s) a device to communicate with one or more different devices, whether through hard-wired connections, wireless connections or a combination of both.
- An “input/output device” is defined as a device that is configured to at least receive input from a user or a machine that is intended to cause some action or other effect on a component with which the input device is associated.
- file system is defined as an abstraction that is used to organize, store and retrieve data.
- secure application is defined as an application that has been modified from its original form to restrict communications between the application and unauthorized programs, applications or devices and to restrict operation of the application based on policy or to alter, augment or add features associated with the operation of the application (or any combination thereof).
- target application is defined as an application that has been selected for conversion into a secure application.
- unsecure application is defined as an application that has not undergone the modification required to convert the application into a secure application and, as such, is unable to obtain data from a secure application in view of an obfuscation scheme employed by or applied to that secure application.
- a “virtual machine” is defined as a platform-independent execution environment that emulates a physical machine.
- personal workspace is defined as a workspace, profile or partition that is configured to contain the personal content and unsecure applications or other unsecure programs associated with a user of a computing device on which the personal workspace sits.
- secure workspace is defined as a workspace, profile or partition that is configured to contain secure content, secure applications and other secure programs and requires some form of authentication to be accessed.
- runtime is defined as at least the portion of time that an application or other program is executing.
- a “secure namespacing scheme” is defined as a namespacing scheme that is designed to be unpredictable and for use only by secure applications.
- secure request is defined as a request that has been modified to conform to a secure namespacing scheme or some other obfuscation process designed to protect the request from being processed by an unsecure application or other program.
- a “secure return” is defined as a return that conforms to a secure namespacing scheme or some other obfuscation process designed to protect the return from being processed by an unsecure application or other program.
- manifest is defined as a file that contains information about an application that is designed to enable the application to interact with a system that supports the application.
- content is defined as any type of material, information or data that is capable of being shared between applications.
- a “content request” is defined as a request originating from an application to access content from or provide content to one or more other applications.
- a “conventional content request” is a content request that is in accordance with the standard content request protocol set by an operating system or other controlling or managing objects on a computing device.
- a “secure content request” is a content request that is in a form such that it is recognizable by secure applications but not unsecure applications.
- content location is defined as information that is used to identify the location(s) of content
- modifying content location is defined as altering or amending content location strings to enable a distinction to be recognized between content location strings that are associated with unsecure applications and those that are associated with secure applications.
- character is defined as one or more symbols that represent data that can be processed by a processing unit or other component.
- An “encryption unit” is defined as a component that is comprised of hardware and software and that is configured to encrypt and/or decrypt data.
- An “authentication unit” is defined as a component that is comprised of hardware and software and that is configured to authenticate a user, other component or entity prior to that user, other component or entity being granted access to a secure application or some other secure or protected data.
- a mobile device may include both enterprise and personal data but that isolate the enterprise data from the personal data.
- a user's device may include both secure and unsecure applications. Accordingly, it may be useful to provide ways to enable the selective exchange of data between secure and unsecure applications in an efficient manner.
- Content requests can be received from secure applications and unsecure applications.
- listings of options can be returned that have the ability to satisfy the content requests from the requesting secure applications or the requesting unsecure applications.
- selections of the options of the listings of options can be received through the requesting secure applications or the requesting unsecure applications.
- Content locations that are to be returned to the secure applications can be selectively modified such that subsequent content requests that involve the modified content locations are identified as being associated with an unsecure option.
- the system 100 can include an application developer portal 105 , a network 110 , a management unit 115 , an application store or repository 120 and any number of computing devices 125 .
- the system 100 can include multiple application developer portals 105 , networks 110 , management units 115 or application stores 120 .
- FIG. 1 implies that the computing device 125 is a mobile unit, the system 100 and the processes described herein may be relevant to and practiced with fixed computing devices.
- the application developer portal 105 can present an interface that enables developers of applications to upload their applications for eventual publication in the application store 120 .
- the application store 120 can enable users of the portable computing devices 125 to install such published applications on their devices 125 .
- the applications from the application developers may be directed to the management unit 115 prior to being published in the application store 120 .
- the applications may be modified such that they are more conducive for operation on behalf of an enterprise or other organization.
- the applications may be converted into secure applications, a process in which certain intercepts may be imposed on an application during runtime such that functions of the application may be restricted, enhanced or otherwise modified in some way, depending on input from the enterprise. Examples of this process will be presented below.
- An application that has been selected for conversion into a secure application by the management unit 115 may be referred to as a target application.
- an application that has not undergone the process of conversion into a secure application may be referred to as a non-secure or unsecure application.
- a secure application Once a secure application is generated, it can be published in the application store 120 , similar to a conventional application that has been published. Because the application store 120 accepts and offers secure applications, it may also be referred to as a secure application store 120 . In some cases, a secure application store 120 may be configured to accept and offer only secure applications, although in other scenarios it may accept and offer both secure and unsecure applications. In addition, a secure application store 120 may have limited access to a certain group of users, such as those associated with a particular enterprise, or it may be open to the general public. If access is limited to the secure application store 120 , an accessing user may be required to provide some form of authentication before being granted such access. Moreover, the applications that are made available through the secure application store 120 are not necessarily required to be received from the application developer portal 105 , as other sources may be used to provide applications to the secure application store 120 .
- the network 110 can facilitate communications between any of the components of the system 100 .
- each network 110 may be composed of various types of components to support wireless or wired communications (including both).
- the network(s) 110 may be configured to support both local or wide area communications (or both).
- the management unit 115 may serve as a remote portal that can be used to manage certain features or operations of the computing devices 125 , including the secure applications that may be installed in the computing devices 125 .
- the computing device 125 can include a hardware layer 205 , a kernel layer 210 and a libraries layer 215 , which may include a plurality of native libraries.
- This architecture may also include a runtime environment 220 , a system server 225 , a secure framework 230 and an application layer 235 .
- the hardware layer 205 may include any number and type of hardware components, such as one or more displays 240 , one or more input/output (I/O) devices 245 , one or more processing units 250 and any suitable type and number of memory devices 255 and interfaces 260 .
- the I/O devices 245 include speakers, microphones, physical keypads, etc.
- the display 240 can serve as an I/O device 245 in the form of a touch-screen display.
- the interfaces 260 can be configured to support various types of communications, including wired or wireless and through any suitable type of standards and protocols.
- the hardware layer 205 may also include an encryption unit 262 and an authentication unit 264 .
- the encryption unit 262 can be configured to encrypt and/or decrypt content that is associated with the computing device 125 , and the authentication unit 264 can be configured to authenticate users or components prior to such users or components being granted access to secure or otherwise protected information.
- the encryption unit 262 and the authentication unit 264 may be stand-alone components, or they may be part of the processing unit 250 .
- the runtime environment 220 can support any suitable number of virtual machines 265 and core libraries 270 , and the system server 225 can serve as an abstraction for the underlying layers for the applications in the application layer 235 and can provide numerous system services for the applications.
- the application layer 235 may include any number of unsecure applications 275 and any number of secure applications 280 , one of which may be a core secure application 285 .
- the secure framework 230 can function similar to that of a conventional framework, but the secure framework 230 can facilitate the encapsulation of a number of secure applications 280 to selectively restrict their data exchanges with the unsecure applications 275 .
- the secure framework 230 can be configured to intercept and modify certain calls from the secure applications 280 , prior to passing them to the system server 225 . Because the unsecure applications 275 may not be privy to the modification technique, the unsecure applications 275 may be unable to obtain data from a secure application 280 . Additional detail on this process will be presented below.
- the unsecure applications 275 are associated with the personal data of a user of the computing device 125 .
- the secure applications 280 are typically associated with confidential or otherwise sensitive information that belongs to or is associated with an enterprise or some other organization, and the user of the device 125 may work for such an entity.
- a virtual partition may be created on the computing device 125 in which the secure applications 280 (and the secure core application 285 ) are part of a secure workspace 295 , and the unsecure applications 275 are part of a personal workspace 297 .
- a user may be required to provide authentication information, such as a password, PIN or biometric data, to gain access to the secure workspace 295 or to any individual or group of secure applications 280 .
- the authentication information may be verified by the authentication unit 264 .
- the user may launch both secure applications 280 and unsecure applications 275 through the I/O device 245 .
- a container application (not pictured here) may be used to access the secure workspace 295 or any of the secure applications 280 .
- one of the secure applications 280 may be a secure core application 285 .
- the core application 285 may include any number of files that can make up any number of shared libraries.
- the files may be Java Archive (JAR) files, and when the core application 285 is loaded, these JAR files may be copied to an appropriate repository of the computing device 125 .
- the core application 285 can be responsible for providing a certain number of classes that can make up the shared libraries, which can be made available to the secure applications 280 . These classes, in some cases, can be substituted for certain system classes that would be normally used.
- the secure framework 230 can be one or more libraries that are delivered by the core application 285 .
- the management unit 115 may include an interface 305 that can be configured to receive a target application 310 .
- the interface 305 can be any suitable combination of components that are designed to receive the target application 310 from the application developer portal 105 via the network 110 .
- the management unit 115 can also include one or more processing units 315 , one or more I/O devices 320 , one or more displays 325 and any suitable type and number of memory components.
- the management unit 115 can be used to convert the target application 310 into a secure application 280 , which may be eventually installed on the computing device 125 .
- an exemplary method 400 for creating a secure application to enable runtime injection of the application is shown.
- the method 400 may include additional or even fewer steps or processes in comparison to what is illustrated in FIG. 4 .
- the method 400 is not necessarily limited to the chronological order that is shown in FIG. 4 .
- FIGS. 1 , 2 and 3 reference may be made to FIGS. 1 , 2 and 3 , although it is understood that the method 400 may be practiced with any other suitable systems and components and may take advantage of other suitable processes.
- a target application can be received, and an override class can be implemented in the target application, as shown at step 410 .
- the override class can be declared in the target application, thereby creating a secure application, as shown at step 415 .
- conventional components of the target application may be modified to create corresponding secure components.
- the secure application can be uploaded to an application repository for distribution to a computing device. Examples of these steps will be presented below.
- the management unit 115 can receive the target application 310 , which can include conventional components and a manifest that presents information about the conventional components.
- a conventional component in this sense is a component that already exists in the target application and is capable of being modified as part of the process in converting the target application 310 into a secure application 280 .
- Examples of conventional components include intents and intent filters, activities, services and content providers.
- Another example of a conventional component is an application class, which, as is known in the art, is a base class for maintaining global variables.
- an override class can be implemented in the target application 310 , as mentioned earlier.
- an application tag in the manifest can be modified to cause the override class to extend the pre-existing application class.
- the override class can be declared in the manifest of the target application 310 .
- the override class can be loaded prior to any of the conventional components. Any adapt code can be integrated into the target application 310 to ensure that this process occurs.
- the override class can cause an override class loader, which may be part of the secure core application 285 , to be injected into the normal system operation.
- Steps can also be taken to modify other conventional components of the target application 310 .
- any number of the intents, intent filters, activities, services and content providers recited in the manifest of the target application 310 may be modified or decorated to create corresponding secure components.
- the conventional components that are modified may be components that are well-known in view of the design of the target application 310 in relation to an operating system of the computing device 125 .
- these corresponding secure components may be in compliance with a predetermined (and unpredictable) namespacing scheme, which can be used to ensure the security of the interprocess communications of the secure applications 280 .
- the technique of modifying the conventional components in the manifest is also useful for intent resolution.
- the target application 310 may be considered to be a secure application 280 .
- the secure application may be uploaded to an application repository, such as an electronic application store.
- the computing device 125 may be configured to access the repository and can download and install the secure application 280 . Once installed, steps can be taken to enable runtime injection of the secure application 280 , as will be explained below.
- a method 500 for runtime injection is illustrated.
- the method 500 may include additional or even fewer steps or processes in comparison to what is illustrated in FIG. 5 .
- the method 500 is not necessarily limited to the chronological order that is shown in FIG. 5 .
- FIGS. 1 , 2 and 3 reference may be made to FIGS. 1 , 2 and 3 , although it is understood that the method 400 may be practiced with any other suitable systems and components and may take advantage of other suitable processes.
- FIGS. 6 and 7 show examples of message exchange between several components, to help explain the method 500 , although other exchange models may be applicable here.
- step 505 it can be determined that a secure application has been initiated, and at step 510 , an instance of a secure framework can be loaded as part of the process of the secure application.
- one or more conventional variables associated with the secure application may be replaced with a corresponding proxy, as shown at step 515 .
- the (decorated) secure components can be registered with the system server 225 or some other element of the system of the computing device 125 .
- the core application 285 of the computing device 125 may include any number of libraries that may be shared among the secure applications 280 , including the secure framework 230 .
- the override class can be initiated prior to the application class, and the override class can be responsible for loading the shared libraries of the core application 285 , one of which may be an override class loader. Moreover, as part of this flow, an instance of the secure framework 230 can be loaded as part of the process of the initiated secure application 280 . As such, the override class loader can enable the secure application to access the shared libraries of the core application 285 , even though the secure application 280 may have been initially unaware of them.
- the override class loader can also enable runtime hooks to be set up for the secure application 280 .
- the override class loader can load an encryption manager that can establish runtime encryption hooks and a service manager that can set up other runtime hooks for any number of system services.
- this procedure can cause one or more conventional variables of the application framework of the process for the secure application 280 to be replaced with a corresponding proxy.
- the replaced conventional variables can correspond to system services that are available to the secure application 280 .
- any number of well-known application programming interfaces (API) that are related to system services can be parsed and certain variables of these APIs can be replaced with a corresponding proxy.
- the variables of the APIs that are replaced may be fields that serve as the binder or interface between the application space of the secure application 280 and the system server 225 or other system process.
- the corresponding proxy can be an invocation handler that is an object of the same type as the replaced field, and the invocation handler can be a generic object that can implement all or at least a substantial portion of the classes of the operating system of the computing device 125 .
- the invocation handler can process various methods and can provide a single method of invoke.
- the invocation handler encapsulates the replaced field, and the invocation handler is integrated into the application process for the secure application 280 .
- the corresponding proxy can be considered a different instance of the replaced field and, as will be explained below, can enable the decoration of the affected API calls and their delivery to the system server 225 .
- this process can enable runtime hooks to be implemented for the APIs of the secure application 280 . Any number of the system services may be targeted during this step, including all of them or only a portion thereof.
- the override class loader may selectively defer to the application class. In view of this selective deferment, there are some instances where the override class loader may load other classes from the core application 285 during runtime in place of system classes. As will be explained below, the classes loaded by the override class loader may facilitate the modification or decoration of calls from the secure application 280 . Additional information on the override class loader and its operation can be found in U.S. Patent Application No. 61/936,378, filed on Feb. 6, 2014, which is incorporated herein by reference.
- a conventional request from the secure application can be intercepted, as shown at step 520 .
- the intercepted conventional request can be modified such that the request is unrecognizable to an unsecure application, thereby creating a secure request.
- the secure request can be passed to a system process to enable the system process to process the secure request.
- a secure return may be received from the system process, as shown at step 535 .
- the secure return may then be converted to a conventional return, and the conventional return can be passed to the secure application for processing by the secure application, as shown at step 545 .
- FIGS. 6 and 7 examples of this process will be presented.
- a user may have initiated a secure application 280 and may wish to share some type of content, such as with another secure application 280 .
- a user may wish to copy some content from a secure application 280 and paste that content in the same secure application 280 , although such content may be pasted in a different secure application.
- a representation of a message exchange between a secure application 280 , an application framework 605 , a secure framework 230 and a system server 225 is illustrated.
- the secure application 280 , the application framework 605 and the secure framework 230 may be considered to be part of an application process 610 .
- the system server 225 may be part of a system process 615 , a process that is separate from the application process 610 .
- a conventional request may be generated by the secure application 280 , which normally would be facilitated by the application framework 605 .
- a conventional request in this context, is simply a request that conforms with a normal request for a system service and has not yet been decorated or modified.
- the conventional request can be intercepted and directed to the secure framework 230 , which can modify or decorate the conventional request.
- This decoration can convert the conventional request into a secure request, which can conform to a predetermined secure namespacing scheme.
- the relevant component of the conventional request may be appended with an affix or some other morpheme or any number of characters to create the secure request.
- the secure framework 230 can make the same API call to the encapsulated field, thereby sending the secure request to the application framework 605 .
- the application framework 605 can then send the secure request across to the system server 225 , which can process the secure request.
- the system server 225 can send to the secure framework 230 a secure return that is related to the secure applications 280 that can handle the request.
- the secure framework 230 can convert the secure return to a conventional return or can perform additional filtering or other steps.
- the secure return can be converted to a conventional return by removing the appended affix from the secure return, a process that may also be referred to as undecorating.
- the secure framework 230 can pass the conventional return to the application framework 605 , which can send it to the secure application 280 for processing.
- a chooser dialog or some other user interface element can be presented to the user to permit the user to select which secure application 280 should process the request. If the user selects one of the presented secure applications 280 , that secure application 280 can launch, and the calls associated with this interaction can be decorated and undecorated as described above, with the secure framework 230 overseeing such manipulation.
- a user may be operating a secure application 280 and may copy some data that is associated with the secure application 280 .
- the copy call may be intercepted by the secure framework 230 , which can modify the call by re-directing it to the core application 285 .
- the core application 285 can store the copied data in a memory element 625 , which may be a memory element with restricted access.
- the data copied in the memory element 625 can be mapped to enable correlation, which may be helpful if multiple copy operations are permitted in the computing device 125 .
- the core application 285 can return a hash of an identifier to the secure framework 230 .
- the identifier can be a timestamp of the current time, although other identifiers may be employed here.
- the secure framework 230 can then send the hash of the identifier to the encapsulated field or interface of the application framework 605 , which can then send it to the system server 225 .
- the system server 225 can then copy the hash of the identifier in a memory element 620 , in accordance with standard operating procedure for a copy API.
- the copy request may be modified because the true data intended to be copied is intercepted and replaced with a hash of an identifier.
- the request is unrecognizable by an unsecure application 275 because an unsecure application 275 that attempts a paste operation will be returned the hash of the identifier, not the data from the secure application 280 . Accordingly, the request can be decorated in ways that are different from appending the components, as described above.
- the user may wish to perform a paste operation, either from the same secure application 280 from where the copy feature was initiated or a different secure application 280 .
- the paste originates from the secure application 280 that initiated the corresponding copy operation.
- the paste operation can be intercepted by the secure framework 230 and can be directed to the application framework 605 , which can send the paste call to the system server 225 .
- the system server 225 can retrieve the hash of the identifier from the memory element 620 and can return it to the secure framework 230 .
- the secure framework 230 can return the hash of the identifier to the core application 285 , which can then retrieve the actual copied data from the memory element 625 .
- the core application 285 can return the actual copied data to the secure framework 230 , which can then pass the data to the application framework 605 .
- the application framework 605 can return the data to the secure application 280 to complete the paste operation.
- the computing device 125 may include both secure applications 280 and unsecure applications 275 . As has been shown here, steps may be taken to protect data or content requests originating from a secure application 280 from being processed or otherwise handled by an unsecure application 275 . Nonetheless, there may be some instances in which content may be permitted to be exchanged between unsecure applications 275 and secure applications 280 . Examples of these instances will be presented below.
- the computing device 125 may include a secure application 280 and an unsecure application 275 that are the same type of applications.
- the computing device 125 may have an unsecure version of a picture gallery that includes personal pictures of the user of the device 125 and a separate and secure version of a picture gallery that contains pictures associated with the user's employer or some other entity.
- the pictures from the secure gallery may be encrypted and not meant to be accessed without user authentication.
- the computing device 125 may include both secure and unsecure versions of an application that stores and manages documents stored at a remote location. Even though the content requests associated with the secure version of an application may be isolated from the unsecure version of the application, steps may need to be taken to minimize or prevent comingling of the content that is the subject of such content requests.
- the computing device 125 includes a secure picture gallery and an unsecure picture gallery. If a user is interacting with a secure application 280 and wishes to attach a picture from the unsecure picture gallery (i.e., unsecure application), a process may be implemented to ensure that the selected content is pulled from the unsecure picture gallery instead of the secure picture gallery. This process can distinguish content requests associated with unsecure applications from those involving secure applications. As part of these scheme, steps may also be taken to ensure that protected or secure content is still kept from being received by unsecure applications or other unauthorized processes. Several examples illustrating this feature will be presented below.
- a method 800 of enabling the exchange of content between secure applications and unsecure applications is shown.
- the method 800 may include additional or even fewer steps or processes in comparison to what is illustrated in FIG. 8 .
- the method 800 is not necessarily limited to the chronological order that is shown in FIG. 8 .
- FIGS. 1-7 reference may be made to FIGS. 1-7 , although it is understood that the method 800 may be practiced with any other suitable systems and components and may take advantage of other suitable processes.
- FIGS. 9 and 10 show examples of message exchange between applications, to help explain the method 800 .
- step 805 content requests can be received from secure applications and unsecure applications.
- decision block 810 it can be determined whether a particular request is from a secure application or an unsecure application. If the request is from a secure application, the method 800 can continue to decision block 815 . If the request is from an unsecure application, the method can continue to step 820 , which moves the flow to FIG. 12 . A description related to FIG. 12 will appear below.
- step 815 it can be determined whether the content request is a request to access content or to share content. If the request is to access content, the method 800 can continue at step 825 , and if the request is to share content, the method 800 can continue at step 855 .
- step 825 a conventional content request and a secure content request can be generated in response to the request to access content.
- a combined listing of secure and unsecure applications that can satisfy the request to access content can be returned and displayed.
- a selection of, for example, an unsecure application may be received, as shown at step 835 .
- a content location can be modified to identify the content location as being associated with an unsecure application.
- a selection of a secure application can be received, and a content location can be modified to identify the content location as being associated with a secure application, as shown at step 850 .
- FIG. 9 a signal flow 900 between a requesting secure application 280 and a providing secure application 280 and a providing unsecure application 275 is shown.
- a system server 225 and instantiations or portions of a secure framework 230 for the requesting secure application 280 and the providing secure application 280 are also shown.
- this signal flow 900 represents an example of a secure application 280 generating a request to access content.
- a user may be interacting with a secure application 280 , and the user may wish to access content through this secure application 280 .
- the content request is a request to retrieve or access content
- the secure application 280 may be referred to as a requesting secure application 280 .
- secure applications 280 may be permitted to access content from other secure applications 280 and even unsecure applications 275 . That is, the ability to retrieve unsecure content outside the secure workspace 295 or other secure environment of the computing device 125 may be allowed because such a step does not violate the principle of keeping secure content from being disseminated outside the secure workspace 295 or the secure environment.
- a secure application 280 that may be able to provide content in response to the request from the requesting secure application 280 may be referred to as a providing secure application 280 .
- the instantiation or potion of the secure framework 230 that is attached to the requesting secure application 280 may be referred to as a requesting secure framework 230 .
- the secure framework 230 associated with the providing secure application 280 may be called a providing secure framework 230 .
- the use of the modifiers “requesting” and providing” should not be construed as limiting the secure applications 280 and the secure frameworks 230 to which they are attached. That is, the roles of these secure applications 280 and secure frameworks 230 may change depending on the type of operation being executed.
- the content request may be comprised of two requests: a secure request to access content from secure applications 280 and a conventional request to access content from unsecure applications 275 .
- the requesting secure application 280 may generate a request to access content, which the requesting secure framework 230 can intercept.
- the requesting secure framework 230 can then convert the intercepted request to a secure content request, in accordance with the process previously described.
- the requesting secure framework 230 can then pass the secure content request to the system server 225 .
- the requesting secure framework 230 can pass the content request as is (i.e., the conventional request to access content) to the system server 225 .
- these requests may be intents, although other suitable abstract operational identifiers may apply here, including for any of the other actions presented herein.
- An unsecure application 275 that is installed on the computing device 125 may register with the system server 225 (or some other component) to indicate to the system server 225 that the unsecure application 275 is capable of handling certain requests from other applications. Thus, when the conventional content request is passed to the system server 225 , the system server 225 can determine which unsecure applications 275 have the ability to satisfy the conventional content request. Secure applications 280 , when installed, may also register with the system server 225 (or other suitable component) to enable the system server 225 to determine which providing secure applications 280 are capable of supporting the secure content request. In view of the secure namespacing scheme described earlier, the unsecure applications 275 are prevented from responding to the secure content request.
- the system server 225 can return a combined listing of them to the requesting secure framework 230 , which can return the combined listing to the requesting secure application 280 .
- the returned unsecure applications 275 and providing secure applications 280 may be displayed to the user in any suitable format to enable the user to make one or more selections. An example of such a presentation is shown in FIG. 10 .
- a secure application 280 such as a secure email application, is shown in which a user wishes to attach some form of content to the secure application 280 .
- a menu 1005 is pictured that presents several options to retrieve or access content for the user to choose.
- another menu 1010 can be displayed that presents a combined listing 1015 of options that have the ability to satisfy the request to retrieve or access content, such as both secure applications 280 and unsecure applications 275 that can handle the request.
- Various schemes such as text or icon designs, can be structured to enable the user to distinguish between secure applications 280 and unsecure applications 275 , particularly when such applications are different versions of the same application (e.g., secure gallery versus unsecure gallery).
- the user while interacting with a requesting secure application 280 , can retrieve content from either a providing secure application 280 or a providing unsecure application 275 without violating the principle of isolating secure or protected content from the unsecure applications 275 .
- the user may select a providing unsecure application 275 through the menu 1010 to access some desired content.
- the requesting secure application 280 can generate a request to launch the selected unsecure application 275 .
- the request to launch the unsecure application 275 should not be modified.
- This request is eventually passed to the unsecure application 275 , which can then be launched.
- the user may then select the content that the user wishes to access from the unsecure application 275 .
- the unsecure application 275 can generate a return that includes, for example, a content location that can provide data as to where the selected content is located on the computing device 125 (or even a remote location).
- the content location may be a uniform resource identifier (URI) or some other string of characters that indicate where the related content is located, either on the computing device 125 or some remote location.
- the generated return and the content location can be passed to the requesting secure framework 230 , which can be configured to modify the content location. For example, a character can be appended to the content location that can identify the content location as being associated with an unsecure application 275 .
- the modified content location can then be returned to the requesting secure application 280 . With this return, the requesting secure application 280 may eventually seek to retrieve the content associated with the modified content location, as will be explained later.
- the object that is modified at this stage is not necessarily limited to a content location.
- any part of the return from the unsecure application 275 may be modified in any suitable way to identify the return as being associated with an unsecure application 275 .
- the content location may not necessarily be associated with a single location.
- the content location may comprise multiple locations such that the portions of the requested content are stored in numerous separate areas.
- the requesting secure application 280 may generate a request for the actual content related to the modified content location. For example, referring to the secure email application of FIG. 10 , the user may have taken action to cause an email to which the access content is to be attached to be delivered to its intended destination.
- the requesting secure application 280 can pass the content request along with the modified content location to the requesting secure framework 230 .
- the requesting secure framework 230 can recognize the modified content location as being associated with an unsecure application 275 . As such, the requesting secure framework 230 can make a distinction between the relevant unsecure application 275 and a potential providing secure application 280 that is a secure version of the relevant unsecure application 275 .
- the modified content location from the requesting secure application 280 enables the requesting secure framework 230 to determine that the request is to be directed to the unsecure picture gallery.
- this model enables content requests to be properly directed in the case of secure and unsecure versions of the same application.
- the requesting secure framework 230 can remove the modification of the content location such that the content location can be in its original form. As an example, this arrangement can be done by stripping out the character appended to the URI. In an alternative embodiment, the original character that was added to modify the URI can be replaced with another character, and this replacement scheme may apply to any of the exchanges described herein. In either event, because the content request is to be directed to an unsecure application 275 , there is no need to modify the content request itself. The content request (and the original content locations) can be passed to the unsecure application 275 . The unsecure application 275 , because it is dealing with an unmodified content request and content location, can process the request in a conventional manner, eventually returning the requested content to the requesting secure application 280 .
- the user may select a providing secure application 280 from the menu 1010 of FIG. 10 , instead of an unsecure application 275 .
- the signal flow associated with this selection will also be presented in FIG. 9 , and the dashed horizontal line separates the first content request directed to the unsecure application 275 discussed above from the second content request that seeks content from the providing secure application 280 . Because the initial steps of this second example may be the same as already presented with respect to the first example, this description can begin at the point where the user has selected a providing secure application 280 .
- the requesting secure application 280 can generate a request to have the providing secure application 280 launch, which the requesting secure framework 230 can intercept. Because a secure application 280 was selected, the requesting secure framework 230 can modify the request to launch the providing secure application 280 to obfuscate or hide the request from any unauthorized processes, such as unsecure applications 275 . The requesting secure framework 230 can then pass the modified request to the system server 225 , which can send the request to the providing secure framework 230 . In response, the providing secure framework 230 can remove the modification to the request and can pass the unmodified request to the providing secure application 280 , which can be launched.
- the user may select some content from the providing secure application 280 , and the providing secure application 280 may generate a return in response to the selection and send the return to the providing secure framework 230 .
- This return may include a content location that can identify the location of the requested content.
- the content location in this illustration can be a URI.
- the providing secure framework 230 can intercept and modify the request to hide it from the unsecure applications 275 .
- the providing secure framework 230 can also modify the content location, which can identify it as being associated with a secure application 280 .
- the providing secure framework 230 can append the URI from the providing secure application 280 with some character that can serve as a signal for such identification. This character may be in a different form from that of the character assigned for unsecure applications 275 to assist in the distinction between the unsecure applications 275 and the secure applications 280 .
- the content return and the content location (and URI) in this example are associated with a secure application 280 , they may be respectively referred to as a secure content return and a secure content location (and secure URI) upon their modification by the providing secure framework 230 .
- the providing secure framework 230 can then pass the secure (modified) content return and the secure (modified) content location to the system server 225 , which can forward the (modified) secure return and secure content location to the requesting secure framework 230 .
- the requesting secure framework 230 can remove the modification from the secure return and the secure content location that is part of the return.
- the requesting secure framework 230 can send the conventional (unmodified) return and content location to the requesting secure application 280 .
- the requesting secure application 280 may generate a request to access the content associated with the (unmodified) content location, which can be intercepted by the requesting secure framework 230 .
- the requesting secure framework 230 can convert the content request into a secure content request and can modify the content location, in accordance with prior examples and description.
- the requesting secure framework 230 can be set to default to a secure version of an application when it receives an unmodified content location from a requesting secure application 280 .
- the requesting secure framework 230 can determine on a default basis that an unmodified content location from a first secure application is associated with content from a second secure application 280 .
- the requesting secure framework 230 can then pass the (modified) secure request and (modified) secure content location to the system server 225 .
- the system server 225 can send the secure request and secure content location to the providing secure framework 230 , which can remove the modifications.
- the providing secure framework 230 can then pass the unmodified request and unmodified content location to the providing secure application 280 .
- the providing secure application 280 can then return the requested content to the requesting secure application 280 .
- the content that is to be returned from the providing secure application 280 may be encrypted.
- the providing secure application 280 can decrypt this content prior to it being sent to the requesting secure application 280 .
- the requesting secure application 280 may then re-encrypt the content with its own key(s) prior to sending out such content.
- the returned content may also stay in its encrypted state during its transfer to the requesting secure application 280 .
- the secure applications 280 may be configured to share encryption keys, if such an arrangement is desired.
- the encryption unit 262 (see FIG. 2 ) may support any encryption/decryption that may be needed.
- an exemplary system/method in which modifications may be selectively made to ensure interprocess communications between secure applications 280 are kept secure and to facilitate the distinction between content locations associated with secure applications and their corresponding unsecure versions (i.e., unsecure applications). That is, tagging the content locations associated with an unsecure application and leaving such modifications in place upon presentation to the requesting secure application 280 can ensure that the requesting secure framework 230 can determine that it is dealing with a content request from an unsecure application 275 .
- the modifications to the content locations associated with secure applications may be removed before being presented to the requesting secure application 280 . This step can be performed because unmodified content locations from a secure application may be assumed to be associated with another secure application 280 . Although in contrast to the treatment of a content location associated with an unsecure application 275 , this process can minimize the operational/structural changes required for secure applications 280 .
- the content location associated with secure applications 280 may remain modified when presented to a requesting secure application 280 (i.e., it may not be necessary to remove the modification prior to it being passed to the requesting secure application).
- the content locations associated with secure applications 280 may remain modified for presentation to the requesting secure application 280 , and the content locations associated with unsecure applications 275 may be unmodified prior to such presentation.
- the system can—on a default basis—determine that an unmodified content location from a secure application 280 is from an unsecure application 275 .
- secure applications 280 and unsecure applications 275 may be presented to a user for convenience, such an arrangement is not a necessity. For example, separate listings for secure applications 280 and unsecure applications 275 may be returned and displayed to the user. Moreover, some content requests may be answered in an explicit manner such that a single secure application 280 or unsecure application 275 may be presented in response to a content request for a particular secure application 280 or unsecure application 275 . Also, even though the description above notes that content locations associated with both secure applications 280 and unsecure applications 275 may be modified to indicate their association with such versions, such an arrangement is not meant to be limiting.
- the content locations associated with the unsecure applications 275 may be modified, and those of the secure applications 280 may remain unaltered during the content exchange process.
- only the secure content locations may be modified in accordance with the description above, and those of the unsecure applications 275 may not need to be modified.
- a secure content request can be generated, and at step 860 , a listing of only secure applications may be returned and displayed.
- a selection of a secure application may be received.
- a content location can be modified to identify the content location as being associated with a secure application, as shown in step 870 .
- an exemplary signal-flow diagram 1100 is shown.
- a user may be interacting with a secure application 280 and may wish to share some content from the secure application 280 .
- the secure application 280 in this example may also be referred to as a requesting secure application 280 , as it is generating a request to share content.
- a requesting secure framework 230 , a system server 225 , a receiving secure framework 230 and a receiving secure application 280 may facilitate this exchange.
- the requesting secure application 280 can generate a content request, and the requesting secure framework 230 can intercept and modify the content request. In accordance with prior descriptions herein, this step can convert the content request into a secure content request.
- the requesting secure framework 230 can then pass the secure content request to the system server 225 .
- the system server 225 may return one or more receiving secure applications 280 that may be able to process the request (i.e., receive the content). Because the content request is a secure content request, the system server 225 may only return receiving secure applications 280 , as the unsecure applications 275 should not be registered for secure content requests. Similar to the description presented in FIG. 10 , the receiving secure applications 280 that can handle the content request may be displayed to the user, such as through a menu.
- the user may then select one of the secure applications 280 to receive the content, and the requesting secure application 280 can generate a request to have the selected receiving secure application 280 launch.
- the requesting secure framework 230 can intercept the launch request and can convert it into a secure launch request.
- the secure launch request may also include a content location that identifies the location of the content to be shared with the receiving secure application 280 . Because the content to be shared is from a secure application 280 , the requesting secure framework 230 can also modify the content location (e.g., a character may be appended to the URI) to convert it to a secure content location.
- the requesting secure framework 230 can then pass the secure launch request (and the secure content location) to the system server 225 , which can forward it to the receiving secure framework 230 .
- the receiving secure framework 230 can remove the modifications to the secure request and content location and can pass them to the receiving secure application 280 .
- the receiving secure application 280 may then be launched.
- the receiving secure application 280 may generate a request for the content, which may be intercepted and modified by the receiving secure framework 230 .
- the content location may also be modified by the receiving secure framework 230 to indicate that it is associated with a secure application 280 .
- the receiving secure framework 230 can then pass the secure content request and the secure content location to the system server 225 , which can send it to the requesting secure framework 230 .
- the requesting secure framework 230 can remove the modifications to the secure content request and the secure content location and can return them to the requesting secure application 280 .
- the requesting secure application 280 can return the requested content to the receiving secure application 280 .
- the returned content may be decrypted prior to delivery to the receiving secure application 280 or may remain encrypted during this stage. If decrypted, the receiving secure application 280 may re-encrypt the returned content.
- a content request is from an unsecure application
- the method 800 can continue to step 820 , which can jump to FIG. 12 .
- FIG. 12 a method 1200 is shown in which an exemplary content request from an unsecure application is performed.
- the method 1200 may include additional or even fewer steps or processes in comparison to what is illustrated in FIG. 12 .
- the method 1200 is not necessarily limited to the chronological order that is shown in FIG. 12 .
- FIGS. 1-11 reference may be made to FIGS. 1-11 , although it is understood that the method 1200 may be practiced with any other suitable systems and components and may take advantage of other suitable processes.
- FIGS. 13 and 14 show examples of message exchange between applications, to help explain the method 1200 .
- step 1205 it can be determined whether the content request is to access content or to share content. If the request is to access content, the method 800 can continue to step 1210 , where content can be accessed from unsecure applications only.
- a user of the computing device 125 may be interacting with an unsecure application 275 , and the user may wish to access some content from another application or share content from the unsecure application 275 with some other application.
- the unsecure application 275 can generate a content request that can be processed by the system server 225 .
- the content request may be in its conventional form, or not in a modified state to prevent it from being hidden from other unsecure applications 275 .
- the system sever 225 can then return any number of unsecure applications 275 that can respond to the request to access the content. No secure applications 280 , however, should be returned in response to this request to access content because secure applications 280 in this setting are generally (or completely) barred from sharing such content with unsecure applications 275 .
- the method 1200 can continue at step 1215 .
- step 1215 a combined listing of secure and unsecure applications that are able to satisfy the sharing content request can be returned and displayed.
- decision block 1220 it can be determined whether a secure application or an unsecure application is selected. If an unsecure application is selected, the content can be shared with that unsecure application, as shown at step 1225 . If, however, a secure application is selected, the user may be authenticated, as shown at step 1230 . In addition, a content location may be modified to indicate that the content location is related to an unsecure application, as shown at step 1235 .
- FIG. 13 illustrates a signal-flow diagram 1300 .
- the signal-flow diagram 1300 is an example of an unsecure application 275 sharing content with a secure application 280 .
- the unsecure application 275 may generate a share content request, which can be passed to the system server 225 .
- the share content request should not be modified—as when dealing with secure applications 280 —because the request originates from the unsecure application 275 .
- the system server 225 can return a listing of components that are able to process the share request.
- the listing of components can include one or more unsecure applications 275 and one or more secure applications 280 .
- the secure application 280 that is returned can be a container application 1305 .
- the container application 1305 may be an application that enables a user to switch from the personal (unsecure) workspace 297 to the secure workspace 295 .
- the container application 1305 may be considered a secure application 280 , it may be registered with the system server 225 as an unsecure application 275 that is capable of handling certain requests from unsecure applications 275 .
- whichever unsecure applications 275 and secure applications 280 are returned can be displayed to the user.
- an unsecure application 275 with which the user is interacting is shown, and the user may wish to share some content from this unsecure application 275 .
- a menu 1405 may present the available options to the user, which can, in this example, include multiple other unsecure applications 275 and the container application 1305 . Either one of these options may be selected for sharing the relevant content.
- the content can be shared with the selected unsecure application 275 , and no modifications to the exchanges between the unsecure applications 275 and the system server 225 are necessary. That is, conventional message exchanges may be performed here.
- the container application 1305 the initial request to launch the container application 1305 may remain unmodified, and the container application 1305 may launch.
- the secure framework 230 of the container application 1305 may intercept and modify the content request originating from the container application 1305 such that only secure applications 280 may be returned for servicing the share content request.
- the system server 225 can then return the secure applications 280 that can process the share request. Turning back to FIG.
- FIG. 14 an example of a menu 1410 is shown that reflects the returned secure applications 280 that may be able to receive the content that the user wishes to share. The user may select any one of these secure applications 280 for purposes of having the content from the unsecure application 275 delivered to that selected secure application 280 .
- the container application 1305 can generate a request to have that secure application 280 launch.
- the secure framework 230 attached to the container application 1305 can intercept and modify this request, as the message exchange here involves secure applications 280 .
- the modified launch request may also have the content location associated with the content to be shared from the unsecure application 275 . As an example, this content location may remain unmodified at this point.
- the receiving secure framework 230 may remove the modification from the launch request and may modify the content location.
- the modification of the content location may involve appending a URI with some identifier to indicate that the modified content location is associated with an unsecure application 275 .
- the receiving secure framework 230 may also cause an authentication request to be presented to the receiving secure application 280 .
- the authentication request can cause the receiving secure application 280 to request some form of authentication from the user, such as a personal identification number (PIN) request screen.
- PIN personal identification number
- the receiving secure application 280 launches, the user may be presented with a request for credentials, such as a PIN, and if the user provides the correct response, the receiving secure application 280 may become active. If the user is unable to provide the proper credentials, however, the receiving secure application 280 may abort the launch procedure and shut down.
- credentials such as a PIN
- the receiving secure application 280 may then request the content to be shared, and the receiving secure framework 230 may remove the modification to the content location, as previously described. Because the content request is destined for an unsecure application 275 , the content request may not be modified. As with previous cases, the modification of the content location enables the receiving secure framework 230 to distinguish between different versions (secure and unsecure) of the same application.
- the relevant unsecure application 275 in response to the content request, can return the requested content to the receiving secure application 280 . In this example, the content returned to the receiving secure application 280 may not need to be decrypted because the content is originating from an unsecure application 275 .
- the secure application 280 may take steps to have the returned content encrypted, particularly before the content is sent outside the secure workspace 290 .
- the processes described herein may be under the direction of, facilitated by or at least assisted by one or more of the processing units 250 of FIG. 2 .
- Other circuitry and hardware components of the computing device 125 may also provide such support.
- the encryption unit 262 may handle the encryption and decryption of the exchanged content, while the authentication unit 264 may facilitate the authentication of the user when using, for example, a secure application 280 .
- a secure application may generate a content request to access or retrieve content, and one or more secure applications and one or more unsecure applications that have the ability to satisfy the request may be returned and displayed to a user of the requesting secure application. Steps can be taken to modify subsequent requests and returns to enable the isolation of secure interprocess communications from unauthorized processes, such as the unsecure applications.
- an unsecure application may be a target application that is converted into a secure application, and both the unsecure application and related or corresponding secure application may be installed on the same computing device.
- the processes in place may be able to distinguish between the unsecure application and the corresponding secure application to ensure the correct content is delivered to the requesting secure application.
- an unsecure application may generate a content request to share content, and any number of secure application and unsecure applications that can process the request may be returned and displayed. If content is to be shared with a secure application, for example, the user may be required to enter some form of credentials. In any event, the principle of protecting secure data or content from unsecure applications or other unauthorized processes may be maintained in this exchange. Further, the modification techniques can ensure that the content to be shared is delivered to the correct version (secure versus unsecure) of application.
- each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s).
- the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- User Interface Of Digital Computer (AREA)
- Storage Device Security (AREA)
Abstract
Description
Claims (23)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/525,932 US9098715B1 (en) | 2014-10-28 | 2014-10-28 | Method and system for exchanging content between applications |
PCT/US2015/057572 WO2016069595A1 (en) | 2014-10-28 | 2015-10-27 | Method and system for exchanging content between applications |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/525,932 US9098715B1 (en) | 2014-10-28 | 2014-10-28 | Method and system for exchanging content between applications |
Publications (1)
Publication Number | Publication Date |
---|---|
US9098715B1 true US9098715B1 (en) | 2015-08-04 |
Family
ID=53718978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/525,932 Expired - Fee Related US9098715B1 (en) | 2014-10-28 | 2014-10-28 | Method and system for exchanging content between applications |
Country Status (2)
Country | Link |
---|---|
US (1) | US9098715B1 (en) |
WO (1) | WO2016069595A1 (en) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9350818B2 (en) | 2014-09-05 | 2016-05-24 | Openpeak Inc. | Method and system for enabling data usage accounting for unreliable transport communication |
US20170061148A1 (en) * | 2015-08-25 | 2017-03-02 | Oracle International Corporation | Restrictive access control for modular reflection |
US10078497B2 (en) | 2015-07-24 | 2018-09-18 | Oracle International Corporation | Bridging a module system and a non-module system |
US10282184B2 (en) | 2016-09-16 | 2019-05-07 | Oracle International Corporation | Metadata application constraints within a module system based on modular dependencies |
US10284627B2 (en) | 2013-03-29 | 2019-05-07 | Citrix Systems, Inc. | Data management for an application with multiple operation modes |
US10339302B2 (en) * | 2015-05-21 | 2019-07-02 | Airwatch Llc | Creating multiple workspaces in a device |
US10387142B2 (en) | 2016-09-16 | 2019-08-20 | Oracle International Corporation | Using annotation processors defined by modules with annotation processors defined by non-module code |
US10394528B2 (en) | 2016-03-30 | 2019-08-27 | Oracle International Corporation | Returning a runtime type loaded from an archive in a module system |
US10402546B1 (en) | 2011-10-11 | 2019-09-03 | Citrix Systems, Inc. | Secure execution of enterprise applications on mobile devices |
US10417024B2 (en) | 2016-03-30 | 2019-09-17 | Oracle International Corporation | Generating verification metadata and verifying a runtime type based on verification metadata |
US10459708B2 (en) | 2015-07-24 | 2019-10-29 | Oracle International Corporation | Composing a module system and a non-module system |
US10476885B2 (en) | 2013-03-29 | 2019-11-12 | Citrix Systems, Inc. | Application with multiple operation modes |
US10545748B2 (en) | 2012-10-16 | 2020-01-28 | Citrix Systems, Inc. | Wrapping unmanaged applications on a mobile device |
US10706171B2 (en) * | 2015-06-24 | 2020-07-07 | Samsung Electrônica da Amazônia Ltda. | Method for providing a secure mode for mobile device applications |
US10848410B2 (en) | 2017-03-29 | 2020-11-24 | Oracle International Corporation | Ranking service implementations for a service interface |
US10908896B2 (en) | 2012-10-16 | 2021-02-02 | Citrix Systems, Inc. | Application wrapping for application management framework |
Citations (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6609199B1 (en) * | 1998-10-26 | 2003-08-19 | Microsoft Corporation | Method and apparatus for authenticating an open system application to a portable IC device |
US20120311010A1 (en) * | 2011-05-31 | 2012-12-06 | Amit Shah | Mechanism for peer-to-peer file sharing by individual client networking applications |
US20130063619A1 (en) * | 2011-09-09 | 2013-03-14 | Brother Kogyo Kabushiki Kaisha | Information processing program, information processing apparatus and information processing method |
US20140230011A1 (en) | 2012-01-06 | 2014-08-14 | Mobile Iron, Inc | User Interface for Secure Virtual Document Management System |
US20140230008A1 (en) | 2013-02-14 | 2014-08-14 | Vmware, Inc. | Method and apparatus for application awareness in a network |
US8812868B2 (en) | 2011-03-21 | 2014-08-19 | Mocana Corporation | Secure execution of unsecured apps on a device |
US20140245381A1 (en) | 2012-12-06 | 2014-08-28 | Airwatch, Llc | Systems and Methods for Controlling Email Access |
US20140245008A1 (en) | 2012-12-06 | 2014-08-28 | Airwatch, Llc | Systems and Methods for Controlling Email Access |
US20140250505A1 (en) | 2013-03-01 | 2014-09-04 | Mobile Iron, Inc. | Multi-user use of single-user apps |
US8832652B2 (en) | 2010-03-26 | 2014-09-09 | Bmc Software, Inc. | Method for customizing software applications |
US20140282829A1 (en) | 2013-03-15 | 2014-09-18 | Sky Socket, Llc | Incremental compliance remediation |
US20140282869A1 (en) | 2013-03-15 | 2014-09-18 | Sky Socket, Llc | Certificate based profile confirmation |
US20140282897A1 (en) | 2013-03-15 | 2014-09-18 | Sky Socket, Llc | Application program as key for authorizing access to resources |
US20140282894A1 (en) | 2013-03-15 | 2014-09-18 | Sky Socket, Llc | Delegating authorization to applications on a client device in a networked environment |
US20140280934A1 (en) | 2013-03-14 | 2014-09-18 | Sky Socket, Llc | Controlling resources used by computing devices |
US20140282828A1 (en) | 2013-03-15 | 2014-09-18 | Sky Socket, Llc | Data Access Sharing |
US8850424B2 (en) | 2011-05-04 | 2014-09-30 | Apperian, Inc. | Processing, modification, distribution of installation packages |
US20140325664A1 (en) | 2013-04-24 | 2014-10-30 | Symantec Corporation | Systems and methods for replacing application methods at runtime |
US8887150B2 (en) | 2013-03-12 | 2014-11-11 | Bluebox Security Inc. | Methods for dynamic mobile application behavior modification subject to a behavior policy |
US8893298B2 (en) | 2011-02-11 | 2014-11-18 | Mocana Corporation | Network linker for secure execution of unsecured apps on a device |
US8924970B2 (en) | 2011-08-05 | 2014-12-30 | Vmware, Inc. | Sharing work environment information sources with personal environment applications |
US20150019994A1 (en) * | 2013-07-11 | 2015-01-15 | Apple Inc. | Contextual reference information on a remote device |
US8955142B2 (en) | 2011-03-21 | 2015-02-10 | Mocana Corporation | Secure execution of unsecured apps on a device |
US8984657B2 (en) | 2009-09-08 | 2015-03-17 | Appcentral, Inc. | System and method for remote management of applications downloaded to a personal portable wireless appliance |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003202929A (en) * | 2002-01-08 | 2003-07-18 | Ntt Docomo Inc | Distribution method and distribution system |
KR100596135B1 (en) * | 2004-02-24 | 2006-07-03 | 소프트캠프(주) | Control system for access classified by application in virtual disk and Controling method thereof |
US7725737B2 (en) * | 2005-10-14 | 2010-05-25 | Check Point Software Technologies, Inc. | System and methodology providing secure workspace environment |
KR101089792B1 (en) * | 2009-07-07 | 2011-12-07 | 이병철 | Method for providing security for application virtualization |
-
2014
- 2014-10-28 US US14/525,932 patent/US9098715B1/en not_active Expired - Fee Related
-
2015
- 2015-10-27 WO PCT/US2015/057572 patent/WO2016069595A1/en active Application Filing
Patent Citations (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6609199B1 (en) * | 1998-10-26 | 2003-08-19 | Microsoft Corporation | Method and apparatus for authenticating an open system application to a portable IC device |
US8984657B2 (en) | 2009-09-08 | 2015-03-17 | Appcentral, Inc. | System and method for remote management of applications downloaded to a personal portable wireless appliance |
US8832652B2 (en) | 2010-03-26 | 2014-09-09 | Bmc Software, Inc. | Method for customizing software applications |
US8893298B2 (en) | 2011-02-11 | 2014-11-18 | Mocana Corporation | Network linker for secure execution of unsecured apps on a device |
US8812868B2 (en) | 2011-03-21 | 2014-08-19 | Mocana Corporation | Secure execution of unsecured apps on a device |
US8955142B2 (en) | 2011-03-21 | 2015-02-10 | Mocana Corporation | Secure execution of unsecured apps on a device |
US8850424B2 (en) | 2011-05-04 | 2014-09-30 | Apperian, Inc. | Processing, modification, distribution of installation packages |
US20120311010A1 (en) * | 2011-05-31 | 2012-12-06 | Amit Shah | Mechanism for peer-to-peer file sharing by individual client networking applications |
US8924970B2 (en) | 2011-08-05 | 2014-12-30 | Vmware, Inc. | Sharing work environment information sources with personal environment applications |
US20130063619A1 (en) * | 2011-09-09 | 2013-03-14 | Brother Kogyo Kabushiki Kaisha | Information processing program, information processing apparatus and information processing method |
US20140230011A1 (en) | 2012-01-06 | 2014-08-14 | Mobile Iron, Inc | User Interface for Secure Virtual Document Management System |
US20140245008A1 (en) | 2012-12-06 | 2014-08-28 | Airwatch, Llc | Systems and Methods for Controlling Email Access |
US20140245381A1 (en) | 2012-12-06 | 2014-08-28 | Airwatch, Llc | Systems and Methods for Controlling Email Access |
US20140230008A1 (en) | 2013-02-14 | 2014-08-14 | Vmware, Inc. | Method and apparatus for application awareness in a network |
US20140250505A1 (en) | 2013-03-01 | 2014-09-04 | Mobile Iron, Inc. | Multi-user use of single-user apps |
US8887150B2 (en) | 2013-03-12 | 2014-11-11 | Bluebox Security Inc. | Methods for dynamic mobile application behavior modification subject to a behavior policy |
US20140280934A1 (en) | 2013-03-14 | 2014-09-18 | Sky Socket, Llc | Controlling resources used by computing devices |
US20140282828A1 (en) | 2013-03-15 | 2014-09-18 | Sky Socket, Llc | Data Access Sharing |
US20140282894A1 (en) | 2013-03-15 | 2014-09-18 | Sky Socket, Llc | Delegating authorization to applications on a client device in a networked environment |
US20140282897A1 (en) | 2013-03-15 | 2014-09-18 | Sky Socket, Llc | Application program as key for authorizing access to resources |
US20140282869A1 (en) | 2013-03-15 | 2014-09-18 | Sky Socket, Llc | Certificate based profile confirmation |
US20140282829A1 (en) | 2013-03-15 | 2014-09-18 | Sky Socket, Llc | Incremental compliance remediation |
US20140325664A1 (en) | 2013-04-24 | 2014-10-30 | Symantec Corporation | Systems and methods for replacing application methods at runtime |
US20150019994A1 (en) * | 2013-07-11 | 2015-01-15 | Apple Inc. | Contextual reference information on a remote device |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10469534B2 (en) | 2011-10-11 | 2019-11-05 | Citrix Systems, Inc. | Secure execution of enterprise applications on mobile devices |
US10402546B1 (en) | 2011-10-11 | 2019-09-03 | Citrix Systems, Inc. | Secure execution of enterprise applications on mobile devices |
US11134104B2 (en) | 2011-10-11 | 2021-09-28 | Citrix Systems, Inc. | Secure execution of enterprise applications on mobile devices |
US10908896B2 (en) | 2012-10-16 | 2021-02-02 | Citrix Systems, Inc. | Application wrapping for application management framework |
US10545748B2 (en) | 2012-10-16 | 2020-01-28 | Citrix Systems, Inc. | Wrapping unmanaged applications on a mobile device |
US10476885B2 (en) | 2013-03-29 | 2019-11-12 | Citrix Systems, Inc. | Application with multiple operation modes |
US10284627B2 (en) | 2013-03-29 | 2019-05-07 | Citrix Systems, Inc. | Data management for an application with multiple operation modes |
US10965734B2 (en) | 2013-03-29 | 2021-03-30 | Citrix Systems, Inc. | Data management for an application with multiple operation modes |
US10701082B2 (en) | 2013-03-29 | 2020-06-30 | Citrix Systems, Inc. | Application with multiple operation modes |
US9350818B2 (en) | 2014-09-05 | 2016-05-24 | Openpeak Inc. | Method and system for enabling data usage accounting for unreliable transport communication |
US10339302B2 (en) * | 2015-05-21 | 2019-07-02 | Airwatch Llc | Creating multiple workspaces in a device |
US10706171B2 (en) * | 2015-06-24 | 2020-07-07 | Samsung Electrônica da Amazônia Ltda. | Method for providing a secure mode for mobile device applications |
US10459708B2 (en) | 2015-07-24 | 2019-10-29 | Oracle International Corporation | Composing a module system and a non-module system |
US10078497B2 (en) | 2015-07-24 | 2018-09-18 | Oracle International Corporation | Bridging a module system and a non-module system |
US10367822B2 (en) | 2015-08-25 | 2019-07-30 | Oracle International Corporation | Restrictive access control for modular reflection |
US10158647B2 (en) * | 2015-08-25 | 2018-12-18 | Oracle International Corporation | Permissive access control for modular reflection |
US10104090B2 (en) * | 2015-08-25 | 2018-10-16 | Oracle International Corporation | Restrictive access control for modular reflection |
US20170063874A1 (en) * | 2015-08-25 | 2017-03-02 | Oracle International Corporation | Permissive access control for modular reflection |
US20170061148A1 (en) * | 2015-08-25 | 2017-03-02 | Oracle International Corporation | Restrictive access control for modular reflection |
US10417024B2 (en) | 2016-03-30 | 2019-09-17 | Oracle International Corporation | Generating verification metadata and verifying a runtime type based on verification metadata |
US10394528B2 (en) | 2016-03-30 | 2019-08-27 | Oracle International Corporation | Returning a runtime type loaded from an archive in a module system |
US10789047B2 (en) | 2016-03-30 | 2020-09-29 | Oracle International Corporation | Returning a runtime type loaded from an archive in a module system |
US10713025B2 (en) | 2016-09-16 | 2020-07-14 | Oracle International Corporation | Metadata application constraints within a module system based on modular dependencies |
US10387142B2 (en) | 2016-09-16 | 2019-08-20 | Oracle International Corporation | Using annotation processors defined by modules with annotation processors defined by non-module code |
US10360008B2 (en) | 2016-09-16 | 2019-07-23 | Oracle International Corporation | Metadata application constraints within a module system based on modular encapsulation |
US11048489B2 (en) | 2016-09-16 | 2021-06-29 | Oracle International Corporation | Metadata application constraints within a module system based on modular encapsulation |
US10282184B2 (en) | 2016-09-16 | 2019-05-07 | Oracle International Corporation | Metadata application constraints within a module system based on modular dependencies |
US10848410B2 (en) | 2017-03-29 | 2020-11-24 | Oracle International Corporation | Ranking service implementations for a service interface |
Also Published As
Publication number | Publication date |
---|---|
WO2016069595A1 (en) | 2016-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9098715B1 (en) | Method and system for exchanging content between applications | |
US9165139B2 (en) | System and method for creating secure applications | |
US8769268B2 (en) | System and methods providing secure workspace sessions | |
US9430211B2 (en) | System and method for sharing information in a private ecosystem | |
JP6079875B2 (en) | Application execution program, application execution method, and information processing terminal device for executing application | |
US20140096230A1 (en) | Method and system for sharing vpn connections between applications | |
US10630722B2 (en) | System and method for sharing information in a private ecosystem | |
KR20160043029A (en) | Secure authentication and switching to encrypted domains | |
JP7076641B2 (en) | Systems and methods for push delivery notification services for SAAS applications | |
US11610008B2 (en) | Snap-in secret server support for protecting secret information | |
US20220100874A1 (en) | Data loss protection on secondary displays | |
JP6994607B1 (en) | Systems and methods for intellisense for SAAS applications | |
JP7022257B2 (en) | Systems and methods for latency masking through the prefix cache | |
EP3298534B1 (en) | Creating multiple workspaces in a device | |
US20160188872A1 (en) | Method and system for runtime injection of secure applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: OPENPEAK INC., FLORIDA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SPEAR, STEPHEN K., JR.;DOBSON, ANDREW JAMES;SIGNING DATES FROM 20141029 TO 20141126;REEL/FRAME:034270/0440 |
|
AS | Assignment |
Owner name: OPENPEAK INC., FLORIDA Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE INCORRECT APPLICATION NUMBER LISTED ON THE RECORDATION SHEET PREVIOUSLY RECORDED ON REEL 034270 FRAME 0440. ASSIGNOR(S) HEREBY CONFIRMS THE APPLICATION SHOULD BE CORRECTED FROM "14/252,932" TO READ "14/525,932";ASSIGNORS:SPEAR, STEPHEN K., JR.;DOBSON, ANDREW JAMES;SIGNING DATES FROM 20141029 TO 20141126;REEL/FRAME:034717/0349 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction | ||
AS | Assignment |
Owner name: OPENPEAK LLC, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:OPENPEAK, INC.;REEL/FRAME:042752/0945 Effective date: 20170424 |
|
AS | Assignment |
Owner name: OPENPEAK LLC, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:NI, HAO;REEL/FRAME:047675/0378 Effective date: 20170425 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
FEPP | Fee payment procedure |
Free format text: SURCHARGE FOR LATE PAYMENT, SMALL ENTITY (ORIGINAL EVENT CODE: M2554); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2551); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20230804 |