CN112543197A - 一种xfrm框架下对ipsec实现硬件加解密的方法 - Google Patents
一种xfrm框架下对ipsec实现硬件加解密的方法 Download PDFInfo
- Publication number
- CN112543197A CN112543197A CN202011408681.7A CN202011408681A CN112543197A CN 112543197 A CN112543197 A CN 112543197A CN 202011408681 A CN202011408681 A CN 202011408681A CN 112543197 A CN112543197 A CN 112543197A
- Authority
- CN
- China
- Prior art keywords
- xfrm
- linked list
- ipsec
- framework
- sending
- 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.)
- Granted
Links
Images
Classifications
-
- 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/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- 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/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- 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/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0853—Network architectures or network communication protocols for network security for authentication of entities using an additional device, e.g. smartcard, SIM or a different communication terminal
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明提供了一种XFRM框架下对IPSEC实现硬件加解密的方法,包括XFRM框架发送IPSEC报文流程和XFRM框架接收IPSEC报文流程;对Linux内核的XFRM框架中的IPSEC报文发送和接收处理流程增加发送链表和接收链表来对报文的转发和处理;采用内核工作队列处理与硬件模块通信功能的方式来代替软中断的方式,实现在内核中与外部硬件加密卡通信;通过XFRM发送工作队列与XFRM接收工作队列分别对发送链表和接收链表的数据报文的处理,互不影响。
Description
技术领域
本发明涉及计算机通信,尤其涉及一种XFRM框架下对IPSEC实现硬件加解密的方法。
背景技术
XFRM为Linux内核中为安全处理引入的一个可扩展功能框架,用于在数据包经过路由路径的过程中对其进行修改和处理。XFRM框架主要对IPSEC报文AH协议和ESP协议报文进行处理,包括对数据包的认证和加解密,XFRM流程中通过调用Linux内核的CRYPTO库来实现对具体报文的认证和加解密,Linux内核中CRYPTO库默认支持的认证和加解密方式一般有:AES、DES、MD5、SHA1等方式,都是通过软件来实现的。
由于XFRM的报文处理属于Linux的一种软中断处理流程,其特点是:对数据包的认证和加解密时调用CRYPTO库注册的算法时候不能进行睡眠和任务调度操作。
随着国家商用密码算法SM1~SM4的出现,国家商用密码算法逐渐适用到IPSEC报文的认证和加解密,其中SM2~SM4可以通过软件实现,可按照CRYPTO库的流程进行注册和实现,而SM1实现只能通过硬件芯片实现,如USB KEY模块,在CRYPTO库注册后调用SM1算法时候需要与USB KEY模块通信,当CPU与外设USB KEY硬件通信时存在有等待外设IO的操作,因此不能适用在原先的软中断处理流程中。因此XFRM处理IPSEC报文的流程需要适配这种通过硬件芯片的方式进行认证和加解密。
发明内容
本发明的目的在于针对上述现有技术的不足,提供了一种XFRM框架下对IPSEC实现硬件加解密的方法,实现了Linux4内核XFRM框架下通过硬件芯片实现IPSEC报文的认证与加解密,使得XFRM框架下发送和接收IPSEC报文不再受到硬件芯片的影响.
为实现上述目的,本发明采用了如下技术方案:
本发明提供了一种XFRM框架下对IPSEC实现硬件加解密的方法,包括XFRM框架发送IPSEC报文流程和XFRM框架接收IPSEC报文流程;
所述XFRM框架发送IPSEC报文流程为:
S1、内核定义XFRM_SEND双向链表,并在网络初始化时对链表进行初始化;
S2、内核定义workqueue_s工队队列,用于处理发送报文流程,并在网络初始化时初始化该工作队列。
进一步,所述步骤S1中增加如下步骤:
S11、xfrm4_lookup函数查找到SA后对数据包和参数保存到XFRM_SEND双向链表,并对每个链表属性增加发送标志位属性并设置为待发送状态;
S12、遍历XFRM_SEND双向链表,查询链表节点的待发送标志,对没有待发送标志的链表节点进行删除和释放资源的操作;
S13、调度发送报文工作队列workqueue_s。
进一步,所述步骤S2中增加的步骤为:
S21、遍历XFRM_SEND双向链表的节点;
S22、判断当前节点的待发送标志位,如有待发送标志则调用IPSEC报文发送子流程函数,调用完成后清除待发送标志位,然后继续遍历下一个节点;
S23、如没有待发送标志位,则继续遍历XFRM_SEND链表,直到结束。
进一步,所述XFRM框架接收IPSEC报文流程为:
1)内核定义XFRM_RCV双向链表,并在网络初始化时对链表进行初始化;
2)内核定义workqueue_r工队队列,用于处理接收流程,并在网络初始化时初始化该工作队列。
进一步,所述步骤1)中增加如下步骤:
11)xfrm_state_lookup函数查找到SA后对数据包和参数保存到XFRM_RCV双向链表,并对每个链表属性增加待接收标志位属性并设置;
12)遍历XFRM_RCV双向链表,查询链表节点的待接收标志,对没有待接收标志的链表节点进行删除和释放资源的操作;
13)调度接收工作队列workqueue_r。
进一步,所述步骤2)中增加如下步骤:
21)遍历XFRM_RCV双向链表的节点;
22)判断当前节点的待接收标志位,如有待接收标志则调用IPSEC报文接收子流程函数,调用完成后清除待接收标志位,然后继续遍历下一个节点;
23)如没有待接收标志位,则继续遍历XFRM_RCV链表,直到结束。
进一步,IPSEC报文有传输和随到两种模式,根据AH或者ESP两种协议选择分别调用ah_input与esp_input函数,在这两个函数中实现对报文数据的认证和解密。
本发明的有益效果为:对Linux内核的XFRM框架中的IPSEC报文发送和接收处理流程增加发送链表和接收链表来对报文的转发和处理;
采用内核工作队列处理与硬件模块通信功能的方式来代替软中断的方式,实现在内核中与外部硬件加密卡通信;
通过XFRM发送工作队列与XFRM接收工作队列分别对发送链表和接收链表的数据报文的处理,互不影响。
功能完备性:在Linux4内核的XFRM框架上,增加XFRM扩展框架,实现IPSEC报文通过硬件USB KEY的方式实现认证和加解密操作,实现了在XFRM框架中支持与各种外部硬件模块的通信,功能完备;
实现拓展性:采用内核工作队列处理与硬件模块通信功能的方式来代替软中断处理报文的方式,该方法可拓展用于处理一些需要进行睡眠和调度的操作;
接口标准性:具体认证和加解密的算法的注册方式采用标准Linux内核CRYPTO库注册的方式,与具体的硬件芯片和机制无关,
集成透明性:用户在Linux内核层通过增加XFRM扩展框架实现对硬件加密模块的支持,由扩展框架完成对数据包的转发和处理,在应用层无需关心对增加的链表和队列处理,应用开发方便、透明。
附图说明
图1为本发明XFRM框架发送IPSEC报文流程;
图2为本发明IPSEC报文发送子流程;
图3为本发明XFRM框架发送IPSEC报文新流程;
图4为本发明IPSEC报文发送工作队列流程;
图5为本发明XFRM框架接收IPSEC报文流程;
图6为本发明IPSEC报文接收子流程;
图7为本发明XFRM框架接收IPSEC报文新流程;
图8为IPSEC报文接收工作队列流程。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
XFRM框架中的发送IPSEC报文流程如图1所示,xfrm4_lookup函数找到SA后进入IPSEC报文发送子流程。
如图2所示,IPSEC报文有传输和隧道两种模式,最后通过AH或者ESP两种协议选择分别调用ah_output与esp_output函数,在这两个函数中实现对报文数据的认证和加密。
XFRM框架发送IPSEC报文流程方式如图3所示,本发明修改了发送IPSEC报文流程,并需要进行一些资源初始化操作,分为下面两个要点:
S1、内核定义XFRM_SEND双向链表,并在网络初始化时对链表进行初始化;
S2、内核定义workqueue_s工队队列,用于处理发送报文流程,并在网络初始化时初始化该工作队列。
XFRM框架发送IPSEC报文流程第一部分增加了两个功能:
S11、xfrm4_lookup函数查找到SA后对数据包和参数保存到XFRM_SEND双向链表,并对每个链表属性增加发送标志位属性并设置为待发送状态;
S12、遍历XFRM_SEND双向链表,查询链表节点的待发送标志,对没有待发送标志的链表节点进行删除和释放资源的操作;
S13、调度发送报文工作队列workqueue_s。
XFRM框架发送IPSEC报文流程第二部分为发送报文工作队列workqueue_s,流程如图4所示,功能是对XFRM_SEND链表进行遍历,对有待发送标志的节点分别调用IPSEC报文发送子流程,步骤如下:
S21、遍历XFRM_SEND双向链表的节点;
S22、判断当前节点的待发送标志位,如有待发送标志则调用IPSEC报文发送子流程函数,调用完成后清除待发送标志位,然后继续遍历下一个节点;
S23、如没有待发送标志位,则继续遍历XFRM_SEND链表,直到结束。
XFRM框架中的接收IPSEC报文流程如图5所示,xfrm_state_lookup函数找到SA后进入IPSEC报文接收子流程,如图6所示。IPSEC报文有传输和隧道两种模式,根据AH或者ESP两种协议选择分别调用ah_input与esp_input函数,在这两个函数中实现对报文数据的认证和解密。
XFRM框架接收IPSEC报文流程方式如图7所示,本发明修改了接收IPSEC报文流程,并需要进行一些资源初始化操作,分为下面两个要点:
1)内核定义XFRM_RCV双向链表,并在网络初始化时对链表进行初始化;
2)内核定义workqueue_r工队队列,用于处理接收流程,并在网络初始化时初始化该工作队列。
XFRM框架接收IPSEC报文流程第一部分增加了两个功能:
11)xfrm_state_lookup函数查找到SA后对数据包和参数保存到XFRM_RCV双向链表,并对每个链表属性增加待接收标志位属性并设置;
12)遍历XFRM_RCV双向链表,查询链表节点的待接收标志,对没有待接收标志的链表节点进行删除和释放资源的操作;
13)调度接收工作队列workqueue_r。
XFRM框架接收IPSEC报文流程第二部分为接收报文工作队列workqueue_r,流程如图8所示,功能是对XFRM_RCV链表进行遍历,对有待接收标志的节点分别调用IPSEC报文接收子流程,步骤如下:
21)遍历XFRM_RCV双向链表的节点;
22)判断当前节点的待接收标志位,如有待接收标志则调用IPSEC报文接收子流程函数,调用完成后清除待接收标志位,然后继续遍历下一个节点;
23)如没有待接收标志位,则继续遍历XFRM_RCV链表,直到结束。
该报文硬件加解密方法,更改了Linux4内核的原始XFRM框架处理IPSEC报文流程,采用工作队列的方式发送和接收IPSEC报文,通过非软中断的方式实现通过硬件芯片进行认证和加解密操作
内核定义XFRM发送链表、XFRM发送工作队列、XFRM接收链表、XFRM接收工作队列,并在网络初始化时进行初始化;
XFRM框架中发送IPSEC报文流程增加对XFRM发送链表的操作,对发送报文进行链表挂起,实现对发送报文的转发,并调度XFRM发送队列;
XFRM发送工作队列实现对IPSEC报文的认证和加密流程处理,通过在工作队列的处理来实现与硬件芯片的通信;
XFRM框架中接收IPSEC报文流程增加对XFRM接收链表的操作,对接收报文进行链表挂起,实现对接收报文的转发,并调度XFRM接收队列;
XFRM接收工作队列实现对IPSEC报文的认证和解密流程处理,通过在工作队列的处理来实现与硬件芯片的通信。
链表操作包括遍历、添加和删除操作。
IPSEC报文认证方式为MD5、SH1、SM3等方式,加解密算法为SM1、SM2、SM4、AES、DES等算法。
以上所述实施例仅表达了本发明的实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (7)
1.一种XFRM框架下对IPSEC实现硬件加解密的方法,其特征在于,包括XFRM框架发送IPSEC报文流程和XFRM框架接收IPSEC报文流程;
所述XFRM框架发送IPSEC报文流程为:
S1、内核定义XFRM_SEND双向链表,并在网络初始化时对链表进行初始化;
S2、内核定义workqueue_s工队队列,用于处理发送报文流程,并在网络初始化时初始化该工作队列。
2.根据权利要求1所述的一种XFRM框架下对IPSEC实现硬件加解密的方法,其特征在于,所述步骤S1中增加如下步骤:
S11、xfrm4_lookup函数查找到SA后对数据包和参数保存到XFRM_SEND双向链表,并对每个链表属性增加发送标志位属性并设置为待发送状态;
S12、遍历XFRM_SEND双向链表,查询链表节点的待发送标志,对没有待发送标志的链表节点进行删除和释放资源的操作;
S13、调度发送报文工作队列workqueue_s。
3.根据权利要求1所述的一种XFRM框架下对IPSEC实现硬件加解密的方法,其特征在于,所述步骤S2中增加的步骤为:
S21、遍历XFRM_SEND双向链表的节点;
S22、判断当前节点的待发送标志位,如有待发送标志则调用IPSEC报文发送子流程函数,调用完成后清除待发送标志位,然后继续遍历下一个节点;
S23、如没有待发送标志位,则继续遍历XFRM_SEND链表,直到结束。
4.根据权利要求1所述的一种XFRM框架下对IPSEC实现硬件加解密的方法,其特征在于,所述XFRM框架接收IPSEC报文流程为:
1)内核定义XFRM_RCV双向链表,并在网络初始化时对链表进行初始化;
2)内核定义workqueue_r工队队列,用于处理接收流程,并在网络初始化时初始化该工作队列。
5.根据权利要求4所述的一种XFRM框架下对IPSEC实现硬件加解密的方法,其特征在于,所述步骤1)中增加如下步骤:
11)xfrm_state_lookup函数查找到SA后对数据包和参数保存到XFRM_RCV双向链表,并对每个链表属性增加待接收标志位属性并设置;
12)遍历XFRM_RCV双向链表,查询链表节点的待接收标志,对没有待接收标志的链表节点进行删除和释放资源的操作;
13)调度接收工作队列workqueue_r。
6.根据权利要求5所述的一种XFRM框架下对IPSEC实现硬件加解密的方法,其特征在于,所述步骤2)中增加如下步骤:
21)遍历XFRM_RCV双向链表的节点;
22)判断当前节点的待接收标志位,如有待接收标志则调用IPSEC报文接收子流程函数,调用完成后清除待接收标志位,然后继续遍历下一个节点;
23)如没有待接收标志位,则继续遍历XFRM_RCV链表,直到结束。
7.根据权利要求1所述的一种XFRM框架下对IPSEC实现硬件加解密的方法,其特征在于:IPSEC报文有传输和随到两种模式,根据AH或者ESP两种协议选择分别调用ah_input与esp_input函数,在这两个函数中实现对报文数据的认证和解密。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011408681.7A CN112543197B (zh) | 2020-12-04 | 2020-12-04 | 一种xfrm框架下对ipsec实现硬件加解密的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011408681.7A CN112543197B (zh) | 2020-12-04 | 2020-12-04 | 一种xfrm框架下对ipsec实现硬件加解密的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112543197A true CN112543197A (zh) | 2021-03-23 |
CN112543197B CN112543197B (zh) | 2022-09-06 |
Family
ID=75016029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011408681.7A Active CN112543197B (zh) | 2020-12-04 | 2020-12-04 | 一种xfrm框架下对ipsec实现硬件加解密的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112543197B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7003118B1 (en) * | 2000-11-27 | 2006-02-21 | 3Com Corporation | High performance IPSEC hardware accelerator for packet classification |
CN102130833A (zh) * | 2011-03-11 | 2011-07-20 | 中兴通讯股份有限公司 | 一种高速路由器流量管理芯片链表存储管理方法及系统 |
US20110271097A1 (en) * | 2010-04-29 | 2011-11-03 | Sonus Networks, Inc. | Loosely-Coupled Encryption Functionality for Operating Systems |
WO2011139440A2 (en) * | 2010-04-29 | 2011-11-10 | Sonus Networks, Inc. | Loosely-coupled encryption functionality for operating systems |
CN102780625A (zh) * | 2012-07-30 | 2012-11-14 | 成都卫士通信息产业股份有限公司 | 一种实现ipsec vpn加解密处理的方法及装置 |
WO2018130079A1 (zh) * | 2017-01-11 | 2018-07-19 | 京信通信系统(中国)有限公司 | 一种英特网协议安全IPSec协议加密方法和网络设备 |
CN110535742A (zh) * | 2019-08-06 | 2019-12-03 | 杭州迪普科技股份有限公司 | 报文转发方法、装置、电子设备及机器可读存储介质 |
CN110838975A (zh) * | 2018-08-15 | 2020-02-25 | 丛林网络公司 | 虚拟网络中租户工作负载的安全转发 |
-
2020
- 2020-12-04 CN CN202011408681.7A patent/CN112543197B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7003118B1 (en) * | 2000-11-27 | 2006-02-21 | 3Com Corporation | High performance IPSEC hardware accelerator for packet classification |
US20110271097A1 (en) * | 2010-04-29 | 2011-11-03 | Sonus Networks, Inc. | Loosely-Coupled Encryption Functionality for Operating Systems |
WO2011139440A2 (en) * | 2010-04-29 | 2011-11-10 | Sonus Networks, Inc. | Loosely-coupled encryption functionality for operating systems |
CN102130833A (zh) * | 2011-03-11 | 2011-07-20 | 中兴通讯股份有限公司 | 一种高速路由器流量管理芯片链表存储管理方法及系统 |
CN102780625A (zh) * | 2012-07-30 | 2012-11-14 | 成都卫士通信息产业股份有限公司 | 一种实现ipsec vpn加解密处理的方法及装置 |
WO2018130079A1 (zh) * | 2017-01-11 | 2018-07-19 | 京信通信系统(中国)有限公司 | 一种英特网协议安全IPSec协议加密方法和网络设备 |
CN110838975A (zh) * | 2018-08-15 | 2020-02-25 | 丛林网络公司 | 虚拟网络中租户工作负载的安全转发 |
CN110535742A (zh) * | 2019-08-06 | 2019-12-03 | 杭州迪普科技股份有限公司 | 报文转发方法、装置、电子设备及机器可读存储介质 |
Non-Patent Citations (7)
Title |
---|
CSABA KIRALY, GIUSEPPE BIANCHI, FABRIZIO FORMISANO, SIMONE TEOFI: "Traffic masking in IPsec: architecture and implementation", 《IEEE》 * |
丁湘陵等: "Linux环境下的VPN异步加密模式的实现", 《计算机与现代化》 * |
何兴杰: "基于国密标准的IPSec VPN服务器的内核系统设计与实现", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
张全林等: "Linux内核2.6版中IPSec实现的研究", 《信息工程大学学报》 * |
张晓艳等: "Linux 2.6内核中IPSec支持机制分析", 《现代计算机(专业版)》 * |
蒋汉平等: "基于多核处理器的高性能IPSec软件架构的研究", 《武汉理工大学学报(交通科学与工程版)》 * |
郭井龙等: "集成于Linux操作系统的IPSec实现", 《电子设计应用》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112543197B (zh) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11503004B2 (en) | Distributed IPSec gateway | |
CN100525181C (zh) | 加密信息包处理设备和方法 | |
WO2019129167A1 (zh) | 一种处理数据报文的方法和网卡 | |
WO2020052414A1 (zh) | 一种数据保护方法、设备及系统 | |
CN110011892B (zh) | 一种虚拟专用网络的通信方法及相关装置 | |
WO2021022794A1 (zh) | 基于rdma的数据传输方法、网卡、服务器及介质 | |
CN106464596A (zh) | 开放流通信方法、系统、控制器和业务网关 | |
US12088431B2 (en) | Establishing a network micro-tunnel within a network tunnel | |
WO2017148419A1 (zh) | 数据传输方法及服务器 | |
CN113141674A (zh) | 多链路系统中链路配置方法、设备、系统及存储介质 | |
CN117915333A (zh) | 导出QoS规则的终端设备、网络节点及其中的方法 | |
US10951520B2 (en) | SDN, method for forwarding packet by SDN, and apparatus | |
CN117254976B (zh) | 基于VPP的国标IPsec VPN实现方法、装置、系统及电子设备 | |
CN116647425A (zh) | 一种OVN架构的IPSec-VPN实现方法、装置、电子设备和存储介质 | |
US11652910B2 (en) | Data transmission method, device, and system | |
CN112543197B (zh) | 一种xfrm框架下对ipsec实现硬件加解密的方法 | |
CN111669374B (zh) | 一种IPsec VPN单条隧道软件加解密性能扩展方法 | |
CN116724545A (zh) | 一种数据包传输的方法、装置和系统 | |
CN116601985A (zh) | 一种安全上下文生成方法、装置及计算机可读存储介质 | |
WO2019210614A1 (zh) | 实现页面功能复用的方法及装置 | |
CN115695278A (zh) | 报文转发方法、控制器及报文转发系统 | |
CN109657449A (zh) | 一种基于密码卡实现密码资源互通的方法及设备 | |
WO2022228293A1 (zh) | 一种发送报文的方法、处理报文的方法及设备 | |
CN117424739B (zh) | 基于dpu的报文转发方法和系统、用户态协议栈和ip核 | |
CN113938882B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |