\hypertarget{namespaceGpgFrontend}{}\doxysection{Gpg\+Frontend Namespace Reference} \label{namespaceGpgFrontend}\index{GpgFrontend@{GpgFrontend}} \doxysubsection*{Namespaces} \begin{DoxyCompactItemize} \item \mbox{\hyperlink{namespaceGpgFrontend_1_1RawAPI}{Raw\+API}} \item \mbox{\hyperlink{namespaceGpgFrontend_1_1Thread}{Thread}} \item \mbox{\hyperlink{namespaceGpgFrontend_1_1UI}{UI}} \end{DoxyCompactItemize} \doxysubsection*{Classes} \begin{DoxyCompactItemize} \item class \mbox{\hyperlink{classGpgFrontend_1_1CoreCommonUtil}{Core\+Common\+Util}} \item struct \mbox{\hyperlink{structGpgFrontend_1_1ArchiveStruct}{Archive\+Struct}} \item class \mbox{\hyperlink{classGpgFrontend_1_1ArchiveFileOperator}{Archive\+File\+Operator}} \item class \mbox{\hyperlink{classGpgFrontend_1_1CharsetOperator}{Charset\+Operator}} \item class \mbox{\hyperlink{classGpgFrontend_1_1DataObjectOperator}{Data\+Object\+Operator}} \item class \mbox{\hyperlink{classGpgFrontend_1_1FileOperator}{File\+Operator}} \begin{DoxyCompactList}\small\item\em provides file operations \end{DoxyCompactList}\item class \mbox{\hyperlink{classGpgFrontend_1_1GlobalSettingStation}{Global\+Setting\+Station}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgBasicOperator}{Gpg\+Basic\+Operator}} \begin{DoxyCompactList}\small\item\em Basic operation collection. \end{DoxyCompactList}\item class \mbox{\hyperlink{classGpgFrontend_1_1GpgCommandExecutor}{Gpg\+Command\+Executor}} \begin{DoxyCompactList}\small\item\em Extra commands related to GPG. \end{DoxyCompactList}\item class \mbox{\hyperlink{classGpgFrontend_1_1GpgFileOpera}{Gpg\+File\+Opera}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgKeyGetter}{Gpg\+Key\+Getter}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgImportedKey}{Gpg\+Imported\+Key}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgImportInformation}{Gpg\+Import\+Information}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgKeyImportExporter}{Gpg\+Key\+Import\+Exporter}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgKeyManager}{Gpg\+Key\+Manager}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgKeyOpera}{Gpg\+Key\+Opera}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgUIDOperator}{Gpg\+UIDOperator}} \item class \mbox{\hyperlink{classGpgFrontend_1_1KeyPackageOperator}{Key\+Package\+Operator}} \begin{DoxyCompactList}\small\item\em give the possibility to import or export a key package \end{DoxyCompactList}\item class \mbox{\hyperlink{classGpgFrontend_1_1PassphraseGenerator}{Passphrase\+Generator}} \begin{DoxyCompactList}\small\item\em The \mbox{\hyperlink{classGpgFrontend_1_1PassphraseGenerator}{Passphrase\+Generator}} class. \end{DoxyCompactList}\item class \mbox{\hyperlink{classGpgFrontend_1_1GpgDecryptResultAnalyse}{Gpg\+Decrypt\+Result\+Analyse}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgEncryptResultAnalyse}{Gpg\+Encrypt\+Result\+Analyse}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgResultAnalyse}{Gpg\+Result\+Analyse}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgSignResultAnalyse}{Gpg\+Sign\+Result\+Analyse}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgVerifyResultAnalyse}{Gpg\+Verify\+Result\+Analyse}} \item struct \mbox{\hyperlink{structGpgFrontend_1_1__result__ref__deletor}{\+\_\+result\+\_\+ref\+\_\+deletor}} \begin{DoxyCompactList}\small\item\em Result Deleter. \end{DoxyCompactList}\item class \mbox{\hyperlink{classGpgFrontend_1_1GpgConstants}{Gpg\+Constants}} \item struct \mbox{\hyperlink{structGpgFrontend_1_1GpgContextInitArgs}{Gpg\+Context\+Init\+Args}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgContext}{Gpg\+Context}} \item class \mbox{\hyperlink{classGpgFrontend_1_1ChannelObject}{Channel\+Object}} \begin{DoxyCompactList}\small\item\em object which in channel system \end{DoxyCompactList}\item class \mbox{\hyperlink{classGpgFrontend_1_1SingletonStorage}{Singleton\+Storage}} \item class \mbox{\hyperlink{classGpgFrontend_1_1SingletonStorageCollection}{Singleton\+Storage\+Collection}} \item class \mbox{\hyperlink{classGpgFrontend_1_1SingletonFunctionObject}{Singleton\+Function\+Object}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GenKeyInfo}{Gen\+Key\+Info}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgInfo}{Gpg\+Info}} \begin{DoxyCompactList}\small\item\em Use to record some info about gnupg. \end{DoxyCompactList}\item class \mbox{\hyperlink{classGpgFrontend_1_1GpgData}{Gpg\+Data}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgKey}{Gpg\+Key}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgKeySignature}{Gpg\+Key\+Signature}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgSignature}{Gpg\+Signature}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgSubKey}{Gpg\+Sub\+Key}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgTOFUInfo}{Gpg\+TOFUInfo}} \item class \mbox{\hyperlink{classGpgFrontend_1_1GpgUID}{Gpg\+UID}} \end{DoxyCompactItemize} \doxysubsection*{Typedefs} \begin{DoxyCompactItemize} \item \mbox{\Hypertarget{namespaceGpgFrontend_a6df12217c02df87356b3276fa08df3b8}\label{namespaceGpgFrontend_a6df12217c02df87356b3276fa08df3b8}} typedef std\+::list$<$ \mbox{\hyperlink{classGpgFrontend_1_1GpgImportedKey}{Gpg\+Imported\+Key}} $>$ {\bfseries Gpg\+Imported\+Key\+List} \item \mbox{\Hypertarget{namespaceGpgFrontend_a734ec65953e9b8fe39b7d76b42c7d9e5}\label{namespaceGpgFrontend_a734ec65953e9b8fe39b7d76b42c7d9e5}} using {\bfseries Byte\+Array} = std\+::string \item \mbox{\Hypertarget{namespaceGpgFrontend_a74d7d03c9b8231bc13f199fb06204fca}\label{namespaceGpgFrontend_a74d7d03c9b8231bc13f199fb06204fca}} using {\bfseries Byte\+Array\+Ptr} = std\+::unique\+\_\+ptr$<$ Byte\+Array $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_ad8f79b76997875f0588a77340a34d2a1}\label{namespaceGpgFrontend_ad8f79b76997875f0588a77340a34d2a1}} using {\bfseries Std\+Bype\+Array\+Ptr} = std\+::unique\+\_\+ptr$<$ Byte\+Array $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_ab0a0bf1c3231a455c85f5604f4ff219a}\label{namespaceGpgFrontend_ab0a0bf1c3231a455c85f5604f4ff219a}} using {\bfseries Bype\+Array\+Ref} = Byte\+Array \& \item \mbox{\Hypertarget{namespaceGpgFrontend_ada6a044ece8975e35b2a229f65249713}\label{namespaceGpgFrontend_ada6a044ece8975e35b2a229f65249713}} using {\bfseries Bype\+Array\+Const\+Ref} = const Byte\+Array \& \item \mbox{\Hypertarget{namespaceGpgFrontend_aa8f86425050122fc627c1a793c2d1f80}\label{namespaceGpgFrontend_aa8f86425050122fc627c1a793c2d1f80}} using {\bfseries String\+Args\+Ptr} = std\+::unique\+\_\+ptr$<$ std\+::vector$<$ std\+::string $>$ $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_a88afb4fc90777c981345a4a702df8672}\label{namespaceGpgFrontend_a88afb4fc90777c981345a4a702df8672}} using {\bfseries String\+Args\+Ref} = std\+::vector$<$ std\+::string $>$ \& \item \mbox{\Hypertarget{namespaceGpgFrontend_a2470eb154743191c3454203f23d3a2f8}\label{namespaceGpgFrontend_a2470eb154743191c3454203f23d3a2f8}} using {\bfseries Gpg\+Error} = gpgme\+\_\+error\+\_\+t \item \mbox{\Hypertarget{namespaceGpgFrontend_ae060b7e70b7898c1239f372b55bac640}\label{namespaceGpgFrontend_ae060b7e70b7898c1239f372b55bac640}} using {\bfseries Gpg\+Encr\+Result} = std\+::shared\+\_\+ptr$<$ struct \+\_\+gpgme\+\_\+op\+\_\+encrypt\+\_\+result $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_a78f78409fbd7963376da60f7e5c0dba9}\label{namespaceGpgFrontend_a78f78409fbd7963376da60f7e5c0dba9}} using {\bfseries Gpg\+Decr\+Result} = std\+::shared\+\_\+ptr$<$ struct \+\_\+gpgme\+\_\+op\+\_\+decrypt\+\_\+result $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_a719a7945f8e6af4aa6446883a8847f48}\label{namespaceGpgFrontend_a719a7945f8e6af4aa6446883a8847f48}} using {\bfseries Gpg\+Sign\+Result} = std\+::shared\+\_\+ptr$<$ struct \+\_\+gpgme\+\_\+op\+\_\+sign\+\_\+result $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_a3c488625b949d2ac26315996b4b881e9}\label{namespaceGpgFrontend_a3c488625b949d2ac26315996b4b881e9}} using {\bfseries Gpg\+Verify\+Result} = std\+::shared\+\_\+ptr$<$ struct \+\_\+gpgme\+\_\+op\+\_\+verify\+\_\+result $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_a02576f9b3647baec8e7f6dacf9411b46}\label{namespaceGpgFrontend_a02576f9b3647baec8e7f6dacf9411b46}} using {\bfseries Gpg\+Gen\+Key\+Result} = std\+::shared\+\_\+ptr$<$ struct \+\_\+gpgme\+\_\+op\+\_\+genkey\+\_\+result $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_a788cd2c216e4867a676920da22d4f49d}\label{namespaceGpgFrontend_a788cd2c216e4867a676920da22d4f49d}} using {\bfseries Key\+Id} = std\+::string \item \mbox{\Hypertarget{namespaceGpgFrontend_a8d00b92300e229303fcf42e99fb77278}\label{namespaceGpgFrontend_a8d00b92300e229303fcf42e99fb77278}} using {\bfseries Subkey\+Id} = std\+::string \item \mbox{\Hypertarget{namespaceGpgFrontend_ab9e8650a71965e35cb6a763dbf61a048}\label{namespaceGpgFrontend_ab9e8650a71965e35cb6a763dbf61a048}} using {\bfseries Key\+Id\+Args\+List} = std\+::vector$<$ Key\+Id $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_a93c0ac9e329baa602e0bfdee7ea1273f}\label{namespaceGpgFrontend_a93c0ac9e329baa602e0bfdee7ea1273f}} using {\bfseries Key\+Id\+Args\+List\+Ptr} = std\+::unique\+\_\+ptr$<$ Key\+Id\+Args\+List $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_a953722e5ef4bbc71b42a4f821f00b737}\label{namespaceGpgFrontend_a953722e5ef4bbc71b42a4f821f00b737}} using {\bfseries UIDArgs\+List} = std\+::vector$<$ std\+::string $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_a54baa8d3ea3843c907a7644a85cb9699}\label{namespaceGpgFrontend_a54baa8d3ea3843c907a7644a85cb9699}} using {\bfseries UIDArgs\+List\+Ptr} = std\+::unique\+\_\+ptr$<$ UIDArgs\+List $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_a8454f6586944c55018f7745c22d281d2}\label{namespaceGpgFrontend_a8454f6586944c55018f7745c22d281d2}} using {\bfseries Sign\+Id\+Args\+List} = std\+::vector$<$ std\+::pair$<$ std\+::string, std\+::string $>$ $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_a3d735ed2f15dbf638cfa508daba16e5b}\label{namespaceGpgFrontend_a3d735ed2f15dbf638cfa508daba16e5b}} using {\bfseries Sign\+Id\+Args\+List\+Ptr} = std\+::unique\+\_\+ptr$<$ Sign\+Id\+Args\+List $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_a77d0c0a6b959437c89b069df9a97c194}\label{namespaceGpgFrontend_a77d0c0a6b959437c89b069df9a97c194}} using {\bfseries Key\+Fpr\+Args\+List\+Ptr} = std\+::unique\+\_\+ptr$<$ std\+::vector$<$ std\+::string $>$ $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_ab19bf8acd65218045313b120cf72333e}\label{namespaceGpgFrontend_ab19bf8acd65218045313b120cf72333e}} using {\bfseries Key\+Args\+List} = std\+::vector$<$ \mbox{\hyperlink{classGpgFrontend_1_1GpgKey}{Gpg\+Key}} $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_a1872f20a465ea6a482065996abab2c95}\label{namespaceGpgFrontend_a1872f20a465ea6a482065996abab2c95}} using {\bfseries Key\+List\+Ptr} = std\+::unique\+\_\+ptr$<$ Key\+Args\+List $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_a99b4f5a3b9f7a379a79c37ba8fff93af}\label{namespaceGpgFrontend_a99b4f5a3b9f7a379a79c37ba8fff93af}} using {\bfseries Gpg\+Key\+Link\+List} = std\+::list$<$ \mbox{\hyperlink{classGpgFrontend_1_1GpgKey}{Gpg\+Frontend\+::\+Gpg\+Key}} $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_ac35a1eb416146226f5c6446ab61dbc82}\label{namespaceGpgFrontend_ac35a1eb416146226f5c6446ab61dbc82}} using {\bfseries Key\+Link\+List\+Ptr} = std\+::unique\+\_\+ptr$<$ Gpg\+Key\+Link\+List $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_abdc336cc966afe6c1523cb7751cac9f8}\label{namespaceGpgFrontend_abdc336cc966afe6c1523cb7751cac9f8}} using {\bfseries Key\+Ptr} = std\+::unique\+\_\+ptr$<$ \mbox{\hyperlink{classGpgFrontend_1_1GpgKey}{Gpg\+Key}} $>$ \item \mbox{\Hypertarget{namespaceGpgFrontend_a8fe8112cc97385961a3f6a18129ea789}\label{namespaceGpgFrontend_a8fe8112cc97385961a3f6a18129ea789}} using {\bfseries Key\+Ptr\+Args\+List} = const std\+::initializer\+\_\+list$<$ Key\+Ptr $>$ \end{DoxyCompactItemize} \doxysubsection*{Functions} \begin{DoxyCompactItemize} \item GPGFRONTEND\+\_\+\+CORE\+\_\+\+EXPORT Gpg\+Encr\+Result \mbox{\hyperlink{namespaceGpgFrontend_a2a6566f59b4be29e453a1edd93f6a337}{\+\_\+new\+\_\+result}} (gpgme\+\_\+encrypt\+\_\+result\+\_\+t \&\&result) \item GPGFRONTEND\+\_\+\+CORE\+\_\+\+EXPORT Gpg\+Decr\+Result \mbox{\hyperlink{namespaceGpgFrontend_aaf7ddbd50cd4f16b7d2a997c03b20933}{\+\_\+new\+\_\+result}} (gpgme\+\_\+decrypt\+\_\+result\+\_\+t \&\&result) \item GPGFRONTEND\+\_\+\+CORE\+\_\+\+EXPORT Gpg\+Sign\+Result \mbox{\hyperlink{namespaceGpgFrontend_acb5dd82fc7d0428bafe34ed304dc15d1}{\+\_\+new\+\_\+result}} (gpgme\+\_\+sign\+\_\+result\+\_\+t \&\&result) \item GPGFRONTEND\+\_\+\+CORE\+\_\+\+EXPORT Gpg\+Verify\+Result \mbox{\hyperlink{namespaceGpgFrontend_ae3f2947210ad3e11269ebac355f47492}{\+\_\+new\+\_\+result}} (gpgme\+\_\+verify\+\_\+result\+\_\+t \&\&result) \item GPGFRONTEND\+\_\+\+CORE\+\_\+\+EXPORT Gpg\+Gen\+Key\+Result \mbox{\hyperlink{namespaceGpgFrontend_af909eb3cf2690d23939e394a461e48e9}{\+\_\+new\+\_\+result}} (gpgme\+\_\+genkey\+\_\+result\+\_\+t \&\&result) \item GPGFRONTEND\+\_\+\+CORE\+\_\+\+EXPORT Gpg\+Error \mbox{\hyperlink{namespaceGpgFrontend_afdad4e5f4c3ac891c09216e245c0f48e}{check\+\_\+gpg\+\_\+error}} (Gpg\+Error err) \item GPGFRONTEND\+\_\+\+CORE\+\_\+\+EXPORT Gpg\+Error \mbox{\hyperlink{namespaceGpgFrontend_adf0fbe100c3ea1bf2f33bc0f55dfff17}{check\+\_\+gpg\+\_\+error}} (Gpg\+Error gpgme\+Error, const std\+::string \&comment) \item GPGFRONTEND\+\_\+\+CORE\+\_\+\+EXPORT gpg\+\_\+err\+\_\+code\+\_\+t \mbox{\hyperlink{namespaceGpgFrontend_a4edac6df92596ba8eea3a8cdc1173684}{check\+\_\+gpg\+\_\+error\+\_\+2\+\_\+err\+\_\+code}} (gpgme\+\_\+error\+\_\+t err, gpgme\+\_\+error\+\_\+t predict=GPG\+\_\+\+ERR\+\_\+\+NO\+\_\+\+ERROR) \item GPGFRONTEND\+\_\+\+CORE\+\_\+\+EXPORT std\+::string \mbox{\hyperlink{namespaceGpgFrontend_ac494a4b0d91e08a70db77a399c9a0f30}{beautify\+\_\+fingerprint}} (Bype\+Array\+Const\+Ref fingerprint) \item std\+::string \mbox{\hyperlink{namespaceGpgFrontend_a73f3e2217fb1d72dc75f266e11875f6d}{read\+\_\+all\+\_\+data\+\_\+in\+\_\+file}} (const std\+::string \&path) \item GPGFRONTEND\+\_\+\+CORE\+\_\+\+EXPORT bool \mbox{\hyperlink{namespaceGpgFrontend_a5135069571678eda9c1f07d17ed9ac41}{write\+\_\+buffer\+\_\+to\+\_\+file}} (const std\+::string \&path, const std\+::string \&out\+\_\+buffer) \item std\+::string \mbox{\hyperlink{namespaceGpgFrontend_acff2cf5dd5b112b324fa6574ee935f79}{get\+\_\+file\+\_\+extension}} (const std\+::string \&path) \begin{DoxyCompactList}\small\item\em Get the file extension object. \end{DoxyCompactList}\item std\+::string \mbox{\hyperlink{namespaceGpgFrontend_a5a2f5fc1ad3de55e41a1b7a388821328}{get\+\_\+only\+\_\+file\+\_\+name\+\_\+with\+\_\+path}} (const std\+::string \&path) \begin{DoxyCompactList}\small\item\em Get the only file name with path object. \end{DoxyCompactList}\item int \mbox{\hyperlink{namespaceGpgFrontend_a2a0394c8bdd277f5235f9875a1d69a99}{text\+\_\+is\+\_\+signed}} (Bype\+Array\+Ref text) \item \mbox{\Hypertarget{namespaceGpgFrontend_aff3e12940da2d43ce7aedeb795643434}\label{namespaceGpgFrontend_aff3e12940da2d43ce7aedeb795643434}} void \mbox{\hyperlink{namespaceGpgFrontend_aff3e12940da2d43ce7aedeb795643434}{Init\+Logging\+System}} () \begin{DoxyCompactList}\small\item\em setup logging system and do proper initialization \end{DoxyCompactList}\item \mbox{\Hypertarget{namespaceGpgFrontend_a1194ef197102807cf31a6e27fdd47e07}\label{namespaceGpgFrontend_a1194ef197102807cf31a6e27fdd47e07}} void {\bfseries Reset\+Gpg\+Frontend\+Core} () \item \mbox{\Hypertarget{namespaceGpgFrontend_a5c172444c7aacf11b2f8b2ebe72fb053}\label{namespaceGpgFrontend_a5c172444c7aacf11b2f8b2ebe72fb053}} void {\bfseries init\+\_\+gpgfrontend\+\_\+core} () \item \mbox{\Hypertarget{namespaceGpgFrontend_a3aa61e484a9f2e198119af82662fe68f}\label{namespaceGpgFrontend_a3aa61e484a9f2e198119af82662fe68f}} void {\bfseries reset\+\_\+gpgfrontend\+\_\+core} () \item void \mbox{\hyperlink{namespaceGpgFrontend_aafb9aa0ba1d03afa09085b1b8136c55f}{new\+\_\+default\+\_\+settings\+\_\+channel}} (int channel) \end{DoxyCompactItemize} \doxysubsection*{Variables} \begin{DoxyCompactItemize} \item \mbox{\Hypertarget{namespaceGpgFrontend_a9e0e33d7737ab41ab80422134e659bb3}\label{namespaceGpgFrontend_a9e0e33d7737ab41ab80422134e659bb3}} const int {\bfseries GPGFRONTEND\+\_\+\+DEFAULT\+\_\+\+CHANNEL} = 0 \item \mbox{\Hypertarget{namespaceGpgFrontend_a17ea01393928cb8638564cdd787151e4}\label{namespaceGpgFrontend_a17ea01393928cb8638564cdd787151e4}} const int {\bfseries GPGFRONTEND\+\_\+\+NON\+\_\+\+ASCII\+\_\+\+CHANNEL} = 2 \end{DoxyCompactItemize} \doxysubsection{Detailed Description} Copyright (C) 2021 Saturneric This file is part of \mbox{\hyperlink{namespaceGpgFrontend}{Gpg\+Frontend}}. \mbox{\hyperlink{namespaceGpgFrontend}{Gpg\+Frontend}} is free software\+: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. \mbox{\hyperlink{namespaceGpgFrontend}{Gpg\+Frontend}} is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with \mbox{\hyperlink{namespaceGpgFrontend}{Gpg\+Frontend}}. If not, see \href{https://www.gnu.org/licenses/}{\texttt{ https\+://www.\+gnu.\+org/licenses/}}. The initial version of the source code is inherited from the gpg4usb project, which is under GPL-\/3.\+0-\/or-\/later. The source code version of this software was modified and released by Saturneric\href{mailto:eric@bktus.com}{\texttt{ eric@bktus.\+com}}\href{mailto:eric@bktus.com}{\texttt{ eric@bktus.\+com}} starting on May 12, 2021. Copyright (C) 2021 Saturneric This file is part of \mbox{\hyperlink{namespaceGpgFrontend}{Gpg\+Frontend}}. \mbox{\hyperlink{namespaceGpgFrontend}{Gpg\+Frontend}} is free software\+: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. \mbox{\hyperlink{namespaceGpgFrontend}{Gpg\+Frontend}} is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with \mbox{\hyperlink{namespaceGpgFrontend}{Gpg\+Frontend}}. If not, see \href{https://www.gnu.org/licenses/}{\texttt{ https\+://www.\+gnu.\+org/licenses/}}. The initial version of the source code is inherited from the gpg4usb project, which is under GPL-\/3.\+0-\/or-\/later. All the source code of \mbox{\hyperlink{namespaceGpgFrontend}{Gpg\+Frontend}} was modified and released by Saturneric\href{mailto:eric@bktus.com}{\texttt{ eric@bktus.\+com}} starting on May 12, 2021. SPDX-\/\+License-\/\+Identifier\+: GPL-\/3.\+0-\/or-\/later \doxysubsection{Function Documentation} \mbox{\Hypertarget{namespaceGpgFrontend_aaf7ddbd50cd4f16b7d2a997c03b20933}\label{namespaceGpgFrontend_aaf7ddbd50cd4f16b7d2a997c03b20933}} \index{GpgFrontend@{GpgFrontend}!\_new\_result@{\_new\_result}} \index{\_new\_result@{\_new\_result}!GpgFrontend@{GpgFrontend}} \doxysubsubsection{\texorpdfstring{\_new\_result()}{\_new\_result()}\hspace{0.1cm}{\footnotesize\ttfamily [1/5]}} {\footnotesize\ttfamily Gpg\+Frontend\+::\+Gpg\+Decr\+Result Gpg\+Frontend\+::\+\_\+new\+\_\+result (\begin{DoxyParamCaption}\item[{gpgme\+\_\+decrypt\+\_\+result\+\_\+t \&\&}]{result }\end{DoxyParamCaption})} \begin{DoxyParams}{Parameters} {\em result} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} Gpg\+Decr\+Result \end{DoxyReturn} \mbox{\Hypertarget{namespaceGpgFrontend_a2a6566f59b4be29e453a1edd93f6a337}\label{namespaceGpgFrontend_a2a6566f59b4be29e453a1edd93f6a337}} \index{GpgFrontend@{GpgFrontend}!\_new\_result@{\_new\_result}} \index{\_new\_result@{\_new\_result}!GpgFrontend@{GpgFrontend}} \doxysubsubsection{\texorpdfstring{\_new\_result()}{\_new\_result()}\hspace{0.1cm}{\footnotesize\ttfamily [2/5]}} {\footnotesize\ttfamily Gpg\+Frontend\+::\+Gpg\+Encr\+Result Gpg\+Frontend\+::\+\_\+new\+\_\+result (\begin{DoxyParamCaption}\item[{gpgme\+\_\+encrypt\+\_\+result\+\_\+t \&\&}]{result }\end{DoxyParamCaption})} \begin{DoxyParams}{Parameters} {\em result} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} Gpg\+Encr\+Result \end{DoxyReturn} Referenced by Gpg\+Frontend\+::\+Gpg\+Basic\+Operator\+::\+Decrypt(), Gpg\+Frontend\+::\+Gpg\+Basic\+Operator\+::\+Decrypt\+Verify(), Gpg\+Frontend\+::\+Gpg\+Basic\+Operator\+::\+Encrypt(), Gpg\+Frontend\+::\+Gpg\+Basic\+Operator\+::\+Encrypt\+Sign(), Gpg\+Frontend\+::\+Gpg\+Basic\+Operator\+::\+Encrypt\+Symmetric(), Gpg\+Frontend\+::\+Gpg\+Key\+Opera\+::\+Generate\+Key(), Gpg\+Frontend\+::\+Gpg\+Basic\+Operator\+::\+Sign(), and Gpg\+Frontend\+::\+Gpg\+Basic\+Operator\+::\+Verify(). \mbox{\Hypertarget{namespaceGpgFrontend_af909eb3cf2690d23939e394a461e48e9}\label{namespaceGpgFrontend_af909eb3cf2690d23939e394a461e48e9}} \index{GpgFrontend@{GpgFrontend}!\_new\_result@{\_new\_result}} \index{\_new\_result@{\_new\_result}!GpgFrontend@{GpgFrontend}} \doxysubsubsection{\texorpdfstring{\_new\_result()}{\_new\_result()}\hspace{0.1cm}{\footnotesize\ttfamily [3/5]}} {\footnotesize\ttfamily Gpg\+Frontend\+::\+Gpg\+Gen\+Key\+Result Gpg\+Frontend\+::\+\_\+new\+\_\+result (\begin{DoxyParamCaption}\item[{gpgme\+\_\+genkey\+\_\+result\+\_\+t \&\&}]{result }\end{DoxyParamCaption})} \begin{DoxyParams}{Parameters} {\em result} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} Gpg\+Gen\+Key\+Result \end{DoxyReturn} \mbox{\Hypertarget{namespaceGpgFrontend_acb5dd82fc7d0428bafe34ed304dc15d1}\label{namespaceGpgFrontend_acb5dd82fc7d0428bafe34ed304dc15d1}} \index{GpgFrontend@{GpgFrontend}!\_new\_result@{\_new\_result}} \index{\_new\_result@{\_new\_result}!GpgFrontend@{GpgFrontend}} \doxysubsubsection{\texorpdfstring{\_new\_result()}{\_new\_result()}\hspace{0.1cm}{\footnotesize\ttfamily [4/5]}} {\footnotesize\ttfamily Gpg\+Frontend\+::\+Gpg\+Sign\+Result Gpg\+Frontend\+::\+\_\+new\+\_\+result (\begin{DoxyParamCaption}\item[{gpgme\+\_\+sign\+\_\+result\+\_\+t \&\&}]{result }\end{DoxyParamCaption})} \begin{DoxyParams}{Parameters} {\em result} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} Gpg\+Sign\+Result \end{DoxyReturn} \mbox{\Hypertarget{namespaceGpgFrontend_ae3f2947210ad3e11269ebac355f47492}\label{namespaceGpgFrontend_ae3f2947210ad3e11269ebac355f47492}} \index{GpgFrontend@{GpgFrontend}!\_new\_result@{\_new\_result}} \index{\_new\_result@{\_new\_result}!GpgFrontend@{GpgFrontend}} \doxysubsubsection{\texorpdfstring{\_new\_result()}{\_new\_result()}\hspace{0.1cm}{\footnotesize\ttfamily [5/5]}} {\footnotesize\ttfamily Gpg\+Frontend\+::\+Gpg\+Verify\+Result Gpg\+Frontend\+::\+\_\+new\+\_\+result (\begin{DoxyParamCaption}\item[{gpgme\+\_\+verify\+\_\+result\+\_\+t \&\&}]{result }\end{DoxyParamCaption})} \begin{DoxyParams}{Parameters} {\em result} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} Gpg\+Verify\+Result \end{DoxyReturn} \mbox{\Hypertarget{namespaceGpgFrontend_ac494a4b0d91e08a70db77a399c9a0f30}\label{namespaceGpgFrontend_ac494a4b0d91e08a70db77a399c9a0f30}} \index{GpgFrontend@{GpgFrontend}!beautify\_fingerprint@{beautify\_fingerprint}} \index{beautify\_fingerprint@{beautify\_fingerprint}!GpgFrontend@{GpgFrontend}} \doxysubsubsection{\texorpdfstring{beautify\_fingerprint()}{beautify\_fingerprint()}} {\footnotesize\ttfamily std\+::string Gpg\+Frontend\+::beautify\+\_\+fingerprint (\begin{DoxyParamCaption}\item[{Gpg\+Frontend\+::\+Bype\+Array\+Const\+Ref}]{fingerprint }\end{DoxyParamCaption})} \begin{DoxyParams}{Parameters} {\em fingerprint} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} std\+::string \end{DoxyReturn} Referenced by Gpg\+Frontend\+::\+UI\+::\+Verify\+Key\+Detail\+Box\+::create\+\_\+key\+\_\+info\+\_\+grid(). \mbox{\Hypertarget{namespaceGpgFrontend_afdad4e5f4c3ac891c09216e245c0f48e}\label{namespaceGpgFrontend_afdad4e5f4c3ac891c09216e245c0f48e}} \index{GpgFrontend@{GpgFrontend}!check\_gpg\_error@{check\_gpg\_error}} \index{check\_gpg\_error@{check\_gpg\_error}!GpgFrontend@{GpgFrontend}} \doxysubsubsection{\texorpdfstring{check\_gpg\_error()}{check\_gpg\_error()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} {\footnotesize\ttfamily gpgme\+\_\+error\+\_\+t Gpg\+Frontend\+::check\+\_\+gpg\+\_\+error (\begin{DoxyParamCaption}\item[{Gpg\+Error}]{err }\end{DoxyParamCaption})} \begin{DoxyParams}{Parameters} {\em err} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} Gpg\+Error \end{DoxyReturn} Referenced by Gpg\+Frontend\+::\+Gpg\+Basic\+Operator\+::\+Decrypt(), Gpg\+Frontend\+::\+Gpg\+Basic\+Operator\+::\+Decrypt\+Verify(), Gpg\+Frontend\+::\+Gpg\+Key\+Opera\+::\+Delete\+Keys(), Gpg\+Frontend\+::\+Gpg\+Basic\+Operator\+::\+Encrypt(), Gpg\+Frontend\+::\+Gpg\+Basic\+Operator\+::\+Encrypt\+Sign(), Gpg\+Frontend\+::\+Gpg\+Basic\+Operator\+::\+Encrypt\+Symmetric(), Gpg\+Frontend\+::\+Gpg\+Key\+Opera\+::\+Generate\+Key(), Gpg\+Frontend\+::\+Gpg\+Key\+Opera\+::\+Generate\+Subkey(), Gpg\+Frontend\+::\+Gpg\+Context\+::\+Gpg\+Context(), Gpg\+Frontend\+::\+Gpg\+Key\+Import\+Exporter\+::\+Import\+Key(), Gpg\+Frontend\+::\+Gpg\+Context\+::init\+\_\+ctx(), Gpg\+Frontend\+::\+Gpg\+Key\+Opera\+::\+Modify\+Password(), Gpg\+Frontend\+::\+Gpg\+Key\+Opera\+::\+Modify\+TOFUPolicy(), Gpg\+Frontend\+::\+Gpg\+Key\+Manager\+::\+Rev\+Sign(), Gpg\+Frontend\+::\+Gpg\+UIDOperator\+::\+Rev\+UID(), Gpg\+Frontend\+::\+Gpg\+Key\+Manager\+::\+Set\+Expire(), Gpg\+Frontend\+::\+Gpg\+UIDOperator\+::\+Set\+Primary\+UID(), Gpg\+Frontend\+::\+Gpg\+Basic\+Operator\+::\+Set\+Signers(), Gpg\+Frontend\+::\+Gpg\+Basic\+Operator\+::\+Sign(), Gpg\+Frontend\+::\+Gpg\+Key\+Manager\+::\+Sign\+Key(), and Gpg\+Frontend\+::\+Gpg\+Basic\+Operator\+::\+Verify(). \mbox{\Hypertarget{namespaceGpgFrontend_adf0fbe100c3ea1bf2f33bc0f55dfff17}\label{namespaceGpgFrontend_adf0fbe100c3ea1bf2f33bc0f55dfff17}} \index{GpgFrontend@{GpgFrontend}!check\_gpg\_error@{check\_gpg\_error}} \index{check\_gpg\_error@{check\_gpg\_error}!GpgFrontend@{GpgFrontend}} \doxysubsubsection{\texorpdfstring{check\_gpg\_error()}{check\_gpg\_error()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} {\footnotesize\ttfamily gpgme\+\_\+error\+\_\+t Gpg\+Frontend\+::check\+\_\+gpg\+\_\+error (\begin{DoxyParamCaption}\item[{Gpg\+Error}]{gpgme\+Error, }\item[{const std\+::string \&}]{comment }\end{DoxyParamCaption})} \begin{DoxyParams}{Parameters} {\em gpgme\+Error} & \\ \hline {\em comment} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} Gpg\+Error \end{DoxyReturn} \mbox{\Hypertarget{namespaceGpgFrontend_a4edac6df92596ba8eea3a8cdc1173684}\label{namespaceGpgFrontend_a4edac6df92596ba8eea3a8cdc1173684}} \index{GpgFrontend@{GpgFrontend}!check\_gpg\_error\_2\_err\_code@{check\_gpg\_error\_2\_err\_code}} \index{check\_gpg\_error\_2\_err\_code@{check\_gpg\_error\_2\_err\_code}!GpgFrontend@{GpgFrontend}} \doxysubsubsection{\texorpdfstring{check\_gpg\_error\_2\_err\_code()}{check\_gpg\_error\_2\_err\_code()}} {\footnotesize\ttfamily gpg\+\_\+err\+\_\+code\+\_\+t Gpg\+Frontend\+::check\+\_\+gpg\+\_\+error\+\_\+2\+\_\+err\+\_\+code (\begin{DoxyParamCaption}\item[{gpgme\+\_\+error\+\_\+t}]{err, }\item[{gpgme\+\_\+error\+\_\+t}]{predict = {\ttfamily GPG\+\_\+ERR\+\_\+NO\+\_\+ERROR} }\end{DoxyParamCaption})} \begin{DoxyParams}{Parameters} {\em err} & \\ \hline {\em predict} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} gpg\+\_\+err\+\_\+code\+\_\+t \end{DoxyReturn} Referenced by Gpg\+Frontend\+::\+Gpg\+UIDOperator\+::\+Add\+UID(), Gpg\+Frontend\+::\+Gpg\+File\+Opera\+::\+Decrypt\+File(), Gpg\+Frontend\+::\+Gpg\+File\+Opera\+::\+Decrypt\+Verify\+File(), Gpg\+Frontend\+::\+Gpg\+File\+Opera\+::\+Encrypt\+File(), Gpg\+Frontend\+::\+Gpg\+File\+Opera\+::\+Encrypt\+File\+Symmetric(), Gpg\+Frontend\+::\+Gpg\+File\+Opera\+::\+Encrypt\+Sign\+File(), Gpg\+Frontend\+::\+Gpg\+Key\+Import\+Exporter\+::\+Export\+Key(), Gpg\+Frontend\+::\+Gpg\+Key\+Import\+Exporter\+::\+Export\+Key\+Open\+SSH(), Gpg\+Frontend\+::\+Gpg\+Key\+Import\+Exporter\+::\+Export\+Secret\+Key(), Gpg\+Frontend\+::\+Gpg\+Key\+Import\+Exporter\+::\+Export\+Secret\+Key\+Shortest(), Gpg\+Frontend\+::\+Gpg\+Key\+Getter\+::\+Flush\+Key\+Cache(), Gpg\+Frontend\+::\+Gpg\+Key\+Opera\+::\+Generate\+Key(), Gpg\+Frontend\+::\+Gpg\+Context\+::\+Gpg\+Context(), Gpg\+Frontend\+::\+Gpg\+Context\+::init\+\_\+ctx(), Gpg\+Frontend\+::\+Gpg\+Key\+Manager\+::\+Rev\+Sign(), Gpg\+Frontend\+::\+Gpg\+UIDOperator\+::\+Rev\+UID(), Gpg\+Frontend\+::\+Gpg\+Key\+Manager\+::\+Set\+Expire(), Gpg\+Frontend\+::\+Gpg\+UIDOperator\+::\+Set\+Primary\+UID(), Gpg\+Frontend\+::\+Gpg\+File\+Opera\+::\+Sign\+File(), Gpg\+Frontend\+::\+Gpg\+Key\+Manager\+::\+Sign\+Key(), Gpg\+Frontend\+::\+UI\+::\+Main\+Window\+::slot\+\_\+decrypt(), Gpg\+Frontend\+::\+UI\+::\+Main\+Window\+::slot\+\_\+decrypt\+\_\+verify(), Gpg\+Frontend\+::\+UI\+::\+Main\+Window\+::slot\+\_\+encrypt(), Gpg\+Frontend\+::\+UI\+::\+Main\+Window\+::slot\+\_\+encrypt\+\_\+sign(), Gpg\+Frontend\+::\+UI\+::\+Subkey\+Generate\+Dialog\+::slot\+\_\+key\+\_\+gen\+\_\+accept(), Gpg\+Frontend\+::\+UI\+::\+Main\+Window\+::slot\+\_\+sign(), and Gpg\+Frontend\+::\+UI\+::\+Main\+Window\+::slot\+\_\+verify(). \mbox{\Hypertarget{namespaceGpgFrontend_acff2cf5dd5b112b324fa6574ee935f79}\label{namespaceGpgFrontend_acff2cf5dd5b112b324fa6574ee935f79}} \index{GpgFrontend@{GpgFrontend}!get\_file\_extension@{get\_file\_extension}} \index{get\_file\_extension@{get\_file\_extension}!GpgFrontend@{GpgFrontend}} \doxysubsubsection{\texorpdfstring{get\_file\_extension()}{get\_file\_extension()}} {\footnotesize\ttfamily std\+::string Gpg\+Frontend\+::get\+\_\+file\+\_\+extension (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{path }\end{DoxyParamCaption})} Get the file extension object. \begin{DoxyParams}{Parameters} {\em path} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} std\+::string \end{DoxyReturn} \mbox{\Hypertarget{namespaceGpgFrontend_a5a2f5fc1ad3de55e41a1b7a388821328}\label{namespaceGpgFrontend_a5a2f5fc1ad3de55e41a1b7a388821328}} \index{GpgFrontend@{GpgFrontend}!get\_only\_file\_name\_with\_path@{get\_only\_file\_name\_with\_path}} \index{get\_only\_file\_name\_with\_path@{get\_only\_file\_name\_with\_path}!GpgFrontend@{GpgFrontend}} \doxysubsubsection{\texorpdfstring{get\_only\_file\_name\_with\_path()}{get\_only\_file\_name\_with\_path()}} {\footnotesize\ttfamily std\+::string Gpg\+Frontend\+::get\+\_\+only\+\_\+file\+\_\+name\+\_\+with\+\_\+path (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{path }\end{DoxyParamCaption})} Get the only file name with path object. \begin{DoxyParams}{Parameters} {\em path} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} std\+::string \end{DoxyReturn} \mbox{\Hypertarget{namespaceGpgFrontend_aafb9aa0ba1d03afa09085b1b8136c55f}\label{namespaceGpgFrontend_aafb9aa0ba1d03afa09085b1b8136c55f}} \index{GpgFrontend@{GpgFrontend}!new\_default\_settings\_channel@{new\_default\_settings\_channel}} \index{new\_default\_settings\_channel@{new\_default\_settings\_channel}!GpgFrontend@{GpgFrontend}} \doxysubsubsection{\texorpdfstring{new\_default\_settings\_channel()}{new\_default\_settings\_channel()}} {\footnotesize\ttfamily void Gpg\+Frontend\+::new\+\_\+default\+\_\+settings\+\_\+channel (\begin{DoxyParamCaption}\item[{int}]{channel = {\ttfamily GpgFrontend\+:\+:GPGFRONTEND\+\_\+DEFAULT\+\_\+CHANNEL} }\end{DoxyParamCaption})} \begin{DoxyParams}{Parameters} {\em channel} & \\ \hline \end{DoxyParams} References Gpg\+Frontend\+::\+Singleton\+Function\+Object$<$ Gpg\+Context $>$\+::\+Create\+Instance(). \mbox{\Hypertarget{namespaceGpgFrontend_a73f3e2217fb1d72dc75f266e11875f6d}\label{namespaceGpgFrontend_a73f3e2217fb1d72dc75f266e11875f6d}} \index{GpgFrontend@{GpgFrontend}!read\_all\_data\_in\_file@{read\_all\_data\_in\_file}} \index{read\_all\_data\_in\_file@{read\_all\_data\_in\_file}!GpgFrontend@{GpgFrontend}} \doxysubsubsection{\texorpdfstring{read\_all\_data\_in\_file()}{read\_all\_data\_in\_file()}} {\footnotesize\ttfamily std\+::string Gpg\+Frontend\+::read\+\_\+all\+\_\+data\+\_\+in\+\_\+file (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{path }\end{DoxyParamCaption})} \begin{DoxyParams}{Parameters} {\em path} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} std\+::string \end{DoxyReturn} \mbox{\Hypertarget{namespaceGpgFrontend_a2a0394c8bdd277f5235f9875a1d69a99}\label{namespaceGpgFrontend_a2a0394c8bdd277f5235f9875a1d69a99}} \index{GpgFrontend@{GpgFrontend}!text\_is\_signed@{text\_is\_signed}} \index{text\_is\_signed@{text\_is\_signed}!GpgFrontend@{GpgFrontend}} \doxysubsubsection{\texorpdfstring{text\_is\_signed()}{text\_is\_signed()}} {\footnotesize\ttfamily int Gpg\+Frontend\+::text\+\_\+is\+\_\+signed (\begin{DoxyParamCaption}\item[{Gpg\+Frontend\+::\+Bype\+Array\+Ref}]{text }\end{DoxyParamCaption})} \begin{DoxyParams}{Parameters} {\em text} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} int \end{DoxyReturn} \mbox{\Hypertarget{namespaceGpgFrontend_a5135069571678eda9c1f07d17ed9ac41}\label{namespaceGpgFrontend_a5135069571678eda9c1f07d17ed9ac41}} \index{GpgFrontend@{GpgFrontend}!write\_buffer\_to\_file@{write\_buffer\_to\_file}} \index{write\_buffer\_to\_file@{write\_buffer\_to\_file}!GpgFrontend@{GpgFrontend}} \doxysubsubsection{\texorpdfstring{write\_buffer\_to\_file()}{write\_buffer\_to\_file()}} {\footnotesize\ttfamily bool Gpg\+Frontend\+::write\+\_\+buffer\+\_\+to\+\_\+file (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{path, }\item[{const std\+::string \&}]{out\+\_\+buffer }\end{DoxyParamCaption})} \begin{DoxyParams}{Parameters} {\em path} & \\ \hline {\em out\+\_\+buffer} & \\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} true false \end{DoxyReturn} Referenced by Gpg\+Frontend\+::\+UI\+::\+Key\+Pair\+Opera\+Tab\+::slot\+\_\+export\+\_\+private\+\_\+key().