CN111680323A - Code borrowing protection method and system - Google Patents

Code borrowing protection method and system Download PDF

Info

Publication number
CN111680323A
CN111680323A CN202010457477.8A CN202010457477A CN111680323A CN 111680323 A CN111680323 A CN 111680323A CN 202010457477 A CN202010457477 A CN 202010457477A CN 111680323 A CN111680323 A CN 111680323A
Authority
CN
China
Prior art keywords
borrowing
code
project
cloud
module
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.)
Pending
Application number
CN202010457477.8A
Other languages
Chinese (zh)
Inventor
徐波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Duoyi Network Co ltd
GUANGDONG LIWEI NETWORK TECHNOLOGY CO LTD
Guangzhou Duoyi Network Co ltd
Original Assignee
Duoyi Network Co ltd
GUANGDONG LIWEI NETWORK TECHNOLOGY CO LTD
Guangzhou Duoyi Network Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Duoyi Network Co ltd, GUANGDONG LIWEI NETWORK TECHNOLOGY CO LTD, Guangzhou Duoyi Network Co ltd filed Critical Duoyi Network Co ltd
Priority to CN202010457477.8A priority Critical patent/CN111680323A/en
Publication of CN111680323A publication Critical patent/CN111680323A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Abstract

The invention discloses a code borrowing protection method and a system, which comprises the following steps: a cloud server for storing codes and a special cloud code client are constructed, and a request for accessing and editing the codes of the cloud server is initiated through an editor of the cloud code client; creating an item at a cloud code client, and setting an item authority according to a file directory of the item; if the project is borrowed outwards, the subdirectory or the file of the project is used as a borrowing module and is issued to a borrowing library; and initiating a borrowing request in the project authority to the borrowing library, and if the request passes the approval, checking out and checking the code of the borrowing module. The invention can protect the security of the code under the minimum authority, realizes the borrowing of the source code under the limited condition through the special client and the strict approval process, ensures the management specification and the security of the source code, and avoids the intentional or unintentional leakage and diffusion of the source code file.

Description

Code borrowing protection method and system
Technical Field
The invention belongs to the field of information protection, and particularly relates to a code borrowing protection method and system.
Background
In the software development industry, a plurality of excellent open source codes exist, and people can publicly look up the codes; however, for the interior of an enterprise, the source code of software is an intangible core asset of the enterprise, and due to the factors of more personnel, high liquidity and the like, personnel in a non-project group have no authority to view the project; some people try to copy or transmit corresponding codes or files to the other party through some abnormal channels, such as private relations, or try to acquire local disk files of authorized people so as to acquire the codes, and the modes bring many risks to source code management, so that the source codes are leaked. The code localization or web service form cannot well control the circulation and operation of the security of the source code, and files are easily copied, cut, printed and transmitted to the outside in a private mode, so that the source code cannot be protected well. Therefore, how to conveniently compromise the source code stream forwarding use and the security protection of the source code becomes a problem to be solved in the field.
Disclosure of Invention
The invention provides a code borrowing protection method and a code borrowing protection system, which solve the problems that in the prior art, the code localization or web service form cannot well control the safety circulation and operation of source codes, and files are easily copied, cut, printed and transmitted to the outside privately.
The technical scheme of the invention is realized as follows:
a code borrowing protection method comprising the steps of:
s1, constructing a cloud server for storing codes and a special cloud code client, and initiating a request for accessing and editing the codes of the cloud server through an editor of the cloud code client;
s2, creating an item at the cloud code client, and setting an item authority according to the file directory of the item;
s3, if the item is borrowed outwards, the subdirectory or the file of the item is used as a borrowing module and is issued to a borrowing library;
s4, initiating a borrowing request in the project authority to the borrowing library, and executing the next step if the request passes the approval;
and S5, checking and looking up the code of the borrowing module.
As a preferred embodiment of the present invention, the following method is adopted by the editor of the cloud code client to prohibit the operations of memory scanning, copying and cutting the code:
detecting the debugging of a third-party tool, allowing a system self process to take over a function of opening a process handle by a kernel layer, and forbidding a non-system self process to open a handle of a cloud code client process;
or hooking in an API HOOK mode to prohibit data from being written into the shear plate;
or, setting multiple times of encryption verification on the cloud server and the cloud code client.
As a preferred embodiment of the present invention, step S2 specifically includes the following steps:
s201, a creator fills in related information of a new project;
s202, the creator verifies whether the authority of the svn path exists or not through a user name and a password according to the distributed authority of the svn path, if the verification fails, the project is failed to be created, and if not, the next step is executed;
s203, if the direct leader of the creator passes examination and approval, the project creation is successful, otherwise, the project creation fails;
and S204, the creator sets the project authority corresponding to the project member and whether to borrow the project according to the file directory of the project.
As a preferred embodiment of the present invention, the expiration time, the borrowing period, the number of times of opening and the time length of the borrowing module are set before the borrowing module is issued to the borrowing library in step S3.
As a preferred embodiment of the present invention, step S5 specifically includes the following steps:
s501, acquiring a creator identifier of the borrowing module and a number of the borrowing module, and constructing a directory format of the borrowing module;
s502, acquiring the item information of the borrowing module through the number of the borrowing module, wherein the item information comprises an item number and an svn path;
s503, acquiring the creator svn encrypted account secret stored in the database through the creator identification;
s504, judging whether the borrowing module directory exists on the cloud server, and if so, executing account secret verification and updating operation of the current svn path; otherwise, firstly creating a directory, then executing account secret verification of the current svn path, and detecting the code of the svn path;
and S505, checking the code of the borrowing module.
A code borrowing protection system comprises a cloud server for storing codes and a cloud code client for accessing and editing the codes of the cloud server, wherein the cloud server and the cloud code client are in interactive connection;
the cloud code client is used for creating a new project by a project creator, setting project permission according to a file directory of the project, and if external borrowing is set, issuing a subdirectory or a file of the project to a borrowing library as a borrowing module; the system is also used for the user to initiate a borrowing request, and the code of the borrowing module is detected and checked after the borrowing request is approved;
the cloud server comprises a borrowing library, and the borrowing library is used for storing the borrowing modules in a centralized mode.
As a preferred embodiment of the present invention, the cloud code client includes a code protection unit, and the code protection unit prohibits operations of memory scanning, copying, and cutting a code.
As a preferred embodiment of the present invention, the cloud code client includes an approval unit, and the approval unit is configured to approve the creation project and the borrowing request.
The invention has the beneficial effects that: the security of the code can be protected under the minimum authority, the source code can be borrowed under the limited condition through the special client and the strict approval process, the management specification and the security of the source code are ensured, and the source code file is prevented from being leaked and diffused intentionally or unintentionally.
Drawings
In order to more clearly illustrate the embodiments of the present invention or the technical solutions in the prior art, the drawings used in the description of the embodiments or the prior art will be briefly described below, and it is obvious that the drawings in the following description are only some embodiments of the present invention, and for those skilled in the art, other drawings can be obtained according to these drawings without creative efforts.
FIG. 1 is a flow chart of one embodiment of a code borrowing protection method of the present invention;
FIG. 2 is a flow chart of a create item of a code borrowing protection method of the present invention;
FIG. 3 is a flowchart of a publication borrowing of a code borrowing protection method of the present invention;
FIG. 4 is a code lookup flow diagram of a code borrowing protection method of the present invention;
FIG. 5 is a functional block diagram of one embodiment of a code borrowing protection system of the present invention.
Detailed Description
The technical solutions in the embodiments of the present invention will be clearly and completely described below with reference to the drawings in the embodiments of the present invention, and it is obvious that the described embodiments are only a part of the embodiments of the present invention, and not all of the embodiments. All other embodiments, which can be derived by a person skilled in the art from the embodiments given herein without making any creative effort, shall fall within the protection scope of the present invention.
As shown in fig. 1-4, the present invention provides a code borrowing protection method, which includes the following steps:
s1, constructing a cloud server for storing codes and a special cloud code client, and initiating a request for accessing and editing the codes of the cloud server through an editor of the cloud code client; the codes are stored in a remote server, and all the codes are not stored in the local of the user; the code is accessed and operated through an editor of the designated cloud code client, and operations such as memory scanning, copying and cutting are prevented.
The method for prohibiting operations of memory scanning, copying and code cutting by the editor of the cloud code client comprises the following steps:
detecting the debugging of a third-party tool, allowing a system self process to take over a function of opening a process handle by a kernel layer, and forbidding other non-system self processes such as a chettengine and ida.exe to open the handle of a cloud code client process;
or hooking in an API HOOK mode, prohibiting data from being written into the shear plate, and preventing copying and shearing operations;
or, multiple times of encryption verification are set in the cloud server and the cloud code client, for example, the cloud code client sends an AES (userID | version id | IP | xxx)), the server decrypts the message after receiving the message, then judges the version number, and prompts that the client version is not used and needs to be upgraded if the version is too low or a strong version is skipped.
S2, creating an item at the cloud code client, and setting an item authority according to the file directory of the item;
step S2 specifically includes the following steps:
s201, a creator fills in related information of a new project;
s202, the creator verifies whether the authority of the svn path exists or not through a user name and a password according to the distributed authority of the svn path, if the verification fails, the project is failed to be created, and if not, the next step is executed;
s203, if the direct leader of the creator passes examination and approval, the project creation is successful, otherwise, the project creation fails;
and S204, the creator sets the project authority corresponding to the project member and whether to borrow the project according to the file directory of the project.
The creator verifies whether the authority of the svn path exists or not through a user name and a password according to the distributed authority of the svn path, if the authority passes the verification, the creator can initiate an application for creating a project, the project is successfully created after the approval of the owner, meanwhile, the creator can authorize other members to have the authority of the project according to different catalogs, and the members can edit codes.
S3, if the item is borrowed outwards, the subdirectory or the file of the item is used as a borrowing module and is issued to a borrowing library;
the creator creates a project, and may designate subdirectories or files in the project as borrowing modules. And setting the expiration time and the borrowing time limit of the borrowing module selected above, and if the expiration time is reached and the borrowing time limit is exceeded, the borrowing authority is invalid. The system defaults to set the times and duration of allowing each file to be opened, and after the limitation is reached, the borrowing permission is invalid. And after the borrowing authority of the user is invalid, the user can reapply the borrowing authority if necessary.
S4, initiating a borrowing request in the project authority to the borrowing library, and executing the next step if the request passes the approval;
a user initiates an application to a corresponding borrowing module; the user's direct supervisor determines whether borrowing is necessary, and if so, approval can be agreed, otherwise, refusal is denied; if the applicant's direct supervisor passes the examination and approval, the creator will carry out secondary examination and approval, and if the applicant does not agree, the borrowing process is ended; and if the borrowing module file is approved, the borrower has the authority to check the file content of the borrowing module after the approval is passed.
And S5, checking and looking up the code of the borrowing module. The review code essentially uses the creator's svn secret to retrieve the code.
Step S5 specifically includes the following steps:
s501, obtaining a creator identifier (number) and a borrowing module number of the borrowing module, and constructing a catalog format of the borrowing module (the borrowed/creator identifier/borrowing module number), for example: borrow/1234/0008.
S502, acquiring the item information of the borrowing module through the number of the borrowing module, wherein the item information comprises an item number and an svn path;
s503, acquiring the creator svn encrypted account secret stored in the database through the creator identification;
s504, judging whether a borrowing module directory (such as borrow/1234/0008) on the cloud server exists or not, and if so, executing account secret verification and updating operation of the current svn path; otherwise, firstly creating a directory, then executing account secret verification of the current svn path, and detecting the code of the svn path;
and S505, checking the code of the borrowing module. After the code detection is finished, the user can normally view the related content.
The method is also used for judging the borrowing time limit and the borrowing time limit of the user, and specifically comprises the steps of judging the remaining opening times before opening the borrowing module each time, and ending the check when the remaining opening times are 0. When each file is opened, the system sets a borrowing countdown, and when the countdown is 0, the reference is finished. When the opening times of a file exceed the set times, the file cannot be continuously checked. And after the borrowing time limit reaches the specified time, ending the borrowing.
And if the borrowing authority of the user is invalid, the application needs to be initiated again if necessary.
As shown in fig. 5, the present invention further provides a code borrowing protection system, which includes a cloud server for storing codes and a cloud code client for accessing and editing the codes of the cloud server, wherein the cloud server and the cloud code client are interactively connected;
the cloud code client is used for creating a new project by a project creator, setting project permission according to a file directory of the project, and issuing a subdirectory or a file of the project to a borrowing library as a borrowing module if external borrowing is set; the system is also used for the user to initiate a borrowing request, and the code of the borrowing module is detected and checked after the borrowing request is approved;
the cloud server comprises a borrowing library which is used for storing each borrowing module in a centralized mode.
The cloud code client comprises a code protection unit which prohibits the operations of memory scanning, copying and code cutting. The cloud code client comprises an approval unit which is used for approving the creation project and the borrowing request.
In summary, the source code is stored, circulated and used in a local disk or web service (like github) hosting manner, and there is a certain difficulty in trying to use the source code with similar functions without code authority. Or some files are acquired through an informal way, or normal flow application is carried out, and after evaluation and approval are carried out layer by layer, the safety of the source code cannot be guaranteed.
The method is established in a local disk without codes, source codes are accessed through a special client mode of a remote server, other channels cannot be requested, each item is divided according to modules, corresponding module authorities are opened for each person, and if the authority of each person exceeds the individual authority, the method can apply for reference through a borrowing mode.
The invention essentially lies in that developers can not have local code authority, can only obtain the code of the remote server through the special client, the special client is well protected and driven, except that the content can not be copied and cut to the editor, the editor also adds special watermark, meanwhile, reverse engineering and memory scanning are prevented, and the code leakage and diffusion of abnormal channels are avoided intentionally or unintentionally.
In the aspect of code protection, codes are not put in a local disk, only the code of a remote server is obtained through an editor of a special client, the codes cannot be copied and cut out of the editor, a watermark is added on the editor, and meanwhile the client also prevents protection measures such as reverse engineering, memory scanning and the like.
The present invention is not limited to the above preferred embodiments, and any modifications, equivalent substitutions, improvements, etc. within the spirit and principle of the present invention should be included in the protection scope of the present invention.

Claims (8)

1. A code borrowing protection method is characterized by comprising the following steps:
s1, constructing a cloud server for storing codes and a special cloud code client, and initiating a request for accessing and editing the codes of the cloud server through an editor of the cloud code client;
s2, creating an item at the cloud code client, and setting an item authority according to the file directory of the item;
s3, if the item is borrowed outwards, the subdirectory or the file of the item is used as a borrowing module and is issued to a borrowing library;
s4, initiating a borrowing request in the project authority to the borrowing library, and executing the next step if the request passes the approval;
and S5, checking and looking up the code of the borrowing module.
2. The code borrowing protection method according to claim 1, wherein the operation that an editor of a cloud code client prohibits memory scanning, copying and cutting codes adopts the following method:
detecting the debugging of a third-party tool, allowing a system self process to take over a function of opening a process handle by a kernel layer, and forbidding a non-system self process to open a handle of a cloud code client process;
or hooking in an APIHOOK mode to prohibit data from being written into the shear plate;
or, setting multiple times of encryption verification on the cloud server and the cloud code client.
3. The code borrowing protection method according to claim 1, wherein the step S2 specifically comprises the following steps:
s201, a creator fills in related information of a new project;
s202, the creator verifies whether the authority of the svn path exists or not through a user name and a password according to the distributed authority of the svn path, if the verification fails, the project is failed to be created, and if not, the next step is executed;
s203, if the direct leader of the creator passes examination and approval, the project creation is successful, otherwise, the project creation fails;
and S204, the creator sets the project authority corresponding to the project member and whether to borrow the project according to the file directory of the project.
4. The code borrowing protection method according to claim 1, wherein the expiration time, the borrowing period, the opening times and the time length of the borrowing module are set before the borrowing module is issued to the borrowing library in the step S3.
5. The code borrowing protection method according to claim 1, wherein the step S5 specifically comprises the following steps:
s501, acquiring a creator identifier of the borrowing module and a number of the borrowing module, and constructing a directory format of the borrowing module;
s502, acquiring the item information of the borrowing module through the number of the borrowing module, wherein the item information comprises an item number and an svn path;
s503, acquiring the creator svn encrypted account secret stored in the database through the creator identification;
s504, judging whether the borrowing module directory exists on the cloud server, and if so, executing account secret verification and updating operation of the current svn path; otherwise, firstly creating a directory, then executing account secret verification of the current svn path, and detecting the code of the svn path;
and S505, checking the code of the borrowing module.
6. The code borrowing protection system is characterized by comprising a cloud server for storing codes and a cloud code client for accessing and editing the codes of the cloud server, wherein the cloud server and the cloud code client are in interactive connection;
the cloud code client is used for creating a new project by a project creator, setting project permission according to a file directory of the project, and if external borrowing is set, issuing a subdirectory or a file of the project to a borrowing library as a borrowing module; the system is also used for the user to initiate a borrowing request, and the code of the borrowing module is detected and checked after the borrowing request is approved;
the cloud server comprises a borrowing library, and the borrowing library is used for storing the borrowing modules in a centralized mode.
7. The code borrowing protection system according to claim 6, wherein the cloud code client comprises a code protection unit, and the code protection unit inhibits memory scanning, copying and code cutting operations.
8. The code borrowing protection system according to claim 6, wherein the cloud code client comprises an approval unit, and the approval unit is used for approving the creation project and the borrowing request.
CN202010457477.8A 2020-05-26 2020-05-26 Code borrowing protection method and system Pending CN111680323A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010457477.8A CN111680323A (en) 2020-05-26 2020-05-26 Code borrowing protection method and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010457477.8A CN111680323A (en) 2020-05-26 2020-05-26 Code borrowing protection method and system

Publications (1)

Publication Number Publication Date
CN111680323A true CN111680323A (en) 2020-09-18

Family

ID=72434860

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010457477.8A Pending CN111680323A (en) 2020-05-26 2020-05-26 Code borrowing protection method and system

Country Status (1)

Country Link
CN (1) CN111680323A (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112783546A (en) * 2021-01-28 2021-05-11 杉德银卡通信息服务有限公司 Code authority WEB management system based on domain service and SVN
CN116975002A (en) * 2023-09-22 2023-10-31 麒麟软件有限公司 Method for protecting open file under domestic Linux operating system
CN117909941A (en) * 2024-03-20 2024-04-19 建信金融科技有限责任公司 Code file processing method and device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080120415A1 (en) * 2006-11-16 2008-05-22 Cisco Technology, Inc. Filtering access to data objects
CN107357825A (en) * 2017-06-15 2017-11-17 中工国际工程股份有限公司 A kind of project document management system based on database
CN107566519A (en) * 2017-09-27 2018-01-09 北京蜂语网络科技有限公司 A kind of code operation method, apparatus, server and server cluster
CN110955432A (en) * 2019-11-20 2020-04-03 中国联合网络通信集团有限公司 Continuously integrated publishing method, device and system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080120415A1 (en) * 2006-11-16 2008-05-22 Cisco Technology, Inc. Filtering access to data objects
CN107357825A (en) * 2017-06-15 2017-11-17 中工国际工程股份有限公司 A kind of project document management system based on database
CN107566519A (en) * 2017-09-27 2018-01-09 北京蜂语网络科技有限公司 A kind of code operation method, apparatus, server and server cluster
CN110955432A (en) * 2019-11-20 2020-04-03 中国联合网络通信集团有限公司 Continuously integrated publishing method, device and system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
AWILDFISH: "svn checkout操作", pages 1, Retrieved from the Internet <URL:https://www.cnblogs.com/helww/p/5341874.html> *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112783546A (en) * 2021-01-28 2021-05-11 杉德银卡通信息服务有限公司 Code authority WEB management system based on domain service and SVN
CN116975002A (en) * 2023-09-22 2023-10-31 麒麟软件有限公司 Method for protecting open file under domestic Linux operating system
CN116975002B (en) * 2023-09-22 2023-12-26 麒麟软件有限公司 Method for protecting open file under domestic Linux operating system
CN117909941A (en) * 2024-03-20 2024-04-19 建信金融科技有限责任公司 Code file processing method and device

Similar Documents

Publication Publication Date Title
US7330981B2 (en) File locker and mechanisms for providing and using same
CN111680323A (en) Code borrowing protection method and system
US7210043B2 (en) Trusted computer system
US7487366B2 (en) Data protection program and data protection method
US5870467A (en) Method and apparatus for data input/output management suitable for protection of electronic writing data
DE60002893T2 (en) COMPUTER PLATFORMS AND THEIR OPERATING METHOD
US5822771A (en) System for management of software employing memory for processing unit with regulatory information, for limiting amount of use and number of backup copies of software
CN109643356B (en) Method and system for preventing phishing or extorting software attacks
JP2003500722A (en) Information protection method and device
JP2008072613A (en) Management system, management device, and management method
WO2010000148A1 (en) Method, system and server for controlling the file right
CN103970540B (en) Key Functions secure calling method and device
US20060064387A1 (en) Systems and methods for software licensing
CN111414612A (en) Security protection method and device for operating system mirror image and electronic equipment
US8132261B1 (en) Distributed dynamic security capabilities with access controls
JP2009015766A (en) User terminal, access management system, access management method, and program
CN103152319A (en) Cloud maintenance, and method and system for authorization
EP0773489A1 (en) Network system server
CN116401691A (en) File authority management method, device, system, computer equipment and medium
JP2005038124A (en) File access control method and control system
CN104850625B (en) A kind of database safeguarding method and device
TW200303128A (en) Method, system, and storage medium for preventing recurrence of a system outage in a computer network
Abghour et al. Specification of authorisation services
CN112241516B (en) Source code protection method and storage medium for project development process
US20220358219A1 (en) Secure cloud computing architecture and security method

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20200918