<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-ietf-ipsecme-sha3-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="KMAC and SHAKE in IKEv2 and IPsec">Use of KMAC and SHAKE in the Internet Key Exchange Protocol Version 2 (IKEv2) and IPsec</title>

    <author fullname="Ben Salter">
      <organization>UK National Cyber Security Centre</organization>
      <address>
        <email>Ben.S3@ncsc.gov.uk</email>
      </address>
    </author>
    <author fullname="Adam Raine">
      <organization>UK National Cyber Security Centre</organization>
      <address>
        <email>Adam.R@ncsc.gov.uk</email>
      </address>
    </author>
    <author fullname="Jonathan Cruickshanks">
      <organization>UK National Cyber Security Centre</organization>
      <address>
        <email>Jonathan.C@ncsc.gov.uk</email>
      </address>
    </author>

    <date year="2026" month="September" day="09"/>

    <area>Security</area>
    <workgroup>IPSECME</workgroup>
    <keyword>ipsec</keyword> <keyword>sha-3</keyword> <keyword>ikev2</keyword> <keyword>kmac</keyword> <keyword>shake</keyword>

    <abstract>


<?line 154?>

<t>This document specifies the use of KMAC128 and KMAC256 within the Internet Key Exchange Version 2 (IKEv2), Encapsulating Security Payload (ESP), and Authentication Header (AH) protocols.
These algorithms can be used as integrity protection algorithms for ESP, AH and IKEv2, and as Pseudo-Random Functions (PRFs) for IKEv2.
Requirements for supporting signature algorithms in IKEv2 that use SHA3-256, SHA3-384, SHA3-512, SHAKE128 and SHAKE256 are also specified.</t>



    </abstract>



  </front>

  <middle>


<?line 160?>

<section anchor="changes-in-draft-ietf-ipsecme-sha3-02"><name>Changes in draft-ietf-ipsecme-sha3-02</name>

<t><list style="symbols">
  <t>Removed the SHA-3 hash algorithms as options for SIGNATURE_HASH_ALGORITHMS.
The draft now only discusses KMAC, with SHAKE as an option for a signature hash function.
The draft's title has been changed to reflect this.</t>
  <t>Aligned the document with -02 of <xref target="I-D.ietf-ipsecme-ikev2-prf-plus"/>.
This removes use of customization labels and reverts back to use of an 0x01 byte to provide domain separation between uses of prf and prf+.</t>
  <t>Corrected key sizes for AUTH transforms in AUTH transform table.</t>
  <t>Corrected conflicting details about KMAC output lengths when used as a PRF.</t>
</list></t>

</section>
<section anchor="introduction"><name>Introduction</name>

<t>This document specifies how to use KMAC128 and KMAC256, specified in <xref target="SP-800-185"/>, with IKEv2 and IPsec for integrity protection, and as a PRF for IKEv2.
Use of KMAC as a PRF and in prf+ is aligned with the framework for use of variable-length PRFs in IKEv2 specified in <xref target="I-D.ietf-ipsecme-ikev2-prf-plus"/>.</t>

<t>This document also allocates values used for announcing support for SHAKE128 and SHAKE256, defined in <xref target="FIPS-202"/>, when generating and validating signatures in IKEv2.</t>

</section>
<section anchor="conventions-and-definitions"><name>Conventions and Definitions</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

<t>Additionally, this document uses several terms to collectively refer to sets of algorithms.</t>

<t>The term "SHA-3 cryptographic hash functions" is used to collectively refer to SHA3-256, SHA3-384 and SHA3-512.</t>

<t>The term "KMAC" is used to collectively refer to KMAC128 and KMAC256.</t>

<t>The term "SHA-3" (without any other qualifiers) is used to collectively refer to the cryptographic algorithms defined in <xref target="FIPS-202"/> and <xref target="SP-800-185"/>.</t>

<t>The term "SHA-2" (without any other qualifiers) is used to collectively refer to SHA-256, SHA-384, and SHA-512.</t>

<t>The term "SHAKE" is used to collectively refer to SHAKE128 and SHAKE256.</t>

</section>
<section anchor="sha-3-and-keccak"><name>SHA-3 and Keccak</name>

<t>SHA-3 is a collection of cryptographic algorithms that all utilise the Keccak sponge construction.
<xref target="FIPS-202"/> describes the SHA-3 cryptographic hash functions, which produce a fixed-length digest for any length of input.
These hash functions are intended to be used in the same manner and contexts as other traditional hash functions such as SHA-2.
<xref target="FIPS-202"/> also describes the SHAKE XOFs.
An XOF differs from a traditional hash function in that the length of the XOF's output can be chosen by the application that uses it.
<xref target="SP-800-185"/> describes cSHAKE, a customizable version of SHAKE, and KMAC, which is a PRF and keyed hash function built using cSHAKE.
Like SHAKE and cSHAKE, the length of KMAC's output is application-dependent.</t>

<t>SHA-3 was specified to provide applications with an alternative to SHA-2, which is based on the Merkle-Damgård construction.
Use of the Merkle-Damgård construction in SHA-2 means that length extension attacks are possible if SHA-2 isn't used correctly.
At the time of writing, use of SHA-2 in IPsec is believed to be secure, and hence there is no security motivation to migrate away from SHA-2 to SHA-3 in this context.
However, in the event that a significant attack on SHA-2 is discovered, SHA-3 will be an immediately viable alternative.</t>

<t>Migration to use of post-quantum algorithms in IKEv2 may make use of SHA-3 more appealing for minimal implementations of IPsec, as <xref target="ML-KEM"/>, <xref target="ML-DSA"/>, <xref target="SLH-DSA"/>, and <xref target="FALCON"/> all make use of SHA-3 internally.
Since SHA-3 must be implemented as a component of these algorithms, some IPsec implementers may prefer to implement SHA-3, and only SHA-3, if interoperability with general-purpose IKEv2 and IPsec implementations is not required.</t>

<t>SHA-2 is widely used with HMAC in IKEv2 and IPsec, as specified in <xref target="RFC4868"/>.
While the SHA-3 cryptographic hash functions can be used with HMAC, KMAC is more efficient as it directly uses the Keccak sponge function to produce a MAC, rather than treating Keccak as a traditional cryptographic hash function and then feeding that hash function into a separate MAC algorithm.
The SHA-3 cryptographic hash functions could also be used with signature algorithms that support a pre-hash, but use of SHA-3 in this way has not been specified in IETF standards, whereas use of SHAKE for this purpose is specified in <xref target="RFC8692"/>.
As such, this document specifies use of KMAC and SHAKE in IPsec, but not the SHA-3 cryptographic hash functions.</t>

</section>
<section anchor="kmac-api"><name>KMAC API</name>

<t>The basic API for KMAC is defined below.
The symbols used in this API description are consistent with those used for prf+ in <xref target="RFC7296"/>, which clash with the API described in <xref target="SP-800-185"/>.
<xref target="RFC7296"/> uses S to describe the input string to prf+, whereas <xref target="SP-800-185"/> uses that symbol for the optional customization string.
KMAC implementations used in IKEv2 and IPsec do not need to conform to these APIs exactly; they are merely used in this document for illustrative purposes.</t>

<t>For the purposes of this document, the API for KMAC is defined as:</t>

<ul empty="true"><li>
  <t>KMAC(K, S, L, C) -&gt; Z</t>
</li></ul>

<t>where:</t>

<t><list style="symbols">
  <t>K is the key.
It is a bit string of length between zero and (2^2040)-1 bits, inclusively.</t>
  <t>S is the input string.
It is a bit string of any length, including zero.</t>
  <t>L is an integer representing the requested output length in bits.
This parameter is typically fixed in the context of IPsec, except when extracting key material using prf+ in IKEv2, where it depends on the length of key material needed by the negotiated cipher suite.</t>
  <t>C is an optional customization string.
It is a bit string of length between zero and (2^2040)-1 bits, inclusively.
For the purposes of this document, C is always empty.</t>
  <t>Z is the output string of KMAC, which is a message authentication code.
It is a bit string of length L.</t>
</list></t>

</section>
<section anchor="constraints-on-kmac-inputs-and-outputs"><name>Constraints on KMAC inputs and outputs</name>

<t>Per <xref target="SP-800-185"/>, the length of the key input K input to KMAC <bcp14>MUST</bcp14> be less than 2^2040 bits.
In the context of IKEv2 and IPsec, there is no situation where a key that long would be expected.
Initiator and Responder nonces Ni and Nr are used as inputs to IKEv2 PRF calls, although the length of these nonces combined cannot exceed 4096 bits.
Pre-shared keys used for authentication in IKEv2 are used as keys with PRFs negotiated by IKEv2, and have no upper bound on their length.
Therefore, KMAC implementations used with IKEv2 <bcp14>MUST</bcp14> at minimum accept values of K up to and including 4096 bits in length.
Implementations <bcp14>MAY</bcp14> restrict the size of pre-shared key inputs such that they do not exceed 4096 bits.</t>

<t>There is no algorithm-defined minimum size for the key input to KMAC, but <xref target="prf-key-size-and-output-length"/> and <xref target="auth-key-size-and-output-length"/> list the recommended key sizes to be used within the context of IKEv2 and IPsec, aligned to the security strength of each algorithm.
Using a key smaller than the security strength of the chosen KMAC algorithm undermines the security properties of that algorithm.
Where IKEv2 is used to create security associations, the size of most PRF keys is automatically managed at the protocol level, and there is no risk of selecting an undersized key in these cases.
However, the size of keys used for PRFs in IKEv2 cannot always be controlled.</t>

<t>As an example, in the case of pre-shared keys used for authentication or protection against a quantum computer as in <xref target="RFC8784"/>, those secrets are used as the key input to a PRF negotiated by IKEv2.
Those pre-shared keys could be arbitrarily chosen by a user or derived from a password rather than securely generated, even though <xref target="RFC7296"/> strongly discourages this practice.
Keys chosen in this manner may be shorter than any recommended key size.
IKEv2 implementations following the recommendation laid out in <xref target="RFC7296"/> can impose constraints on suitable pre-shared keys.</t>

<t>Additionally, Ni and Nr are variable length and are used as the key for KMAC.
<xref target="RFC7296"/> states that each of these nonces <bcp14>MUST</bcp14> be at least 128 bits in size, and <bcp14>MUST</bcp14> be at least half the preferred key size for the negotiated PRF.
If an IKEv2 peer sends an undersized nonce, the message containing that nonce can be rejected in the same way as any malformed IKEv2 message would be.
Conformant KMAC implementations <bcp14>SHOULD</bcp14> reject keys that do not meet the security strength of the corresponding algorithm.</t>

<t>The input string S can be a variety of lengths in practice, but in the context of IKE and IPsec the length will always be a multiple of eight, as IKE and IPsec only operate on entire octets.
Similarly, KMAC's output length parameter L will always be a multiple of eight.
Since the length of output required from KMAC is always known in advance, KMAC with arbitrary-length output as described in Section 4.3.1 of <xref target="SP-800-185"/> is never used, and thus L is never set to 0.</t>

<t>KMAC's customization string C is always empty in the context of this document.</t>

</section>
<section anchor="padding"><name>Padding</name>

<t>Since the length of the input string S for KMAC varies, and KMAC operates on fixed-size input blocks, padding is required to use KMAC in IKEv2 and IPsec.
The padding scheme for KMAC is specified in <xref target="SP-800-185"/>.
A KMAC implementation conformant to that document is sufficient; no additional padding is required to use these algorithms in IKEv2 or IPsec.</t>

<section anchor="kmac-key-padding"><name>KMAC Key Padding</name>

<t>When KMAC is used as the PRF for an IKE SA, the size of the key input K is variable.
If the size of a KMAC key is greater than the preferred key size as shown in <xref target="prf-key-size-and-output-length"/>, the key is used in its entirety without any kind of shortening or truncation.
As described in <xref target="SP-800-185"/>, keys are always padded up to a multiple of the rate of the underlying Keccak sponge function; that is, 168 bytes and 136 bytes for KMAC128 and KMAC256 respectively.
Any KMAC implementation conformant with <xref target="SP-800-185"/> is suitable for use in IKEv2 and IPsec; no protocol-specific additional padding of keys is required.</t>

</section>
</section>
<section anchor="parameters-and-security-strengths-for-kmac"><name>Parameters and security strengths for KMAC</name>

<t><xref target="output-length-and-security"/> describes the general properties of KMAC, with the HMAC-SHA2 algorithms also listed for comparison purposes.
The maximum security strengths listed are taken from <xref target="SP-800-57"/>.
Note that these are maximum security strengths.
Keys that contain insufficient entropy to meet an algorithm's stated maximum security strength constrain the maximum security of the chosen algorithm to be no higher than the bits of entropy represented in the key.</t>

<texttable title="KMAC output length and security strength values, compared with HMAC-SHA2" anchor="output-length-and-security">
      <ttcol align='left'>Algorithm Name</ttcol>
      <ttcol align='left'>Output Length (bits)</ttcol>
      <ttcol align='left'>Maximum Security Strength (bits)</ttcol>
      <c>HMAC-SHA-256</c>
      <c>256</c>
      <c>256</c>
      <c>HMAC-SHA-384</c>
      <c>384</c>
      <c>256</c>
      <c>HMAC-SHA-512</c>
      <c>512</c>
      <c>256</c>
      <c>KMAC128</c>
      <c>Variable</c>
      <c>128</c>
      <c>KMAC256</c>
      <c>Variable</c>
      <c>256</c>
</texttable>

<t><xref target="prf-key-size-and-output-length"/> presents the parameters of KMAC when it is used as a PRF in IKEv2, with the HMAC-SHA2 algorithms also listed for comparison purposes.</t>

<texttable title="KMAC preferred key sizes and output lengths for use as a PRF, compared with HMAC-SHA2" anchor="prf-key-size-and-output-length">
      <ttcol align='left'>Algorithm Name</ttcol>
      <ttcol align='left'>PRF variant</ttcol>
      <ttcol align='left'>Preferred Key Size (bits)</ttcol>
      <ttcol align='left'>Output Length (bits)</ttcol>
      <c>HMAC-SHA-256</c>
      <c>PRF_HMAC_SHA2_256</c>
      <c>256</c>
      <c>256</c>
      <c>HMAC-SHA-384</c>
      <c>PRF_HMAC_SHA2_384</c>
      <c>384</c>
      <c>384</c>
      <c>HMAC-SHA-512</c>
      <c>PRF_HMAC_SHA2_512</c>
      <c>512</c>
      <c>512</c>
      <c>KMAC128</c>
      <c>PRF_KMAC_128</c>
      <c>256</c>
      <c>256, or length of output required for prf+</c>
      <c>KMAC256</c>
      <c>PRF_KMAC_256</c>
      <c>512</c>
      <c>512, or length of output required for prf+</c>
</texttable>

<t>The security strength of these algorithms is equal to the maximum security strength indicated for that algorithm in <xref target="output-length-and-security"/>, unless the entropy of the supplied key is insufficient to meet that strength.
Note that the preferred key size for both KMAC variants is double the security strength of each algorithm.
This is to align with the requirement in <xref target="I-D.ietf-ipsecme-ikev2-prf-plus"/> that, for PRFs with variable-length output, the output length of the PRF when used in the context of "prf" (rather than "prf+") must match the preferred key size of the PRF.</t>

<t>When key material is extracted from IKEv2's prf+ Key Derivation Function (KDF) for use with KMAC as a PRF in IKEv2, the length of keys extracted <bcp14>MUST</bcp14> conform to the preferred key sizes listed in <xref target="prf-key-size-and-output-length"/>.</t>

<t>EDNOTE: The KMAC output lengths have been aligned with HMAC, but if we're not depending on collision resistance, could they be reduced to 128/256 bits respectively?
This would also mean that the key size could be reduced back down to 128/256 bits; they only need to be 256/512 bits to maintain conformance with <xref target="I-D.ietf-ipsecme-ikev2-prf-plus"/>.</t>

<t><xref target="auth-key-size-and-output-length"/> presents the parameters of KMAC when it is used for data origin authentication and integrity protection in IKEv2 and IPsec, with the HMAC-SHA2 algorithms also listed for comparison purposes.</t>

<texttable title="KMAC key sizes and output lengths for use as an Integrity Algorithm Transform, compared with HMAC-SHA2" anchor="auth-key-size-and-output-length">
      <ttcol align='left'>Algorithm Name</ttcol>
      <ttcol align='left'>Integrity variant</ttcol>
      <ttcol align='left'>Key Size (bits)</ttcol>
      <ttcol align='left'>Output Length (bits)</ttcol>
      <c>HMAC-SHA-256</c>
      <c>AUTH_HMAC_SHA2_256_128</c>
      <c>256</c>
      <c>128</c>
      <c>HMAC-SHA-384</c>
      <c>AUTH_HMAC_SHA2_384_192</c>
      <c>384</c>
      <c>192</c>
      <c>HMAC-SHA-512</c>
      <c>AUTH_HMAC_SHA2_512_256</c>
      <c>512</c>
      <c>256</c>
      <c>KMAC128</c>
      <c>AUTH_KMAC_128</c>
      <c>256</c>
      <c>128</c>
      <c>KMAC256</c>
      <c>AUTH_KMAC_256</c>
      <c>512</c>
      <c>256</c>
</texttable>

<t>When used for authentication and integrity protection, KMAC message authentication codes are produced using a smaller value for the "requested output length" parameter L.
In this case, the security strength of each given algorithm is constrained by its output length.</t>

<t>When key material is extracted from IKEv2's prf+ KDF for use with KMAC for data origin authentication and integrity protection in IKEv2 or IPsec, the length of keys extracted <bcp14>MUST</bcp14> conform to the key sizes listed in <xref target="auth-key-size-and-output-length"/>.</t>

</section>
<section anchor="kmac-as-a-prf-in-ikev2"><name>KMAC as a PRF in IKEv2</name>

<t>IKEv2 Security Associations (SAs) make use of a PRF for authentication purposes, and as a part of the prf+ Key Derivation Function (KDF).
KMAC can act as the PRF for an IKE SA, but it is treated slightly differently to existing PRFs as it is capable of producing different output lengths depending on the context in which it is used.</t>

<t>With KMAC, the key K is either a fixed-length key (such as SK_d) that is the preferred key size for the variant of KMAC being used, or the length of K is dependent on other factors.
When the PRF is used with nonce inputs as the key K (e.g. when generating SKEYSEED), or when the PRF is used with a pre-shared key as the input key K, the length of K depends on implementation-specific details, user configuration options, etc.</t>

<section anchor="kmac-as-prf"><name>KMAC as a PRF</name>

<t>When used in IKEv2 as a PRF outside the prf+ construction, KMAC's output length L is 256 for KMAC128, and 512 for KMAC256.
That is, the output length is the same size as the preferred key size of the given KMAC algorithm.
Note that the situation is different when KMAC is used within the prf+ construction, as described in <xref target="kmac-in-prf-plus"/>.</t>

</section>
<section anchor="kmac-in-prf-plus"><name>KMAC in prf+</name>

<t><xref target="RFC7296"/> defines an iterative function called "prf+" that can be used with a PRF to produce a pseudorandom stream of arbitrary length.
Typically prf+ is used to derive SA keys from SKEYSEED or SK_d.
However, as described in <xref target="I-D.ietf-ipsecme-ikev2-prf-plus"/>, prf+ isn't necessary when using a PRF that can produce variable-length output (like KMAC), as a single call to the PRF can produce as many pseudorandom bits as needed.
When a PRF with variable-length output is negotiated as an IKE SA's PRF, <xref target="I-D.ietf-ipsecme-ikev2-prf-plus"/> specifies the following construction to replace the definition of prf+ in <xref target="RFC7296"/>:</t>

<ul empty="true"><li>
  <t>prf+ (K,S) = prf (K, S | 0x01)</t>
</li></ul>

<t>When KMAC is negotiated as an IKE SA's PRF, this construction is used.
The L input parameter for KMAC is set to the length of the keying material required.</t>

</section>
</section>
<section anchor="kmac-as-integrity"><name>KMAC for integrity protection in ESP, AH and IKEv2</name>

<t>IKE and IPsec SAs can make use of an integrity protection algorithm to provide data origin authentication and integrity protection services.
KMAC can be used to provide these services.
As described in <xref target="RFC8221"/>, Authenticated Encryption with Associated Data (AEAD) ciphers are the fastest and most modern approach to providing these services in conjunction with confidentiality protection.
KMAC <bcp14>MUST NOT</bcp14> be negotiated in IKEv2 in conjunction with an AEAD cipher.</t>

<t>KMAC <bcp14>MAY</bcp14> be used as an integrity protection algorithm with:</t>

<t><list style="symbols">
  <t>ESP in conjunction with a non-AEAD cipher</t>
  <t>ESP and null encryption (ENCR_NULL)</t>
  <t>IKEv2 in conjunction with a non-AEAD cipher</t>
  <t>AH</t>
</list></t>

<t>When using KMAC, the L input parameter is always set to the same value as the key size and security strength of the chosen KMAC algorithm.
That is, the output length of KMAC128 is always set to 128 bits, and the output length of KMAC256 is always set to 256 bits.</t>

</section>
<section anchor="use-of-shake-in-the-digital-signature-authentication-method-in-ikev2"><name>Use of SHAKE in the Digital Signature authentication method in IKEv2</name>

<t>SHAKE can be used to generate digests for use with signature algorithms.
<xref target="RFC8692"/> specifies algorithm identifiers for using RSASSA-PSS or ECDSA with SHAKE in X.509 certificates.</t>

<t><xref target="RFC7427"/> specifies the "Digital Signature" (14) authentication method, which allows IKEv2 to support any signature algorithm without the need to specify an authentication method for every new combination of signature algorithm and hash function.
The Digital Signature authentication method is the only way to utilise SHAKE with signatures in IKEv2, so if a peer uses SHAKE in this context, it <bcp14>MUST</bcp14> specify the Digital Signature authentication method in its corresponding AUTH payload.</t>

<t>The Digital Signature authentication method specifies use of a SIGNATURE_HASH_ALGORITHMS notification by each IKEv2 peer to announce the hash functions it supports for use with signatures.
This specification defines values in <xref target="hash-transforms"/> for announcing support for SHAKE128 and SHAKE256 in the SIGNATURE_HASH_ALGORITHMS notification.
When an IKEv2 implementation supports SHA-3 in this context, and local policy permits use of SHAKE to generate or verify signatures, it <bcp14>MUST</bcp14> include the corresponding values in its SIGNATURE_HASH_ALGORITHMS notification.</t>

</section>
<section anchor="considerations-for-implementers-and-for-future-ipsec-documents"><name>Considerations for implementers and for future IPsec documents</name>

<t>KMAC's API differs from most PRF and Integrity Algorithm transforms as described in <xref target="kmac-api"/>.
Care should be taken with the output length parameter L in particular, as its behavior can be counter-intuitive when compared to other integrity algorithms where a truncated output is used as an authenticator value.
Unlike SHAKE, KMAC outputs of different lengths are not related.
That is, the value of L is factored into the calculation of the output value, and thus all bits of the output value are affected.
This means that implementations cannot simply discard a portion of a KMAC output as a substitute for requesting the correct value for L.
For example, a KMAC256 implementation used as the PRF transform for IKEv2 cannot be used as an Integrity transform simply by discarding bits from that implementation's output; a different value of L must be supplied.
<xref target="truncation-example"/> shows an example for the case where the key, input and (in the case of KMAC) customization string are all the empty string.</t>

<texttable title="KMAC with different output lengths, as compared to truncated HMAC values" anchor="truncation-example">
      <ttcol align='left'>Transform Name</ttcol>
      <ttcol align='left'>Output Length (bits)</ttcol>
      <ttcol align='left'>Output (hex)</ttcol>
      <c>PRF_HMAC_SHA2_256</c>
      <c>256</c>
      <c>b613679a0814d9ec772f95d778c35fc5...</c>
      <c>AUTH_HMAC_SHA2_256_128</c>
      <c>128</c>
      <c>b613679a0814d9ec772f95d778c35fc5</c>
      <c>PRF_KMAC_128</c>
      <c>256</c>
      <c>5c135c615152fb4d9784dd1155f9b603...</c>
      <c>AUTH_KMAC_128</c>
      <c>128</c>
      <c>e6aff27fef95903eb939bc3745730d34</c>
</texttable>

<t>This is also true for prf+ when used with KMAC.
Typically prf+ is used iteratively to obtain at least as much key material as is required, and the amount of key material obtained will be a multiple of the output size of the negotiated PRF.
This process will often produce more key material than required, and the excess is simply discarded.
When KMAC is used, the amount of key material required is supplied to the PRF, and exactly the right amount of key material will be returned.
Requesting more key material than required and discarding any excess will produce different keys, and interoperability will not be possible.</t>

<t>Future authors of IPsec documents should be careful to consider whether related outputs from a PRF are required for their specification, and if so, describe how to handle KMAC and similar PRFs.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>SHA-3 and SHA-2 are both believed to be secure at time of writing.
Views on the security of cryptographic algorithms evolve over time, so implementers should pay attention to IETF RFCs reporting on recommendations for the use of cryptographic algorithms in IKEv2 and IPsec, such as any documents that update <xref target="RFC8221"/> and <xref target="RFC8247"/>.</t>

<t>Quantum computing has a significant impact on the security of all IETF security protocols, as a cryptographically-relevant quantum computer (CRQC) could use Shor's algorithm to break many traditional asymmetric cryptographic algorithms.
A CRQC can theoretically also attack hash functions, including SHA-3 and SHA-2, using Grover's algorithm.
However, the impact of Grover's algorithm is significantly less dramatic than the impact of Shor's Algorithm.
The worst-case impact of Grover's algorithm would be a reduction in security strength by a factor of two.
However, since Grover's algorithm is difficult to parallelise, the security reduction for SHA-3 and SHA-2 caused by Grover's algorithm is expected to be far less significant in practice.
See <xref target="GROVER"/> for a discussion on the practical cost of using Grover's algorithm to attack hash functions.</t>

<t>The security properties offered by KMAC depend on limiting access to the keys used with those algorithms.
Since KMAC depends on a symmetric key, the key must be known by at least two parties in order to be useful.
Sharing the key beyond two parties may erode the security offered by KMAC.
In the case of IKEv2 and IPsec, this typically means that access to keys must be limited to the peers participating in the security association that uses those keys.
IKEv2 can be used to enforce this for IPsec SAs and most keys used in IKE SAs, but pre-shared keys are a notable exception here.
Providing more than two peers with access to a single pre-shared key may undermine the security offered by that pre-shared key, and hence the security offered by KMAC.</t>

<t>When IKEv2 is used to create IPsec SAs, the keys for KMAC are all ultimately derived from an ephemeral shared secret produced using one or more negotiated key exchange algorithms, with the exception of static pre-shared keys used in IKEv2 for authentication and/or protection against quantum computers.
If the negotiated key exchange algorithm or encryption algorithm offers fewer bits of security than the negotiated PRF, this effectively caps the bits of security offered by the PRF as well.
Negotiating a key exchange algorithm or encryption algorithm that offers more bits of security than the negotiated PRF does not improve the security offered by that PRF.
As such, it is important to ensure that IKEv2 peers configure algorithm policies such that every algorithm negotiated always meets an acceptable minimum security strength.
Where static keys are used with KMAC, these <bcp14>MUST</bcp14> contain at least as much entropy as the security strength of the chosen algorithm.
This can be achieved using a random number generator suitable for use with cryptography.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>For negotiating use of KMAC as a PRF for IKEv2, IANA is requested to assign two Transform IDs in the "Transform Type 2 - Pseudorandom Function Transform IDs" registry:</t>

<texttable title="KMAC PRF Transform IDs" anchor="prf-transforms">
      <ttcol align='left'>Number</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Status</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>TBD</c>
      <c>PRF_KMAC_128</c>
      <c>&#160;</c>
      <c>[This draft]</c>
      <c>TBD</c>
      <c>PRF_KMAC_256</c>
      <c>&#160;</c>
      <c>[This draft]</c>
</texttable>

<t>For negotiating use of KMAC for integrity protection in IKEv2 and IPsec protocols, IANA is requested to assign two Transform IDs in the "Transform Type 3 - Integrity Algorithm Transform IDs" registry:</t>

<texttable title="KMAC Integrity Algorithm Transform IDs" anchor="auth-transforms">
      <ttcol align='left'>Number</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Status</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>TBD</c>
      <c>AUTH_KMAC_128</c>
      <c>&#160;</c>
      <c>[This draft]</c>
      <c>TBD</c>
      <c>AUTH_KMAC_256</c>
      <c>&#160;</c>
      <c>[This draft]</c>
</texttable>

<t>For indicating support for use of SHAKE in conjunction with a signature algorithm, IANA is requested to assign two Transform IDs in the "IKEv2 Hash Algorithms" registry:</t>

<texttable title="SHAKE Hash Algorithm IDs" anchor="hash-transforms">
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Hash Algorithm</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>TBD</c>
      <c>SHAKE128</c>
      <c>[This draft]</c>
      <c>TBD</c>
      <c>SHAKE256</c>
      <c>[This draft]</c>
</texttable>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC7296">
  <front>
    <title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
    <author fullname="C. Kaufman" initials="C." surname="Kaufman"/>
    <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
    <author fullname="Y. Nir" initials="Y." surname="Nir"/>
    <author fullname="P. Eronen" initials="P." surname="Eronen"/>
    <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
    <date month="October" year="2014"/>
    <abstract>
      <t>This document describes version 2 of the Internet Key Exchange (IKE) protocol. IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs). This document obsoletes RFC 5996, and includes all of the errata for it. It advances IKEv2 to be an Internet Standard.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="79"/>
  <seriesInfo name="RFC" value="7296"/>
  <seriesInfo name="DOI" value="10.17487/RFC7296"/>
</reference>

<reference anchor="FIPS-202">
  <front>
    <title>SHA-3 standard :: permutation-based hash and extendable-output functions</title>
    <author>
      <organization/>
    </author>
    <date year="2015"/>
  </front>
  <seriesInfo name="DOI" value="10.6028/nist.fips.202"/>
<refcontent>National Institute of Standards and Technology (U.S.)</refcontent></reference>

<reference anchor="SP-800-185">
  <front>
    <title>SHA-3 derived functions: cSHAKE, KMAC, TupleHash and ParallelHash</title>
    <author fullname="John Kelsey" initials="J." surname="Kelsey">
      <organization/>
    </author>
    <author fullname="Shu-jen Change" initials="S." surname="Change">
      <organization/>
    </author>
    <author fullname="Ray Perlner" initials="R." surname="Perlner">
      <organization/>
    </author>
    <date month="December" year="2016"/>
  </front>
  <seriesInfo name="DOI" value="10.6028/nist.sp.800-185"/>
<refcontent>National Institute of Standards and Technology</refcontent></reference>


<reference anchor="I-D.ietf-ipsecme-ikev2-prf-plus">
   <front>
      <title>Use of Variable-Length Output Pseudo-Random Functions (PRFs) in the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
      <author fullname="Valery Smyslov" initials="V." surname="Smyslov">
         <organization>ELVIS-PLUS</organization>
      </author>
      <date day="28" month="August" year="2026"/>
      <abstract>
	 <t>   This document specifies the use of variable-length output Pseudo-
   Random Functions (PRFs) in the Internet Key Exchange Protocol Version
   2 (IKEv2).  Current IKEv2 specification relies on traditional PRFs
   with fixed output length for key derivation and uses iterative
   application of a PRF (called &quot;prf+&quot;) in cases when longer output is
   required.  Appearance of PRFs that can output as much bits as
   requested allows to streamline the key derivation functions of IKEv2.

   This document updates RFC 7296 and RFC 7815 for the cases when
   variable-length output Pseudo-Random Functions are used in IKEv2 and
   its extensions.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-ipsecme-ikev2-prf-plus-02"/>
   
</reference>

<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>

<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>

<reference anchor="RFC7427">
  <front>
    <title>Signature Authentication in the Internet Key Exchange Version 2 (IKEv2)</title>
    <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
    <author fullname="J. Snyder" initials="J." surname="Snyder"/>
    <date month="January" year="2015"/>
    <abstract>
      <t>The Internet Key Exchange Version 2 (IKEv2) protocol has limited support for the Elliptic Curve Digital Signature Algorithm (ECDSA). The current version only includes support for three Elliptic Curve groups, and there is a fixed hash algorithm tied to each group. This document generalizes IKEv2 signature support to allow any signature method supported by PKIX and also adds signature hash algorithm negotiation. This is a generic mechanism and is not limited to ECDSA; it can also be used with other signature algorithms.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7427"/>
  <seriesInfo name="DOI" value="10.17487/RFC7427"/>
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="ML-KEM">
  <front>
    <title>Module-lattice-based key-encapsulation mechanism standard</title>
    <author>
      <organization/>
    </author>
    <date month="August" year="2024"/>
  </front>
  <seriesInfo name="DOI" value="10.6028/nist.fips.203"/>
<refcontent>National Institute of Standards and Technology (U.S.)</refcontent></reference>

<reference anchor="ML-DSA">
  <front>
    <title>Module-lattice-based digital signature standard</title>
    <author>
      <organization/>
    </author>
    <date month="August" year="2024"/>
  </front>
  <seriesInfo name="DOI" value="10.6028/nist.fips.204"/>
<refcontent>National Institute of Standards and Technology (U.S.)</refcontent></reference>

<reference anchor="SLH-DSA">
  <front>
    <title>Stateless hash-based digital signature standard</title>
    <author>
      <organization/>
    </author>
    <date month="August" year="2024"/>
  </front>
  <seriesInfo name="DOI" value="10.6028/nist.fips.205"/>
<refcontent>National Institute of Standards and Technology (U.S.)</refcontent></reference>


<reference anchor="FALCON" >
  <front>
    <title>Falcon: Fast-Fourier Lattice-based Compact Signatures over NTRU</title>
    <author initials="P.-A." surname="Fouque" fullname="Pierre-Alain Fouque">
      <organization></organization>
    </author>
    <author initials="J." surname="Hoffstein" fullname="Jeffrey Hoffstein">
      <organization></organization>
    </author>
    <author initials="P." surname="Kirchner" fullname="Paul Kirchner">
      <organization></organization>
    </author>
    <author initials="V." surname="Lyubashevsky" fullname="Vadim Lyubashevsky">
      <organization></organization>
    </author>
    <author initials="T." surname="Pornin" fullname="Thomas Pornin">
      <organization></organization>
    </author>
    <author initials="T." surname="Prest" fullname="Thomas Prest">
      <organization></organization>
    </author>
    <author initials="T." surname="Ricosset" fullname="Thomas Ricosset">
      <organization></organization>
    </author>
    <author initials="G." surname="Seiler" fullname="Gregor Seiler">
      <organization></organization>
    </author>
    <author initials="W." surname="Whyte" fullname="William Whyte">
      <organization></organization>
    </author>
    <author initials="Z." surname="Zhang" fullname="Zhenfei Zhang">
      <organization></organization>
    </author>
    <date year="2020"/>
  </front>
  <format type="PDF" target="https://falcon-sign.info/falcon.pdf"/>
</reference>


<reference anchor="SP-800-57">
  <front>
    <title>Recommendation for key management:: part 1 - general</title>
    <author fullname="Elaine Barker" initials="E." surname="Barker">
      <organization/>
    </author>
    <date month="May" year="2020"/>
  </front>
  <seriesInfo name="DOI" value="10.6028/nist.sp.800-57pt1r5"/>
<refcontent>National Institute of Standards and Technology</refcontent></reference>


<reference anchor="GROVER" target="https://www.etsi.org/deliver/etsi_tr/103900_103999/103967/01.01.01_60/tr_103967v010101p.pdf">
  <front>
    <title>Impact of Quantum Computing on Symmetric Cryptography</title>
    <author >
      <organization>European Telecommunications Standards Institute</organization>
    </author>
    <date year="2025"/>
  </front>
  <seriesInfo name="ETSI TR 103 967" value=""/>
  <format type="PDF" target="https://www.etsi.org/deliver/etsi_tr/103900_103999/103967/01.01.01_60/tr_103967v010101p.pdf"/>
</reference>


<reference anchor="RFC8221">
  <front>
    <title>Cryptographic Algorithm Implementation Requirements and Usage Guidance for Encapsulating Security Payload (ESP) and Authentication Header (AH)</title>
    <author fullname="P. Wouters" initials="P." surname="Wouters"/>
    <author fullname="D. Migault" initials="D." surname="Migault"/>
    <author fullname="J. Mattsson" initials="J." surname="Mattsson"/>
    <author fullname="Y. Nir" initials="Y." surname="Nir"/>
    <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
    <date month="October" year="2017"/>
    <abstract>
      <t>This document replaces RFC 7321, "Cryptographic Algorithm Implementation Requirements and Usage Guidance for Encapsulating Security Payload (ESP) and Authentication Header (AH)". The goal of this document is to enable ESP and AH to benefit from cryptography that is up to date while making IPsec interoperable.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8221"/>
  <seriesInfo name="DOI" value="10.17487/RFC8221"/>
</reference>

<reference anchor="RFC8247">
  <front>
    <title>Algorithm Implementation Requirements and Usage Guidance for the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
    <author fullname="Y. Nir" initials="Y." surname="Nir"/>
    <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
    <author fullname="P. Wouters" initials="P." surname="Wouters"/>
    <author fullname="D. Migault" initials="D." surname="Migault"/>
    <date month="September" year="2017"/>
    <abstract>
      <t>The IPsec series of protocols makes use of various cryptographic algorithms in order to provide security services. The Internet Key Exchange (IKE) protocol is used to negotiate the IPsec Security Association (IPsec SA) parameters, such as which algorithms should be used. To ensure interoperability between different implementations, it is necessary to specify a set of algorithm implementation requirements and usage guidance to ensure that there is at least one algorithm that all implementations support. This document updates RFC 7296 and obsoletes RFC 4307 in defining the current algorithm implementation requirements and usage guidance for IKEv2, and does minor cleaning up of the IKEv2 IANA registry. This document does not update the algorithms used for packet encryption using IPsec Encapsulating Security Payload (ESP).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8247"/>
  <seriesInfo name="DOI" value="10.17487/RFC8247"/>
</reference>

<reference anchor="RFC8784">
  <front>
    <title>Mixing Preshared Keys in the Internet Key Exchange Protocol Version 2 (IKEv2) for Post-quantum Security</title>
    <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
    <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
    <author fullname="D. McGrew" initials="D." surname="McGrew"/>
    <author fullname="V. Smyslov" initials="V." surname="Smyslov"/>
    <date month="June" year="2020"/>
    <abstract>
      <t>The possibility of quantum computers poses a serious challenge to cryptographic algorithms deployed widely today. The Internet Key Exchange Protocol Version 2 (IKEv2) is one example of a cryptosystem that could be broken; someone storing VPN communications today could decrypt them at a later time when a quantum computer is available. It is anticipated that IKEv2 will be extended to support quantum-secure key exchange algorithms; however, that is not likely to happen in the near term. To address this problem before then, this document describes an extension of IKEv2 to allow it to be resistant to a quantum computer by using preshared keys.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8784"/>
  <seriesInfo name="DOI" value="10.17487/RFC8784"/>
</reference>

<reference anchor="RFC4868">
  <front>
    <title>Using HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512 with IPsec</title>
    <author fullname="S. Kelly" initials="S." surname="Kelly"/>
    <author fullname="S. Frankel" initials="S." surname="Frankel"/>
    <date month="May" year="2007"/>
    <abstract>
      <t>This specification describes the use of Hashed Message Authentication Mode (HMAC) in conjunction with the SHA-256, SHA-384, and SHA-512 algorithms in IPsec. These algorithms may be used as the basis for data origin authentication and integrity verification mechanisms for the Authentication Header (AH), Encapsulating Security Payload (ESP), Internet Key Exchange Protocol (IKE), and IKEv2 protocols, and also as Pseudo-Random Functions (PRFs) for IKE and IKEv2. Truncated output lengths are specified for the authentication-related variants, with the corresponding algorithms designated as HMAC-SHA-256-128, HMAC-SHA-384-192, and HMAC-SHA-512-256. The PRF variants are not truncated, and are called PRF-HMAC-SHA-256, PRF-HMAC-SHA-384, and PRF-HMAC-SHA-512. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4868"/>
  <seriesInfo name="DOI" value="10.17487/RFC4868"/>
</reference>

<reference anchor="RFC8692">
  <front>
    <title>Internet X.509 Public Key Infrastructure: Additional Algorithm Identifiers for RSASSA-PSS and ECDSA Using SHAKEs</title>
    <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
    <author fullname="Q. Dang" initials="Q." surname="Dang"/>
    <date month="December" year="2019"/>
    <abstract>
      <t>Digital signatures are used to sign messages, X.509 certificates, and Certificate Revocation Lists (CRLs). This document updates the "Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile" (RFC 3279) and describes the conventions for using the SHAKE function family in Internet X.509 certificates and revocation lists as one-way hash functions with the RSA Probabilistic signature and Elliptic Curve Digital Signature Algorithm (ECDSA) signature algorithms. The conventions for the associated subject public keys are also described.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8692"/>
  <seriesInfo name="DOI" value="10.17487/RFC8692"/>
</reference>




    </references>

</references>


<?line 492?>

<section anchor="test-vectors"><name>Test Vectors</name>

<t>The following test cases include inputs and outputs for scenarios where KMAC is used in IKEv2 and IPsec.</t>

<t>A key, input, customization string, and output are always supplied.
These correspond to the K, S, C, and Z parameters described in <xref target="kmac-api"/>.
Note that in each context, the customization string is always empty.</t>

<t>All inputs and outputs are encoded as hexadecimal values.
Data supplied to KMAC does not include quotation marks or null terminators.</t>

<t>In some cases a description is supplied, which describes the case being tested in more detail.
These descriptions are test vector metadata, and are not ever supplied to the relevant algorithm.</t>

<section anchor="prf-test-vectors"><name>PRF Test Vectors</name>

<t>These test cases correspond to use of the KMAC transform in IKEv2 as a PRF producing fixed-length output, as described in <xref target="kmac-as-prf"/>.</t>

<section anchor="kmac128-prf-test-vectors"><name>KMAC128 PRF Test Vectors</name>

<figure><sourcecode type="test-vectors"><![CDATA[
~~ Test Case KMAC128-PRF-1 ~~

Description:
Preferred key size

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0

Output (hex):
cf6727ddd39928f78af7844e0b18c6dc0d9795caccd6e592f39d881d5763d5af

~~ Test Case KMAC128-PRF-2 ~~

Description:
Smaller key size

Key (hex):
000102030405060708090a0b0c0d0e0f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0

Output (hex):
12a631badda8d9af5ecef703af5a8e421ac13e8eecdd4b840b60f8719f8bbe02

~~ Test Case KMAC128-PRF-3 ~~

Description:
Larger key size

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0

Output (hex):
3d2ace5443409145c5374e783a9b2299c2d1fcb3799c02a1a60ee3bdaa50071a

]]></sourcecode></figure>

</section>
<section anchor="kmac256-prf-test-vectors"><name>KMAC256 PRF Test Vectors</name>

<figure><sourcecode type="test-vectors"><![CDATA[
~~ Test Case KMAC256-PRF-1 ~~

Description:
Preferred key size

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0

Output (hex):
822d1fa78e6835e26891e6b08d49731ed1b11aac3c4c8074c528d4322154e79c
b664282d1ad322d2d1ceebc282f43857cafd66a6dee028457290485fa13e20be

~~ Test Case KMAC256-PRF-2 ~~

Description:
Smaller key size

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0

Output (hex):
5e821fad70266faa27c90ad48f6494b36f979457e60ff7e4f786646b6e5dbeda
90275a104caaaeed3a3a06a5f205c3594ff464bed2e044b30415026fa4851cc1

~~ Test Case KMAC256-PRF-3 ~~

Description:
Larger key size

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0

Output (hex):
90088df6e0f76ead91359c0ebfe5404e2daae0cd291c1c5b333c3a691986ad1e
13ea9ea21ede97ba0a4fa73ad434bb342fe8dde5963a88760c924ddc432ee465

]]></sourcecode></figure>

</section>
</section>
<section anchor="prf-test-vectors-1"><name>prf+ Test Vectors</name>

<t>These test cases correspond to use of KMAC in IKEv2 with the modified version of prf+, as described in <xref target="kmac-in-prf-plus"/>.</t>

<section anchor="kmac128-prf-test-vectors-1"><name>KMAC128 prf+ Test Vectors</name>

<figure><sourcecode type="test-vectors"><![CDATA[
~~ Test Case KMAC128-KDF-1 ~~

Description:
IKEv2 KDF request single PRF output

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0

Number of output bits requested (integer):
256

Output (hex):
d9908c095281a5cc0ecdee82cf4110cc9c6c4d082da98068f0a3528c52dc13d9

~~ Test Case KMAC128-KDF-2 ~~

Description:
IKEv2 KDF request multiple PRF output

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0

Number of output bits requested (integer):
512

Output (hex):
08b62b326b8a0582de26ca13a04f7aea2db924ec44cbcb580605114fbd79259c
62ec67d1597a804915eb71429207c32a479abd6f36e348235406cb80ec2e62fe

~~ Test Case KMAC128-KDF-3 ~~

Description:
IKE SA key material
ENCR=ENCR_AES_GCM_16 with 128-bit key
PRF=PRF_KMAC_128
SK_d = 256 bits
SK_a[i|r] = nil
SK_e[i|r] = 160*2 bits
SK_p[i|r] = 256*2 bits

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0
dfdedddcdbdad9d8d7d6d5d4d3d2d1d0

Number of output bits requested (integer):
1088

Output (hex):
f70b4ba63562a2e16ec67b826875701ffc4c3f9ec37cbfaf6c9ede90a431b8b6
61941077c17b2a42b41a7ed2319bac7f8d3a87b7bde3d921cc28956430971843
07016bc769e4dd89a3225a21de5f0310c96149a2943f8bf7f50878b8c95d028e
e778287a88c583efd72c05d758d5ab03e57e1a60e15c1714acd180e6487abc77
775a3c8da6335e7e

~~ Test Case KMAC128-KDF-4 ~~

Description:
IKE SA key material
ENCR=ENCR_AES_CBC with 128-bit key
INTEG=AUTH_KMAC_128
PRF=PRF_KMAC_128
SK_d = 256 bits
SK_a[i|r] = 256*2 bits
SK_e[i|r] = 128*2 bits
SK_p[i|r] = 256*2 bits

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0
dfdedddcdbdad9d8d7d6d5d4d3d2d1d0

Number of output bits requested (integer):
1536

Output (hex):
3643851ddafb6b041845ce330640614bc40dfa95389e7b35b2276870f000a5e5
47b9a1dc432fc7effd7d9209ea339d2c6559f3dd877c7c40a1c78cec9a3e5af5
998bedd899198e760beee3e9b4dd1dfcdcff4db61ab59fbe2284b09c89d25816
7bebfe0f96814ddac9ab8942e1ce6f99ddd166bb48f8ae389b10fe57655f3c1e
ee15f1c4eecd16a0df6afef2f7a3f9366d41e90a09d12f144b588a6837c257f8
d42989b2ee76e256976989f162b64a0e07ae528e373cc0c6cec55da1ed685d33

~~ Test Case KMAC128-KDF-5 ~~

Description:
ESP key material
ENCR=ENCR_AES_CBC with 128-bit key
INTEG=AUTH_KMAC_128
KEYMAT=(128*2) + (256*2) bits

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0

Number of output bits requested (integer):
768

Output (hex):
a0c2628180c4f4e3d94bf12726fdc2034bc3c07f67c57e474ea5dfb6e4dec3e5
9eb7e0c1d808e87f294a82752d4f96e180612ea45a2a500ff4781ca4c1c820bb
46a5c6229775bcfbf3bfd1b8fc2ad692785cf5fc81d28664285ca6de479a1fb0

]]></sourcecode></figure>

</section>
<section anchor="kmac256-prf-test-vectors-1"><name>KMAC256 prf+ Test Vectors</name>

<figure><sourcecode type="test-vectors"><![CDATA[
~~ Test Case KMAC256-KDF-1 ~~

Description:
IKEv2 KDF request single PRF output

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0

Number of output bits requested (integer):
512

Output (hex):
b88f902d658be5804ac40125a79904908663873cec5d1ba49dce81b4a1aae6c5
cb701fe392c81125ff73f6ca1649888b9c64644e903b96c75d07789000a35d00

~~ Test Case KMAC256-KDF-2 ~~

Description:
IKEv2 KDF request multiple PRF output

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0

Number of output bits requested (integer):
1024

Output (hex):
7a7e73ed49d734c0c356d44d1b5b006d0dee371def9d88a3ab21c2a2a327257d
b8293239eec50cf74abf3b44eabfa1f3474211e8745dab5f8d38fb1082ae6f7b
166727549bd80c8c181d99b173a5768d57c1e4d90add36d7cfb0f8a7abb1bba1
7492ad06292c2ed5c31b7de929f6036d0fb08bb755b671d47e941f36618cf3ee

~~ Test Case KMAC256-KDF-3 ~~

Description:
IKE SA key material
ENCR=ENCR_AES_GCM_16 with 256-bit key
PRF=PRF_KMAC_256
SK_d = 512 bits
SK_a[i|r] = nil
SK_e[i|r] = 288*2 bits
SK_p[i|r] = 512*2 bits

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0
dfdedddcdbdad9d8d7d6d5d4d3d2d1d0cfcecdcccbcac9c8c7c6c5c4c3c2c1c0
bfbebdbcbbbab9b8b7b6b5b4b3b2b1b0

Number of output bits requested (integer):
2112

Output (hex):
3eeee64fa54813632088254e90f8b2476d45f756a067a37248d975f8322b49bf
d599b09a5577fdb751209ac785312fc3d29186d28e93205ada52cdc33c3dee71
6c239402869888479fcb32003d6167d0baef87c58cde5df1e65477f9f057ae47
f67274d0d6c79fcf8183add89e518c4f881f7ecbff0e3e11a0d3d8464cb72e68
41ac4f4c1a1ae6733ef43ab4c57ba5135b0b4feb1500ce434ef1dc67738e7fb5
d6391a9d9e32bc93cc186e794b5a2bc07c2b12c7187797b37b3f4302a26bbc1c
1a1873d5cd0ab3d8a213046a32521934d75b45c16d4cf4ad33f11890860b0cf8
9e2c1731a0cb21813fc4f8af658c8d6185c248928e1e6d2e73c27d9e5477b88b
9fe3a5463a80e6ee

~~ Test Case KMAC256-KDF-4 ~~

Description:
IKE SA key material
ENCR=ENCR_AES_CBC with 256-bit key
INTEG=AUTH_KMAC_256
PRF=PRF_KMAC_256
SK_d = 512 bits
SK_a[i|r] = 512*2 bits
SK_e[i|r] = 256*2 bits
SK_p[i|r] = 512*2 bits

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0
dfdedddcdbdad9d8d7d6d5d4d3d2d1d0cfcecdcccbcac9c8c7c6c5c4c3c2c1c0
bfbebdbcbbbab9b8b7b6b5b4b3b2b1b0

Number of output bits requested (integer):
3072

Output (hex):
717678dca65d87b0d6940c2e6c58fea9f37d920623fd80f4292b1ba2fab73fe5
ce88bab849d0cee39c137266f92f561c345f6d0121906741bb70c335b52c5c0f
864539178b96372f1f7cdbf10b06abdc2ebe325e2b6bfe270a82be2f4529f4e8
a3ee17ffa848f151ce94928cc82c2c89ff0660eeedaac9e7ee6a9e8108d839dc
c838bad5094b9dbedb8f09303d0080b4fef5288c0cb7856748067d36fab22d2e
c50992ec88a56c2673cf3cbb8e72b2b98c9f72d95e8abed0b6b8f4433db9bf37
3cd06628a37a5188a12506c12500e9d7d26452eb6533d69bca0c158ab27377bc
8b29c73afa04c88cf6d62064333a3718242308136fae4a76ed7e553b5a813523
3d5b26d683a9ad53d883fa3b25572139617049afe39d75b9c6519c0e788fd973
90659b9f354e2c22eb0158dfd8eb3fafbab1ad886eba79a66e0f39688af9cf37
a0beef99692ff554e1bfc48df3da84b74f84bec12d84335bb31b258a8e3b46de
94fa140ce8863cbb8555f0a0745ae283cc6c2d57f6840fad6e09838ed1b1b4d9

~~ Test Case KMAC256-KDF-5 ~~

Description:
ESP key material
ENCR=ENCR_AES_CBC with 256-bit key
INTEG=AUTH_KMAC_256
KEYMAT=(256*2) + (512*2) bits

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0

Number of output bits requested (integer):
1536

Output (hex):
d17d6a54d87668652d703c96b153e9c0103ad537e72b5d285c844bafc13c893a
796975289457a9a930e309af7759be10ffbfa7ac8c695d74e23c724197f6a797
447d3712e17101942d5c024e8c1d16e97672c28134f5dd721c33b0256e5e2cd0
47ac01e9ca3a6a3b9a1f52d00283c4e9bdcbc2db18abc98464226a82fc42b649
d86a0a3ed4d008bc87c0822e161b5582535898e0046191dc21220beded524fac
ce48d513fe2a2227629caf69cc37b0c660b92382a6dcf95b8becacaa20145bf7

]]></sourcecode></figure>

</section>
</section>
<section anchor="integrity-protection-test-vectors"><name>Integrity Protection Test Vectors</name>

<t>These test cases correspond to use of KMAC as the integrity protection transform for either an IKE SA or an IPsec SA, as described in <xref target="kmac-as-integrity"/>.</t>

<section anchor="kmac128-integrity-protection-test-vectors"><name>KMAC128 Integrity Protection Test Vectors</name>

<figure><sourcecode type="test-vectors"><![CDATA[
~~ Test Case KMAC128-INTEG-1 ~~

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0

Output (hex):
84c68523a2abc7fd0edb766e976168c1

]]></sourcecode></figure>

</section>
<section anchor="kmac256-integrity-protection-test-vectors"><name>KMAC256 Integrity Protection Test Vectors</name>

<figure><sourcecode type="test-vectors"><![CDATA[
~~ Test Case KMAC256-INTEG-1 ~~

Key (hex):
000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f

Input (hex):
fffefdfcfbfaf9f8f7f6f5f4f3f2f1f0efeeedecebeae9e8e7e6e5e4e3e2e1e0

Output (hex):
931d2d1c1d4402ce4820745082e7a8ba84910399cf1dcb9dc1080bfb3e243691

]]></sourcecode></figure>

</section>
</section>
</section>
<section anchor="acknowledgments"><name>Acknowledgments</name>

<t>TODO</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+196XYcx5Xm/3yKHOiHyTaqmPtCW3bDACiyuZqgJC/dwxMZ
GQlksxY4s4oQWpKfZf7Mi8y82Hz3RkRuVQVCknVaPadlSyhkZWw37vLdJQKz
2cxxPvvsM/zHfbbaqGalNrOzRlQb96VoPpTrm5X7Ti2vF2Kj8A699latxFK5
m6u6dat6odyqWS/dktrMNutyPbtdbxt6ZXbdrDdruV7Ml6W7WbuXauO2G9Fs
VEn96FG4r2rdLMXGRYdHup/f2j5+N/vtzbr5cNmst9f4zI/Q3ZGZy5N149ar
elOLhduqzfb62EVLd71a3LorpXhYVdYbzBaj1E27cYvFWn5w1xV+VYuypV5e
0+tHm3qzUEfcrKV2hXLllVhdqvI3bqkWaqPcI1EUjfp45NYVjdO43Ibm3V6t
mw31dbK6ddcYrXHlGvRcbVwpVtQXTUOVx26x3XDXolHVduGu1hsarF5tmnW5
lXivadYNT+tiTaThWbo39WJBzbBIV2w3a5CrlmKBeZfbpl5d6tXTvDD2rYvO
3e3KTN/Q6my9+hVovJKLbYmlzDzvyAX5jma0t+0Gi1oZMi14h6nNC1GoRdt9
g21y77FBpkc9ixa7UNxSZ9TFZr1eMHWxetAIH+ip3DYNkeqjatp6vfoNVoMZ
lmtJ3R3RuK76RoALLQ++I+bbGL6kMVr3QyOWxK6zppKP3d9ebTbX7eNHjy7r
zdW2mMv18pEUxfrR8LXfUVd/Br/QFjUKnUnF88Fc6kZTwmy1e60nLNyyrvCB
Zqu5lvo4ZUJ31MNksfO0Elog3pFXHf3A5g/m3ywXvKg/vXxx7KqNnM/nD/XK
SBKZqR67R1+2ivj0+cuTU1esSvfi6cnzc7sXVljd59ju82/0VrtvjMS5X2lK
uoH74Nnz84/BQ+7h2ZtWySNHczFG2O2aXx6+K0Hgy3Vz+xiiC04ye/LYsEGt
NtWsvsabEPf2SoRm6512Wyzrlqawub3G68/O3z1x3c9csWjXGLhelepa4T+r
zdGxe0SysW4gxPTLs5M/4Adx5rO3756QpLur7bJQDX0qtR4i4WpB4m372N00
WzzCckIHDCceuxcK/FRvbp2OMTH+m4vz05fnzgd1i6flY8eZuTxv/MS8ZyH9
/kF9DPDzw1KYxx94rI9qteUPpi+zXmZpXtzXGIdk8Av6nh4vRb0AD379xT8b
tiX+Y24TjbwacOfg60dff8FvaIZ97H55cf720dvzN6/poabqgYYvTt6dX7xD
YygGqKHHjuvO8K/rQr8s9G79Qa3cC7EAy/AX6+ZSrOr/gA5ZrzDSc/cVf4QS
Pb0FoTsKuqfYoEZxG6UXhZ7mF+E/r2Qr55frj/Pthz3DnZRi6b4V9Ur91OGo
p/nbTwz3L+hrAwFwT5ttLT9g41Yf2p86su10fjoa3VmxENcfFdH57ZPTNMgT
+vgELDYLvOCxe/b62dz35okXZI9ePbt4N6ev5vgKb128mWWeN/OzeM97F2/m
5kvHqVfVcKCXL2bPz18e7jvU75xdnBx+J6LxXzy9+6WYlnLy4vT1q8dMDauM
noiFJBo+Ee1m9gTKvwb5XogNzJCaFYK0/Ol6eS3kxr2oL0G6bQOlvIZGd1+9
e/vlEXfWMyj9MzM/XSgeyPGb2ckcBn37t63qvtD7+wZjNWp2sgBHjd+YdPEv
c/fpuqrajapXkz7+RVVVA1U5/X46ibn7vIaMroykDCYhYK0n300afzV3X9xu
QYwr9bH9cDvp4CtR1st9L0x6eTd336yb1c4K3l3B6rfj7/Y0bUj97m85+Gq3
4dtarlugiP1tJ99Omn8xhyTB8E1p9kVDtmP83aTp13P366vbzXTLvwbeqaFE
ht9NWv5l7v6FrN6k5V+u1KpS9eA7shmPXcifp/UGy5VlwjdnTx67VqtWzOSz
Fgw8JwE0D+bXZdXLbpweFt04vd74DcnQF29ff3X+diRDz7R4wKT/cStWm+2S
JWa7IdMBU31xu1yqTVNLqLHb6836shHXV5pHAJoBnvt53tzczNWmrefQb4+A
TaEkmkf04P2meeR7Ye557+lHnvNvSfrI8+f8//eJ92jTvNdPP3o+/e/arG9A
qXiPuGKsx+75tllfK0FOwULB+Cy3K+BQ0qmte7EBbhAN0OqzVYs1b83O3UHw
n2shrYJ+amkLMeV3F8/cd29dvOriXa21syDwH9uPUWo/pln02AEac2azmSuK
dtNgxxyH4Sagz3ZJuK+9VrIGLm8ZiG17lOYHGUMn+hzECUA7nKS74NoOSjt2
z1dSXLdbGHxii84+vRG3i7Uo3QfnF2/wFo1ygt0hoKrJ7z5VooSyfXDy9KFr
Ha92jqkrTFAsIIeYzbK17gjjckHQHviOh6BGSnJfg9cJpmLMY/fkqYaFNE89
AVIprdrC43uLX+EDPoHLoVnhwZu3T9qH3JgbzJ236m9bYGoioO603V5fw2di
38UajOHAHRiFEd4wlQFSwxnoeqw/hVlkPsV+cKwhrN0B/oW2QHCn7brbtHLu
8OYu67Jkd8KAdx7wEKiF6Xb+CY7vEvas5P3EALPQvYImH84ZFFlfawrQEi+e
ffHq5N2Xb8/fPz25ePr+5MUXr98+e/f05QVvix4NDuCN9lfLupXbllwZ4p9j
5h4DzNEvdk13zT2LAc14EpUh/aDnX7XGPcUL2HEgQOMPGvcL8rthL35OiztZ
oEOzuI7TeQpYPTH4t9/+j2ezs/mIOIyY4eZXs+vFtv3++7mWlIYJ1VrRwKrg
sBoUBijLLiXtEpwQ1YAdCgGPHJMy72Op3jeeD69xQw4jMebHuqRpLQkAtOpa
NLqvQm1uaGHsAKIlZsId4+eveVWnawAHCb/bBfAHzf5D6Z05+fLdUzgOYtWS
cuK9Hz+Cyi0Ar8d9wBRUi1oyz5ZqA5iIdRRrOPTsSOEDtLkL7/lycwWX/UrP
jAVFuJCIuYmysKdPCzisWa7AFYYiezTLcc/ONPVvv+1h5fffG86ZeHK87H3C
3skyT3EosiP/035PL2NIojDFPYRhGx6SfVz414ocL+7J7OhHAecO9Jxp2lBH
AwGfrOU+bDahG0u4WCzW5K22GG6x1exXamlZrdaQD1Y1Wuto8dynMY6xs1W9
spOxqJ7JSht6qQD/tHKmZhiqLsVYi/VL4w0/Xa8+kp4mrUBNzqj/mn93WFqJ
Nckpbd2jl19evCMfmH66r17z57fnf/zy2dvzM/qMWb540X1wzBsXT19/+eKs
/9S3PH398uX5qzPdGE/d0SPn6OXJn480Axy9fvPu2etXJy9MHGhE3kaZgBgx
UHPdqA1ztVOqVjZ1oYn1h9M3/+d/+RHtIExp4Pv599+bXzI/jfALEVCPxgpP
/0rxKkdcA1QQf9IuwkRd1xvs6TGxXXtFMcgr1bA0/pUo829whAt57Ue/Mw9o
waOHlmajh0yz3Sc7jTUR9zzaM0xHzdHzCaXH8z358+h3S/fBw9/+fgEOdCHO
v4dX75yUZa291sXt8WRrWPO1pEfh02Jvlhxcg+kn7Q40BTJ3kTbAd9aSvcGa
awakdsxSMGmyx55AoiPb0h6RxLNUHRxj10Zb6WIzPRqQFMs9utyj/3bnfeQ+
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
YloLgPDVGc33wcn5ydlDU6WtkS/zm2j1pYmYOFf0LQGMmxUdFGvWBFK72Zny
qcH8XO2d/7tVXzwumyoyz9jOMQ3M0u3Jec6j9TzXmaZ9nYJaNH0ze1OVwWWr
gztlPr2H1BcfKADj7B+HcMJsMJR5l6iz2kKtqJ7KD85fnb59/+rLFy8e4q07
5r6nz5OnnVXmpHiHs3bFqK8wGQgRG03tnwywjLaie1NBdxWQ3mmlB3cM7czE
Fph11Zz72xJS2Glro0Es6F8OTzwZo3wG8dpAI1z0R7HGogbyXK3LgQegm08k
yxYomgPZ7dgT2nfOi8ru+iNVA/U8cNSYv/kcvemPdvHtxcnFxcnszcUFWczz
0zNY08FtOpjon+axl7uSEvQVi23LgSq6qyKNgnTHGBztEOHIfeBHD/eTwp5T
oBtJblp7jdG6P7K2ut234K5MRBf6abLpedxyVn0v2flyVGABiuHdmMJ7YQ3S
vlF0YfzOnUH33mZzQINv8BDsFtlj/pq84/3sa4HomCgFSoUuVNRHuXpG64/5
HpMDxMrJLv4HsiGhiHGBIF/uc63v0DI1gvftb+fEnjh8rxOFfzVD8aH1Wx1d
GFRn8qkAvoxGK/3JKci6O9Z4SDzs0STrnuiRLJg1ZxDYPlHXs/6KI7D0D70K
xyqA+y3XorXOeozrfrp17T3ZrRUX3d+zcK/Xi1rCblAp/WZyCHOoRzBtsD2x
R0+dnnXsPce7xaI9kaj7+y7OnBiCwmm6WuZmfNqZlkAPqy2zkz0IqGvr2q6A
kQ88Dm9w6Or3GRntic0NLqo64A7RSU+4QacEJtormwHQJUBdfPtwISl5TQK6
UG4XQjsVRJpCXYmPNcW8zf0Q4By8T4BuW7O/xC5DFy7E5ugoQG/8B4F0e17J
VLr10bthucJIya1N5G/ufLladJc9HA8zNJwh6J1LG2IRJhPTKLo4t5zYVW2u
0ZDdZx2yYGraW2DEQvIFfFqHDkjHLQeFquTf2HKj6Wu6Qg8zk2YGVEnf39ow
rYg2JyJaeq4r9EVTkq6kO/L0RMQoN6UdrW1hblpkzjORUVtfb+53GMRPX+ij
ed3RCtHjgrG4Tksx+4vRugvC7JTHwK/n376JWVTRrYsmyHRj/t9Djy7S8ZvR
jduDnbNXFdj0MYGFvohyZlZIhvyKbHB/nqQLePF5Es2VBrcdG8zH5xsnp07Y
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
/wC3QBA7L6QAAA==

-->

</rfc>

