€•_YŒsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ./translations/zh_CN/crypto/libcrypto-signature”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/zh_TW/crypto/libcrypto-signature”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/it_IT/crypto/libcrypto-signature”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/ja_JP/crypto/libcrypto-signature”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/ko_KR/crypto/libcrypto-signature”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/pt_BR/crypto/libcrypto-signature”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/sp_SP/crypto/libcrypto-signature”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ)SPDX-License-Identifier: GPL-2.0-or-later”h]”hŒ)SPDX-License-Identifier: GPL-2.0-or-later”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒH/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature.rst”h´KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒDigital signature algorithms”h]”hŒDigital signature algorithms”…””}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒML-DSA”h]”hŒML-DSA”…””}”(hhàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÝh²hh³hÇh´KubhŒ paragraph”“”)”}”(hŒ3Support for the ML-DSA digital signature algorithm.”h]”hŒ3Support for the ML-DSA digital signature algorithm.”…””}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hhÝh²hubhŒindex”“”)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œmldsa_verify (C function)”Œc.mldsa_verify”hNt”auh1hþhhÝh²hh³Nh´NubhŒdesc”“”)”}”(hhh]”(hŒdesc_signature”“”)”}”(hŒ€int mldsa_verify (enum mldsa_alg alg, const u8 *sig, size_t sig_len, const u8 *msg, size_t msg_len, const u8 *pk, size_t pk_len)”h]”hŒdesc_signature_line”“”)”}”(hŒint mldsa_verify(enum mldsa_alg alg, const u8 *sig, size_t sig_len, const u8 *msg, size_t msg_len, const u8 *pk, size_t pk_len)”h]”(hŒdesc_sig_keyword_type”“”)”}”(hŒint”h]”hŒint”…””}”(hj"h²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1j hjh²hh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´KubhŒdesc_sig_space”“”)”}”(hŒ ”h]”hŒ ”…””}”(hj4h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j2hjh²hh³j1h´KubhŒ desc_name”“”)”}”(hŒ mldsa_verify”h]”hŒ desc_sig_name”“”)”}”(hŒ mldsa_verify”h]”hŒ mldsa_verify”…””}”(hjKh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jIhjEubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1jChjh²hh³j1h´KubhŒdesc_parameterlist”“”)”}”(hŒo(enum mldsa_alg alg, const u8 *sig, size_t sig_len, const u8 *msg, size_t msg_len, const u8 *pk, size_t pk_len)”h]”(hŒdesc_parameter”“”)”}”(hŒenum mldsa_alg alg”h]”(hŒdesc_sig_keyword”“”)”}”(hŒenum”h]”hŒenum”…””}”(hjph²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jnhjjubj3)”}”(hŒ ”h]”hŒ ”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjjubh)”}”(hhh]”jJ)”}”(hŒ mldsa_alg”h]”hŒ mldsa_alg”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”Œc”Œreftype”Œ identifier”Œ reftarget”j’Œmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)”}”Œdata”]”j¬Œ ASTIdentifier”“”)”}”j§jMsbŒc.mldsa_verify”†”asbuh1hhjjubj3)”}”(hŒ ”h]”hŒ ”…””}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjjubjJ)”}”(hŒalg”h]”hŒalg”…””}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhhjdubji)”}”(hŒ const u8 *sig”h]”(jo)”}”(hŒconst”h]”hŒconst”…””}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j{ah"]”h$]”h&]”uh1jnhjÜubj3)”}”(hŒ ”h]”hŒ ”…””}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjÜubh)”}”(hhh]”jJ)”}”(hŒu8”h]”hŒu8”…””}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjüubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¥Œreftype”j§Œ reftarget”jŒmodname”NŒ classname”Nj«j®)”}”j±]”jµŒc.mldsa_verify”†”asbuh1hhjÜubj3)”}”(hŒ ”h]”hŒ ”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjÜubhŒdesc_sig_punctuation”“”)”}”(hŒ*”h]”hŒ*”…””}”(hj-h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1j+hjÜubjJ)”}”(hŒsig”h]”hŒsig”…””}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhhjdubji)”}”(hŒsize_t sig_len”h]”(h)”}”(hhh]”jJ)”}”(hŒsize_t”h]”hŒsize_t”…””}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjUubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¥Œreftype”j§Œ reftarget”jZŒmodname”NŒ classname”Nj«j®)”}”j±]”jµŒc.mldsa_verify”†”asbuh1hhjQubj3)”}”(hŒ ”h]”hŒ ”…””}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjQubjJ)”}”(hŒsig_len”h]”hŒsig_len”…””}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhhjdubji)”}”(hŒ const u8 *msg”h]”(jo)”}”(hjâh]”hŒconst”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”j{ah"]”h$]”h&]”uh1jnhj™ubj3)”}”(hŒ ”h]”hŒ ”…””}”(hjªh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj™ubh)”}”(hhh]”jJ)”}”(hŒu8”h]”hŒu8”…””}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj¸ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¥Œreftype”j§Œ reftarget”j½Œmodname”NŒ classname”Nj«j®)”}”j±]”jµŒc.mldsa_verify”†”asbuh1hhj™ubj3)”}”(hŒ ”h]”hŒ ”…””}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj™ubj,)”}”(hj/h]”hŒ*”…””}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j8ah"]”h$]”h&]”uh1j+hj™ubjJ)”}”(hŒmsg”h]”hŒmsg”…””}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj™ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhhjdubji)”}”(hŒsize_t msg_len”h]”(h)”}”(hhh]”jJ)”}”(hŒsize_t”h]”hŒsize_t”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¥Œreftype”j§Œ reftarget”jŒmodname”NŒ classname”Nj«j®)”}”j±]”jµŒc.mldsa_verify”†”asbuh1hhj ubj3)”}”(hŒ ”h]”hŒ ”…””}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hj ubjJ)”}”(hŒmsg_len”h]”hŒmsg_len”…””}”(hj<h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhhjdubji)”}”(hŒ const u8 *pk”h]”(jo)”}”(hjâh]”hŒconst”…””}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j{ah"]”h$]”h&]”uh1jnhjQubj3)”}”(hŒ ”h]”hŒ ”…””}”(hjbh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjQubh)”}”(hhh]”jJ)”}”(hŒu8”h]”hŒu8”…””}”(hjsh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¥Œreftype”j§Œ reftarget”juŒmodname”NŒ classname”Nj«j®)”}”j±]”jµŒc.mldsa_verify”†”asbuh1hhjQubj3)”}”(hŒ ”h]”hŒ ”…””}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjQubj,)”}”(hj/h]”hŒ*”…””}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”j8ah"]”h$]”h&]”uh1j+hjQubjJ)”}”(hŒpk”h]”hŒpk”…””}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhhjdubji)”}”(hŒ size_t pk_len”h]”(h)”}”(hhh]”jJ)”}”(hŒsize_t”h]”hŒsize_t”…””}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjÅubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j¥Œreftype”j§Œ reftarget”jÊŒmodname”NŒ classname”Nj«j®)”}”j±]”jµŒc.mldsa_verify”†”asbuh1hhjÁubj3)”}”(hŒ ”h]”hŒ ”…””}”(hjæh²hh³Nh´Nubah}”(h]”h ]”j?ah"]”h$]”h&]”uh1j2hjÁubjJ)”}”(hŒpk_len”h]”hŒpk_len”…””}”(hjôh²hh³Nh´Nubah}”(h]”h ]”jVah"]”h$]”h&]”uh1jIhjÁubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jhhjdubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jbhjh²hh³j1h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1jŒsphinx_line_type”Œ declarator”hjh²hh³j1h´Kubah}”(h]”j ah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1jh³j1h´Khjh²hubhŒ desc_content”“”)”}”(hhh]”hï)”}”(hŒVerify an ML-DSA signature”h]”hŒVerify an ML-DSA signature”…””}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´Khj%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j#hjh²hh³j1h´Kubeh}”(h]”h ]”(j¥Œfunction”eh"]”h$]”h&]”Œdomain”j¥Œobjtype”j@Œdesctype”j@Œnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jh²hhhÝh³Nh´NubhŒ container”“”)”}”(hX…**Parameters** ``enum mldsa_alg alg`` The ML-DSA parameter set to use ``const u8 *sig`` The signature ``size_t sig_len`` Length of the signature in bytes. Should match the MLDSA*_SIGNATURE_SIZE constant associated with **alg**, otherwise -EBADMSG will be returned. ``const u8 *msg`` The message ``size_t msg_len`` Length of the message in bytes ``const u8 *pk`` The public key ``size_t pk_len`` Length of the public key in bytes. Should match the MLDSA*_PUBLIC_KEY_SIZE constant associated with **alg**, otherwise -EBADMSG will be returned. **Description** This verifies a signature using pure ML-DSA with the specified parameter set. The context string is assumed to be empty. This corresponds to FIPS 204 Algorithm 3 "ML-DSA.Verify" with the ctx parameter set to the empty string and the lengths of the signature and key given explicitly by the caller. **Context** Might sleep **Return** * 0 if the signature is valid * -EBADMSG if the signature and/or public key is malformed * -EKEYREJECTED if the signature is invalid but otherwise well-formed * -ENOMEM if out of memory so the validity of the signature is unknown”h]”(hï)”}”(hŒ**Parameters**”h]”hŒstrong”“”)”}”(hjRh]”hŒ Parameters”…””}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jThjPubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´K hjLubhŒdefinition_list”“”)”}”(hhh]”(hŒdefinition_list_item”“”)”}”(hŒ7``enum mldsa_alg alg`` The ML-DSA parameter set to use ”h]”(hŒterm”“”)”}”(hŒ``enum mldsa_alg alg``”h]”hŒliteral”“”)”}”(hjyh]”hŒenum mldsa_alg alg”…””}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j{hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´KhjqubhŒ definition”“”)”}”(hhh]”hï)”}”(hŒThe ML-DSA parameter set to use”h]”hŒThe ML-DSA parameter set to use”…””}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jh´Khj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1joh³jh´Khjlubjp)”}”(hŒ ``const u8 *sig`` The signature ”h]”(jv)”}”(hŒ``const u8 *sig``”h]”j|)”}”(hj¶h]”hŒ const u8 *sig”…””}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j{hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´Khj°ubj’)”}”(hhh]”hï)”}”(hŒ The signature”h]”hŒ The signature”…””}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jËh´KhjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hj°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1joh³jËh´Khjlubjp)”}”(hŒ¤``size_t sig_len`` Length of the signature in bytes. Should match the MLDSA*_SIGNATURE_SIZE constant associated with **alg**, otherwise -EBADMSG will be returned. ”h]”(jv)”}”(hŒ``size_t sig_len``”h]”j|)”}”(hjïh]”hŒsize_t sig_len”…””}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j{hjíubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´K!hjéubj’)”}”(hhh]”hï)”}”(hŒLength of the signature in bytes. Should match the MLDSA*_SIGNATURE_SIZE constant associated with **alg**, otherwise -EBADMSG will be returned.”h]”(hŒcLength of the signature in bytes. Should match the MLDSA*_SIGNATURE_SIZE constant associated with ”…””}”(hjh²hh³Nh´NubjU)”}”(hŒ**alg**”h]”hŒalg”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jThjubhŒ&, otherwise -EBADMSG will be returned.”…””}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1joh³jh´K!hjlubjp)”}”(hŒ``const u8 *msg`` The message ”h]”(jv)”}”(hŒ``const u8 *msg``”h]”j|)”}”(hj;h]”hŒ const u8 *msg”…””}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j{hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´K"hj5ubj’)”}”(hhh]”hï)”}”(hŒ The message”h]”hŒ The message”…””}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jPh´K"hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1joh³jPh´K"hjlubjp)”}”(hŒ2``size_t msg_len`` Length of the message in bytes ”h]”(jv)”}”(hŒ``size_t msg_len``”h]”j|)”}”(hjth]”hŒsize_t msg_len”…””}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j{hjrubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´K#hjnubj’)”}”(hhh]”hï)”}”(hŒLength of the message in bytes”h]”hŒLength of the message in bytes”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j‰h´K#hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1joh³j‰h´K#hjlubjp)”}”(hŒ ``const u8 *pk`` The public key ”h]”(jv)”}”(hŒ``const u8 *pk``”h]”j|)”}”(hj­h]”hŒ const u8 *pk”…””}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j{hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´K$hj§ubj’)”}”(hhh]”hï)”}”(hŒThe public key”h]”hŒThe public key”…””}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÂh´K$hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1joh³jÂh´K$hjlubjp)”}”(hŒ¥``size_t pk_len`` Length of the public key in bytes. Should match the MLDSA*_PUBLIC_KEY_SIZE constant associated with **alg**, otherwise -EBADMSG will be returned. ”h]”(jv)”}”(hŒ``size_t pk_len``”h]”j|)”}”(hjæh]”hŒ size_t pk_len”…””}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j{hjäubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´K'hjàubj’)”}”(hhh]”hï)”}”(hŒ’Length of the public key in bytes. Should match the MLDSA*_PUBLIC_KEY_SIZE constant associated with **alg**, otherwise -EBADMSG will be returned.”h]”(hŒeLength of the public key in bytes. Should match the MLDSA*_PUBLIC_KEY_SIZE constant associated with ”…””}”(hjÿh²hh³Nh´NubjU)”}”(hŒ**alg**”h]”hŒalg”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jThjÿubhŒ&, otherwise -EBADMSG will be returned.”…””}”(hjÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´K%hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1j‘hjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1joh³jûh´K'hjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1jjhjLubhï)”}”(hŒ**Description**”h]”jU)”}”(hj4h]”hŒ Description”…””}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jThj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´K)hjLubhï)”}”(hX*This verifies a signature using pure ML-DSA with the specified parameter set. The context string is assumed to be empty. This corresponds to FIPS 204 Algorithm 3 "ML-DSA.Verify" with the ctx parameter set to the empty string and the lengths of the signature and key given explicitly by the caller.”h]”hX.This verifies a signature using pure ML-DSA with the specified parameter set. The context string is assumed to be empty. This corresponds to FIPS 204 Algorithm 3 “ML-DSA.Verify†with the ctx parameter set to the empty string and the lengths of the signature and key given explicitly by the caller.”…””}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´K(hjLubhï)”}”(hŒ **Context**”h]”jU)”}”(hj[h]”hŒContext”…””}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jThjYubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´K-hjLubhï)”}”(hŒ Might sleep”h]”hŒ Might sleep”…””}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´K.hjLubhï)”}”(hŒ **Return**”h]”jU)”}”(hj‚h]”hŒReturn”…””}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jThj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´K0hjLubhŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒ0 if the signature is valid”h]”hï)”}”(hj¡h]”hŒ0 if the signature is valid”…””}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´K0hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšubjž)”}”(hŒ8-EBADMSG if the signature and/or public key is malformed”h]”hï)”}”(hj¹h]”hŒ8-EBADMSG if the signature and/or public key is malformed”…””}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´K1hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšubjž)”}”(hŒC-EKEYREJECTED if the signature is invalid but otherwise well-formed”h]”hï)”}”(hjÑh]”hŒC-EKEYREJECTED if the signature is invalid but otherwise well-formed”…””}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´K2hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšubjž)”}”(hŒD-ENOMEM if out of memory so the validity of the signature is unknown”h]”hï)”}”(hjéh]”hŒD-ENOMEM if out of memory so the validity of the signature is unknown”…””}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œa/var/lib/git/docbuild/linux/Documentation/crypto/libcrypto-signature:11: ./include/crypto/mldsa.h”h´K3hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”j/uh1j˜h³j°h´K0hjLubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jJhhÝh²hh³Nh´Nubeh}”(h]”Œml-dsa”ah ]”h"]”Œml-dsa”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´Kubeh}”(h]”Œdigital-signature-algorithms”ah ]”h"]”Œdigital signature algorithms”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j@Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jjjjuŒ nametypes”}”(j‰j‰uh}”(jhÊjhÝj juŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.