CN110716863A - 一种强制访问控制规则测试方法、系统、终端及存储介质 - Google Patents
一种强制访问控制规则测试方法、系统、终端及存储介质 Download PDFInfo
- Publication number
- CN110716863A CN110716863A CN201910820074.2A CN201910820074A CN110716863A CN 110716863 A CN110716863 A CN 110716863A CN 201910820074 A CN201910820074 A CN 201910820074A CN 110716863 A CN110716863 A CN 110716863A
- Authority
- CN
- China
- Prior art keywords
- rule
- test case
- protected object
- attribute
- test
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种强制访问控制规则测试方法、系统、终端及存储介质,包括:读取待测试规则信息;根据读取的规则信息获取被保护对象属性;根据所述被保护对象属性调用相应的测试用例;执行所述相应测试用例得到测试结果。本发明实现了自动化验证不同系统下的所有待测试规则,提高了测试效率,节省了人力资源和时间,且保证了测试覆盖度,避免规则漏检。
Description
技术领域
本发明属于服务器测试技术领域,具体涉及一种强制访问控制规则测试方法、系统、终端及存储介质。
背景技术
强制访问控制(Mandatory Access Control)是一种不允许主体干涉的访问控制类型。它是基于安全标识和信息分级等信息敏感性的访问控制。强制访问控制包括基于规则(Rule-Based)访问控制和管理指定型(Administratively-Based)访问控制。基于规则的强制访问控制具体实现是指由系统(通过专门设置的系统安全员)对用户所创建的对象进行统一的强制性控制,按照规定的规则决定哪些用户可以对哪些对象进行什么样操作系统类型的访问,即使是创建者用户,在创建一个对象后,也可能无权访问该对象。一般情况下,这种基于规则的强制访问控制功能是由一个安全防护软件或安全防护软件中的一个模块提供。
为了对操作系统实现全面的安全防护,基于规则的强制访问控制安全防护软件(或模块)一般会包含大量的预置规则,所以在进行此安全防护功能的测试时,需要测试大量的、不同的规则。此类安全防护软件一般都会支持市面上全部的windows和linux操作系统,并且Windows操作系统和Linux操作系统使用不同的规则,所以在进行测试时也需要测试全部的操作系统,测试工作量非常巨大。
发明内容
针对现有技术的上述不足,本发明提供一种强制访问控制规则测试方法、系统、终端及存储介质,以解决上述技术问题。
第一方面,本发明提供一种强制访问控制规则测试方法,包括:
读取待测试规则信息;
根据读取的规则信息获取被保护对象属性;
根据所述被保护对象属性调用相应的测试用例;
执行所述相应测试用例得到测试结果。
进一步的,所述根据读取的规则信息获取被保护对象属性,包括:
设置规则与被保护对应属性的映射关系;
获取与待测试规则具有映射关系的被保护对象属性。
进一步的,在所述根据被保护对象属性调用相应的测试用例之前,所述方法还包括:
根据被保护对象属性设置相应的测试用例,所述测试用例包括所述被保护对象的规则验证操作;
将所述测试用例存储至测试用例库。
进一步的,所述执行相应测试用例得到测试结果,包括:
获取所述测试用例对被保护对象的操作执行结果;
将执行结果为未生效的操作对应的规则信息存储至测试失败规则记录表。
第二方面,本发明提供一种强制访问控制规则测试系统,包括:
规则读取单元,配置用于读取待测试规则信息;
属性获取单元,配置用于根据读取的规则信息获取被保护对象属性;
用例调用单元,配置用于根据所述被保护对象属性调用相应的测试用例;
用例执行单元,配置用于执行所述相应测试用例得到测试结果。
进一步的,所述属性获取单元包括:
映射设置模块,配置用于设置规则与被保护对应属性的映射关系;
对象查找模块,配置用于获取与待测试规则具有映射关系的被保护对象属性。
进一步的,所述系统还包括:
用例设置单元,配置用于根据被保护对象属性设置相应的测试用例,所述测试用例包括所述被保护对象的规则验证操作;
用例存储单元,配置用于将所述测试用例存储至测试用例库。
进一步的,所述用例执行单元包括:
结果获取模块,配置用于获取所述测试用例对被保护对象的操作执行结果;
失败存储模块,配置用于将执行结果为未生效的操作对应的规则信息存储至测试失败规则记录表。
第三方面,提供一种终端,包括:
处理器、存储器,其中,
该存储器用于存储计算机程序,
该处理器用于从存储器中调用并运行该计算机程序,使得终端执行上述的终端的方法。
第四方面,提供了一种计算机存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
本发明的有益效果在于,
本发明提供的强制访问控制规则测试方法、系统、终端及存储介质,通过预先设置被保护对象的专用测试用例和被保护对象属性与规则信息的映射关系,通过读取待测试规则信息对被保护对象属性进行识别,进而调用被保护对象的专用测试用例,实现了自动化验证不同系统下的所有待测试规则,提高了测试效率,节省了人力资源和时间,且保证了测试覆盖度,避免规则漏检。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的方法的示意性流程图。
图2是本发明一个实施例的方法的示意性流程图。
图3是本发明一个实施例的系统的示意性框图。
图4为本发明实施例提供的一种终端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
下面对本发明中出现的关键术语进行解释。
强制访问控制规则一般由被保护对象和权限值组成。
权限值是指允许对被保护对象做的操作。根据被保护对象的不同分为不同的操作,如被保护对象为文件或注册表,权限值为:允许读、允许写、允许删除或重命名;如被保护对象为进程,权限值为:允许终止进程。
在Windows操作系统被保护对象,可以为文件、进程、注册表。在Linux系统,被保护对象,可以为文件和进程。
图1是本发明一个实施例的方法的示意性流程图。其中,图1执行主体可以为一种强制访问控制规则测试系统。
如图1所示,该方法100包括:
步骤110,读取待测试规则信息;
步骤120,根据读取的规则信息获取被保护对象属性;
步骤130,根据所述被保护对象属性调用相应的测试用例;
步骤140,执行所述相应测试用例得到测试结果。
可选地,作为本发明一个实施例,所述根据读取的规则信息获取被保护对象属性,包括:
设置规则与被保护对应属性的映射关系;
获取与待测试规则具有映射关系的被保护对象属性。
可选地,作为本发明一个实施例,在所述根据被保护对象属性调用相应的测试用例之前,所述方法还包括:
根据被保护对象属性设置相应的测试用例,所述测试用例包括所述被保护对象的规则验证操作;
将所述测试用例存储至测试用例库。
可选地,作为本发明一个实施例,所述执行相应测试用例得到测试结果,包括:
获取所述测试用例对被保护对象的操作执行结果;
将执行结果为未生效的操作对应的规则信息存储至测试失败规则记录表。
为了便于对本发明的理解,下面以本发明强制访问控制规则测试方法的原理,结合实施例中对强制访问控制系统的规则进行测试的过程,对本发明提供的强制访问控制规则测试方法做进一步的描述。
具体的,如图2所示,所述强制访问控制规则测试方法包括以下步骤:
S1、读取待测试规则信息。
使用python第三方模块库读取到强制访问控制规则的详细信息。读取规则信息的方式一般有两个,一是可以通过读取安全防护软件数据库的方式直接读取到强制访问控制规则,另外也可以通过读取独立于安全防护软件的excel文件、xml文件等获得强制访问控制规则。如果通过读取数据库的方式,需要使用python的第三方模块库mysql;如果通过读取excel的方式,则需要使用第三方模块库xlrd,等等。
S2、根据读取的规则信息获取被保护对象属性。
每种属性的被保护对象都对应多种规则,令一种属性的被保护对象对应一种规则集合。建立被保护对象属性与规则集合的映射关系。根据映射关系和步骤S1读取的待测试规则信息,即可得到被保护对象属性。
S3、根据所述被保护对象属性调用相应的测试用例。
测试执行前需预先设置好被保护对象对应的测试用例。使用unittest自动化测试框架,使用python语言编写测试用例,unittest可实现用例自动化执行和测试执行结果的记录。测试用例的内容包含被保护对象的规则验证操作,验证原理为:测试可以对被保护对象进行权限值内的操作;测试不可以对被保护对象进行允许权限值外的操作。具体验证操作例如:使用windows、linux操作系统命令,编写测试方法对操作系统的文件、进程、注册表进行读、复制、写、重命名、删除等操作,从而模拟人工对文件、进程、注册表的各种操作。将设置的所有测试用例存储至测试用例库中。
不同属性的被保护对象需要执行的验证操作不同,因此不同属性的被保护对象对应不同的测试用例。每种属性的被保护对应对应唯一一个测试用例,步骤S3得到被保护对象的属性后,即可从测试用例库中调取相应的测试用例。
S4、执行所述相应测试用例得到测试结果。
执行步骤S3中与被保护对象对应的测试用例,记录测试用例的每个验证操作是否成功,并结合被保护对象的权限值,判断保护是否生效,即:是否可以对被保护对象做允许的操作,是否不可以对被保护对象做不允许的操作。是否生效的判断逻辑如下:
文件操作 | 操作是否成功 | 权限值是否包含读操作 | 记录测试结果 |
读 | 成功 | 包含 | 读操作测试成功 |
读 | 失败 | 不包含 | 读操作测试成功 |
读 | 失败 | 包含 | 读操作测试失败 |
读 | 成功 | 不包含 | 读操作测试失败 |
进程和注册表的测试也是同理:如果是进程,通过命令的方式实现对被保护进程尝试进行kill操作,再根据此条规则的权限值进行判断,得出测试结果;如果是注册表,通过命令的方式实现对被保护注册表尝试进行查询、复制(对于读权限)、创建子项、创建键值(对应写权限)、删除项(对应删除权限),再根据此条规则的权限值进行判断,得出测试结果。
使用python语言中的list进行测试失败规则的记录,这样可以保证在执行测试时所有的规则都可以被测试,不会在出现失败时就退出。具体使用方法为:在自动化测试用例开头设置空list,如err_list=[],当遇到测试结果为测试失败的情况时,将相应的规则ID放入err_list当中。在遍历完所有规则后,检查list的长度。List的长度即为测试失败的规则数量,最后输出list,里面所含规则ID即为所有测试失败的规则。
如果err_list长度为0,则说明所有的规则均测试通过。
如图3示,该系统300包括:
规则读取单元310,配置用于读取待测试规则信息;
属性获取单元320,配置用于根据读取的规则信息获取被保护对象属性;
用例调用单元330,配置用于根据所述被保护对象属性调用相应的测试用例;
用例执行单元340,配置用于执行所述相应测试用例得到测试结果。
可选地,作为本发明一个实施例,所述属性获取单元包括:
映射设置模块,配置用于设置规则与被保护对应属性的映射关系;
对象查找模块,配置用于获取与待测试规则具有映射关系的被保护对象属性。
可选地,作为本发明一个实施例,所述系统还包括:
用例设置单元,配置用于根据被保护对象属性设置相应的测试用例,所述测试用例包括所述被保护对象的规则验证操作;
用例存储单元,配置用于将所述测试用例存储至测试用例库。
可选地,作为本发明一个实施例,所述用例执行单元包括:
结果获取模块,配置用于获取所述测试用例对被保护对象的操作执行结果;
失败存储模块,配置用于将执行结果为未生效的操作对应的规则信息存储至测试失败规则记录表。
图4为本发明实施例提供的一种终端系统400的结构示意图,该终端系统400可以用于执行本发明实施例提供的强制访问控制规则测试方法。
其中,该终端系统400可以包括:处理器410、存储器420及通信单元430。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中,该存储器420可以用于存储处理器410的执行指令,存储器420可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。当存储器420中的执行指令由处理器410执行时,使得终端400能够执行以下上述方法实施例中的部分或全部步骤。
处理器410为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器420内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(Integrated Circuit,简称IC)组成,例如可以由单颗封装的IC所组成,也可以由连接多颗相同功能或不同功能的封装IC而组成。举例来说,处理器410可以仅包括中央处理器(Central Processing Unit,简称CPU)。在本发明实施方式中,CPU可以是单运算核心,也可以包括多运算核心。
通信单元430,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。
本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时可包括本发明提供的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-only memory,简称:ROM)或随机存储记忆体(英文:random access memory,简称:RAM)等。
因此,本发明通过预先设置被保护对象的专用测试用例和被保护对象属性与规则信息的映射关系,通过读取待测试规则信息对被保护对象属性进行识别,进而调用被保护对象的专用测试用例,实现了自动化验证不同系统下的所有待测试规则,提高了测试效率,节省了人力资源和时间,且保证了测试覆盖度,避免规则漏检,本实施例所能达到的技术效果可以参见上文中的描述,此处不再赘述。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种强制访问控制规则测试方法,其特征在于,包括:
读取待测试规则信息;
根据读取的规则信息获取被保护对象属性;
根据所述被保护对象属性调用相应的测试用例;
执行所述相应测试用例得到测试结果。
2.根据权利要求1所述的方法,其特征在于,所述根据读取的规则信息获取被保护对象属性,包括:
设置规则与被保护对应属性的映射关系;
获取与待测试规则具有映射关系的被保护对象属性。
3.根据权利要求1所述的方法,其特征在于,在所述根据被保护对象属性调用相应的测试用例之前,所述方法还包括:
根据被保护对象属性设置相应的测试用例,所述测试用例包括所述被保护对象的规则验证操作;
将所述测试用例存储至测试用例库。
4.根据权利要求1所述的方法,其特征在于,所述执行相应测试用例得到测试结果,包括:
获取所述测试用例对被保护对象的操作执行结果;
将执行结果为未生效的操作对应的规则信息存储至测试失败规则记录表。
5.一种强制访问控制规则测试系统,其特征在于,包括:
规则读取单元,配置用于读取待测试规则信息;
属性获取单元,配置用于根据读取的规则信息获取被保护对象属性;
用例调用单元,配置用于根据所述被保护对象属性调用相应的测试用例;
用例执行单元,配置用于执行所述相应测试用例得到测试结果。
6.根据权利要求5所述的系统,其特征在于,所述属性获取单元包括:
映射设置模块,配置用于设置规则与被保护对应属性的映射关系;
对象查找模块,配置用于获取与待测试规则具有映射关系的被保护对象属性。
7.根据权利要求5所述的系统,其特征在于,所述系统还包括:
用例设置单元,配置用于根据被保护对象属性设置相应的测试用例,所述测试用例包括所述被保护对象的规则验证操作;
用例存储单元,配置用于将所述测试用例存储至测试用例库。
8.根据权利要求5所述的系统,其特征在于,所述用例执行单元包括:
结果获取模块,配置用于获取所述测试用例对被保护对象的操作执行结果;
失败存储模块,配置用于将执行结果为未生效的操作对应的规则信息存储至测试失败规则记录表。
9.一种终端,其特征在于,包括:
处理器;
用于存储处理器的执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-4任一项所述的方法。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910820074.2A CN110716863A (zh) | 2019-08-31 | 2019-08-31 | 一种强制访问控制规则测试方法、系统、终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910820074.2A CN110716863A (zh) | 2019-08-31 | 2019-08-31 | 一种强制访问控制规则测试方法、系统、终端及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110716863A true CN110716863A (zh) | 2020-01-21 |
Family
ID=69209628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910820074.2A Withdrawn CN110716863A (zh) | 2019-08-31 | 2019-08-31 | 一种强制访问控制规则测试方法、系统、终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110716863A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111475481A (zh) * | 2020-02-29 | 2020-07-31 | 苏州浪潮智能科技有限公司 | 一种hdfs资源权限测试方法、系统、终端及存储介质 |
-
2019
- 2019-08-31 CN CN201910820074.2A patent/CN110716863A/zh not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111475481A (zh) * | 2020-02-29 | 2020-07-31 | 苏州浪潮智能科技有限公司 | 一种hdfs资源权限测试方法、系统、终端及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112256558A (zh) | 一种测试用例的生成方法、装置、计算机设备及存储介质 | |
CN111104392B (zh) | 一种数据库迁移方法、装置、电子设备及存储介质 | |
CN105324750A (zh) | 开发环境系统、开发环境装置、开发环境提供方法及程序 | |
CN108415998A (zh) | 应用依赖关系更新方法、终端、设备及存储介质 | |
CN110147354B (zh) | 批量数据编辑方法、装置、计算机设备及存储介质 | |
CN112162976A (zh) | 一种数据对账方法、装置、设备及存储介质 | |
CN108427634A (zh) | 电子装置、测试的方法及计算机可读存储介质 | |
CN110716863A (zh) | 一种强制访问控制规则测试方法、系统、终端及存储介质 | |
CN110765008B (zh) | 一种数据处理方法及装置 | |
CN112214384A (zh) | 一种硬盘序列号管理方法、系统、终端及存储介质 | |
CN117495544A (zh) | 一种基于沙箱的风控评估方法、系统、终端及存储介质 | |
CN116599881A (zh) | 云平台租户建模测试的方法、装置、设备及存储介质 | |
CN110865932A (zh) | 一种程序内部接口测试方法、系统、终端及存储介质 | |
CN111124772A (zh) | 一种云平台存储性能测试方法、系统、终端及存储介质 | |
CN112463042B (zh) | 一种数据卷导入数据校验方法、装置、终端及存储介质 | |
CN113111378B (zh) | 终端、存储介质、注解方法及系统、前置校验方法及系统 | |
CN112463633B (zh) | 一种片上存储器的地址译码校验方法、装置、设备及介质 | |
CN109840213B (zh) | 一种gui测试的测试数据创建方法、装置、终端及存储介质 | |
CN114115933A (zh) | 软件升级的方法、系统、装置、电子设备及介质 | |
CN110532533B (zh) | 表格精度配置化方法、装置、计算机设备以及存储介质 | |
CN111694727A (zh) | 一种网卡固件升降级测试方法、系统、终端及存储介质 | |
CN110543459A (zh) | 一种nfs下文件锁状态获取方法、系统、终端及存储介质 | |
CN110995526A (zh) | 一种数据库资源隔离测试方法、系统、终端及存储介质 | |
CN111737090A (zh) | 日志仿真方法、装置、计算机设备和存储介质 | |
CN111104312A (zh) | 一种测试用例变量存储管理方法、系统、终端及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200121 |
|
WW01 | Invention patent application withdrawn after publication |