9sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextEnglish}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/security/digsigmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/zh_TW/security/digsigmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/it_IT/security/digsigmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/ja_JP/security/digsigmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/ko_KR/security/digsigmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget#/translations/sp_SP/security/digsigmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageChinese (Simplified)uh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhP/var/lib/git/docbuild/linux/Documentation/translations/zh_CN/security/digsig.rsthKubhnote)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]h paragraph)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh5Documentation/translations/zh_CN/disclaimer-zh_CN.rsthKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hOriginalh]hOriginal}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(h"Documentation/security/digsig.rst h]h)}(h!Documentation/security/digsig.rsth]h!Documentation/security/digsig.rst}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h翻译h]h翻译}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhKubh)}(h.赵硕 Shuo Zhao h]h)}(h-赵硕 Shuo Zhao h](h赵硕 Shuo Zhao <}(hj hhhNhNubh reference)}(hzhaoshuo@cqsoftware.com.cnh]hzhaoshuo@cqsoftware.com.cn}(hj*hhhNhNubah}(h]h ]h"]h$]h&]refuri!mailto:zhaoshuo@cqsoftware.com.cnuh1j(hj ubh>}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhsection)}(hhh](htitle)}(h数字签名验证APIh]h数字签名验证API}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjXhhhhhK ubh)}(hhh](h)}(hhh](h)}(h作者h]h作者}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhhhKubh)}(hDmitry Kasatkinh]h)}(hjh]hDmitry Kasatkin}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1hhjnubeh}(h]h ]h"]h$]h&]uh1hhhhK hjkhhubh)}(hhh](h)}(h日期h]h日期}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhKubh)}(h 2011.06.10 h]h)}(h 2011.06.10h]h 2011.06.10}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhKhjkhhubeh}(h]h ]h"]h$]h&]uh1hhjXhhhhhK ubh)}(h+内容 1.介绍 2.API 3.用户空间工具h]h+内容 1.介绍 2.API 3.用户空间工具}hjsbah}(h]h ]h"]h$]h&]hhuh1hhjXhhhhhKubjW)}(hhh](j\)}(h介绍h]h介绍}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjhhhhhKubh)}(h数字签名验证API提供了一种验证数字签名的方法。 目前,数字签名被IMA/EVM完整性保护子系统使用。h]h数字签名验证API提供了一种验证数字签名的方法。 目前,数字签名被IMA/EVM完整性保护子系统使用。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h数字签名验证是通过精简的GnuPG多精度整数(MPI)库的内核移植来实现的。 该内核版本提供了内存分配错误处理,已根据内核编码风格进行重构,并修复 了checkpatch.pl报告的错误和警告。h]h数字签名验证是通过精简的GnuPG多精度整数(MPI)库的内核移植来实现的。 该内核版本提供了内存分配错误处理,已根据内核编码风格进行重构,并修复 了checkpatch.pl报告的错误和警告。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h'公钥和签名由头部和MPIs组成::h]h&公钥和签名由头部和MPIs组成:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjhhubh literal_block)}(hXFstruct pubkey_hdr { uint8_t version; /* 密钥格式版本 */ time_t timestamp; /* 密钥时间戳,目前为0 */ uint8_t algo; uint8_t nmpi; char mpi[0]; } __packed; struct signature_hdr { uint8_t version; /* 签名格式版本 */ time_t timestamp; /* 签名时间戳 */ uint8_t algo; uint8_t hash; uint8_t keyid[8]; uint8_t nmpi; char mpi[0]; } __packed;h]hXFstruct pubkey_hdr { uint8_t version; /* 密钥格式版本 */ time_t timestamp; /* 密钥时间戳,目前为0 */ uint8_t algo; uint8_t nmpi; char mpi[0]; } __packed; struct signature_hdr { uint8_t version; /* 签名格式版本 */ time_t timestamp; /* 签名时间戳 */ uint8_t algo; uint8_t hash; uint8_t keyid[8]; uint8_t nmpi; char mpi[0]; } __packed;}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhK$hjhhubh)}(hkeyid等同对整个密钥的内容进行SHA1哈希运算后的第12到19字节。 签名头部用于生成签名的输入。这种方法确保了密钥或签名头部无法更改。 它保护时间戳不被更改,并可以用于回滚保护。h]hkeyid等同对整个密钥的内容进行SHA1哈希运算后的第12到19字节。 签名头部用于生成签名的输入。这种方法确保了密钥或签名头部无法更改。 它保护时间戳不被更改,并可以用于回滚保护。}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK6hjhhubeh}(h]id1ah ]h"]介绍ah$]h&]uh1jVhjXhhhhhKubjW)}(hhh](j\)}(hAPIh]hAPI}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j[hj@hhhhhK;ubh)}(h 目前API仅包含一个函数::h]h目前API仅包含一个函数:}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK=hj@hhubj)}(hXOdigsig_verify() - 使用公钥进行数字签名验证 /** * digsig_verify() - 使用公钥进行数字签名验证 * @keyring: 查找密钥的密钥环 * @sig: 数字签名 * @sigen: 签名的长度 * @data: 数据 * @datalen: 数据的长度 * @return: 成功时返回0,失败时返回 -EINVAL * * 验证数据相对于数字签名的完整性。 * 目前仅支持RSA算法。 * 通常将内容的哈希值作为此函数的数据。 * */ int digsig_verify(struct key *keyring, const char *sig, int siglen, const char *data, int datalen);h]hXOdigsig_verify() - 使用公钥进行数字签名验证 /** * digsig_verify() - 使用公钥进行数字签名验证 * @keyring: 查找密钥的密钥环 * @sig: 数字签名 * @sigen: 签名的长度 * @data: 数据 * @datalen: 数据的长度 * @return: 成功时返回0,失败时返回 -EINVAL * * 验证数据相对于数字签名的完整性。 * 目前仅支持RSA算法。 * 通常将内容的哈希值作为此函数的数据。 * */ int digsig_verify(struct key *keyring, const char *sig, int siglen, const char *data, int datalen);}hj_sbah}(h]h ]h"]h$]h&]hhuh1jhhhK?hj@hhubeh}(h]id2ah ]h"]apiah$]h&]uh1jVhjXhhhhhK;ubjW)}(hhh](j\)}(h用户空间工具h]h用户空间工具}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjuhhhhhKSubh)}(hX签名和密钥管理实用工具evm-utils提供了生成签名、加载密钥到内核密钥环中的功能。 密钥可以是PEM格式,或转换为内核格式。 当把密钥添加到内核密钥环时,keyid定义该密钥的名称:下面的示例中为5D2B05FC633EE3E8。h]hX签名和密钥管理实用工具evm-utils提供了生成签名、加载密钥到内核密钥环中的功能。 密钥可以是PEM格式,或转换为内核格式。 当把密钥添加到内核密钥环时,keyid定义该密钥的名称:下面的示例中为5D2B05FC633EE3E8。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKUhjuhhubh)}(h,以下是keyctl实用工具的示例输出::h]h+以下是keyctl实用工具的示例输出:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKYhjuhhubj)}(hX$ keyctl show Session Keyring -3 --alswrv 0 0 keyring: _ses 603976250 --alswrv 0 -1 \_ keyring: _uid.0 817777377 --alswrv 0 0 \_ user: kmk 891974900 --alswrv 0 0 \_ encrypted: evm-key 170323636 --alswrv 0 0 \_ keyring: _module 548221616 --alswrv 0 0 \_ keyring: _ima 128198054 --alswrv 0 0 \_ keyring: _evm $ keyctl list 128198054 1 key in keyring: 620789745: --alswrv 0 0 user: 5D2B05FC633EE3E8h]hX$ keyctl show Session Keyring -3 --alswrv 0 0 keyring: _ses 603976250 --alswrv 0 -1 \_ keyring: _uid.0 817777377 --alswrv 0 0 \_ user: kmk 891974900 --alswrv 0 0 \_ encrypted: evm-key 170323636 --alswrv 0 0 \_ keyring: _module 548221616 --alswrv 0 0 \_ keyring: _ima 128198054 --alswrv 0 0 \_ keyring: _evm $ keyctl list 128198054 1 key in keyring: 620789745: --alswrv 0 0 user: 5D2B05FC633EE3E8}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhK[hjuhhubeh}(h]id3ah ]h"]用户空间工具ah$]h&]uh1jVhjXhhhhhKSubeh}(h]apiah ]h"]数字签名验证apiah$]h&]uh1jVhhhhhhhK ubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(j[N generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jjj=j:jrjojju nametypes}(jj=jrjuh}(jjXj:jjoj@jjuu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jKsRparse_messages]transform_messages] transformerN include_log]4Documentation/translations/zh_CN/security/digsig.rst(NNNNta decorationNhhub.