aptos-move/framework/aptos-stdlib/doc/keyless.md
<a id="0x1_keyless"></a>
0x1::keylessThis module implements the Keyless authentication scheme.
PublicKeynew_public_key_from_bytesdeserialize_public_keynewget_issget_idc<a id="0x1_keyless_PublicKey"></a>
PublicKeyAn unvalidated any public key: not necessarily an elliptic curve point, just a sequence of 32 bytes
<pre><code><b>struct</b> <a href="keyless.md#0x1_keyless_PublicKey">PublicKey</a> <b>has</b> <b>copy</b>, drop, store </code></pre> <details> <summary>Fields</summary> <dl> <dt> <code>iss: <a href="../../move-stdlib/doc/string.md#0x1_string_String">string::String</a></code> </dt> <dd> </dd> <dt> <code>idc: <a href="../../move-stdlib/doc/vector.md#0x1_vector">vector</a><u8></code> </dt> <dd> </dd> </dl> </details><a id="@Constants_0"></a>
<a id="0x1_keyless_E_INVALID_ID_COMMITMENT_BYTES_LENGTH"></a>
The length of the identifier commitment bytes in a Keyless public key is invalid.
<pre><code><b>const</b> <a href="keyless.md#0x1_keyless_E_INVALID_ID_COMMITMENT_BYTES_LENGTH">E_INVALID_ID_COMMITMENT_BYTES_LENGTH</a>: u64 = 2; </code></pre><a id="0x1_keyless_E_INVALID_ISSUER_UTF8_BYTES_LENGTH"></a>
The length of the issuer string in a Keyless public key is invalid.
<pre><code><b>const</b> <a href="keyless.md#0x1_keyless_E_INVALID_ISSUER_UTF8_BYTES_LENGTH">E_INVALID_ISSUER_UTF8_BYTES_LENGTH</a>: u64 = 3; </code></pre><a id="0x1_keyless_E_INVALID_KEYLESS_PUBLIC_KEY_EXTRA_BYTES"></a>
There are extra bytes in the input when deserializing a Keyless public key.
<pre><code><b>const</b> <a href="keyless.md#0x1_keyless_E_INVALID_KEYLESS_PUBLIC_KEY_EXTRA_BYTES">E_INVALID_KEYLESS_PUBLIC_KEY_EXTRA_BYTES</a>: u64 = 1; </code></pre><a id="0x1_keyless_ID_COMMITMENT_BYTES_LENGTH"></a>
The length of the identifier commitment bytes in a Keyless public key.
<pre><code><b>const</b> <a href="keyless.md#0x1_keyless_ID_COMMITMENT_BYTES_LENGTH">ID_COMMITMENT_BYTES_LENGTH</a>: u64 = 32; </code></pre><a id="0x1_keyless_MAX_ISSUER_UTF8_BYTES_LENGTH"></a>
The maximum length of the issuer string in bytes in a Keyless public key.
<pre><code><b>const</b> <a href="keyless.md#0x1_keyless_MAX_ISSUER_UTF8_BYTES_LENGTH">MAX_ISSUER_UTF8_BYTES_LENGTH</a>: u64 = 120; </code></pre><a id="0x1_keyless_new_public_key_from_bytes"></a>
new_public_key_from_bytesParses the input bytes into a keyless public key.
<pre><code><b>public</b> <b>fun</b> <a href="keyless.md#0x1_keyless_new_public_key_from_bytes">new_public_key_from_bytes</a>(bytes: <a href="../../move-stdlib/doc/vector.md#0x1_vector">vector</a><u8>): <a href="keyless.md#0x1_keyless_PublicKey">keyless::PublicKey</a> </code></pre> <details> <summary>Implementation</summary> <pre><code><b>public</b> <b>fun</b> <a href="keyless.md#0x1_keyless_new_public_key_from_bytes">new_public_key_from_bytes</a>(bytes: <a href="../../move-stdlib/doc/vector.md#0x1_vector">vector</a><u8>): <a href="keyless.md#0x1_keyless_PublicKey">PublicKey</a> { <b>let</b> stream = <a href="bcs_stream.md#0x1_bcs_stream_new">bcs_stream::new</a>(bytes); <b>let</b> key = <a href="keyless.md#0x1_keyless_deserialize_public_key">deserialize_public_key</a>(&<b>mut</b> stream); <b>assert</b>!(!<a href="bcs_stream.md#0x1_bcs_stream_has_remaining">bcs_stream::has_remaining</a>(&<b>mut</b> stream), <a href="../../move-stdlib/doc/error.md#0x1_error_invalid_argument">error::invalid_argument</a>(<a href="keyless.md#0x1_keyless_E_INVALID_KEYLESS_PUBLIC_KEY_EXTRA_BYTES">E_INVALID_KEYLESS_PUBLIC_KEY_EXTRA_BYTES</a>)); key } </code></pre> </details><a id="0x1_keyless_deserialize_public_key"></a>
deserialize_public_keyDeserializes a keyless public key from a BCS stream.
<pre><code><b>public</b> <b>fun</b> <a href="keyless.md#0x1_keyless_deserialize_public_key">deserialize_public_key</a>(stream: &<b>mut</b> <a href="bcs_stream.md#0x1_bcs_stream_BCSStream">bcs_stream::BCSStream</a>): <a href="keyless.md#0x1_keyless_PublicKey">keyless::PublicKey</a> </code></pre> <details> <summary>Implementation</summary> <pre><code><b>public</b> <b>fun</b> <a href="keyless.md#0x1_keyless_deserialize_public_key">deserialize_public_key</a>(stream: &<b>mut</b> <a href="bcs_stream.md#0x1_bcs_stream_BCSStream">bcs_stream::BCSStream</a>): <a href="keyless.md#0x1_keyless_PublicKey">PublicKey</a> { <b>let</b> iss = <a href="bcs_stream.md#0x1_bcs_stream_deserialize_string">bcs_stream::deserialize_string</a>(stream); <b>let</b> idc = <a href="bcs_stream.md#0x1_bcs_stream_deserialize_vector">bcs_stream::deserialize_vector</a>(stream, |x| deserialize_u8(x)); <a href="keyless.md#0x1_keyless_new">new</a>(iss, idc) } </code></pre> </details><a id="0x1_keyless_new"></a>
newCreates a new keyless public key from an issuer string and an identifier bytes.
<pre><code><b>public</b> <b>fun</b> <a href="keyless.md#0x1_keyless_new">new</a>(iss: <a href="../../move-stdlib/doc/string.md#0x1_string_String">string::String</a>, idc: <a href="../../move-stdlib/doc/vector.md#0x1_vector">vector</a><u8>): <a href="keyless.md#0x1_keyless_PublicKey">keyless::PublicKey</a> </code></pre> <details> <summary>Implementation</summary> <pre><code><b>public</b> <b>fun</b> <a href="keyless.md#0x1_keyless_new">new</a>(iss: String, idc: <a href="../../move-stdlib/doc/vector.md#0x1_vector">vector</a><u8>): <a href="keyless.md#0x1_keyless_PublicKey">PublicKey</a> { <b>assert</b>!(iss.bytes().length() <= <a href="keyless.md#0x1_keyless_MAX_ISSUER_UTF8_BYTES_LENGTH">MAX_ISSUER_UTF8_BYTES_LENGTH</a>, <a href="../../move-stdlib/doc/error.md#0x1_error_invalid_argument">error::invalid_argument</a>(<a href="keyless.md#0x1_keyless_E_INVALID_ISSUER_UTF8_BYTES_LENGTH">E_INVALID_ISSUER_UTF8_BYTES_LENGTH</a>)); <b>assert</b>!(idc.length() == <a href="keyless.md#0x1_keyless_ID_COMMITMENT_BYTES_LENGTH">ID_COMMITMENT_BYTES_LENGTH</a>, <a href="../../move-stdlib/doc/error.md#0x1_error_invalid_argument">error::invalid_argument</a>(<a href="keyless.md#0x1_keyless_E_INVALID_ID_COMMITMENT_BYTES_LENGTH">E_INVALID_ID_COMMITMENT_BYTES_LENGTH</a>)); <a href="keyless.md#0x1_keyless_PublicKey">PublicKey</a> { iss, idc } } </code></pre> </details><a id="0x1_keyless_get_iss"></a>
get_issReturns the issuer string of the public key
<pre><code><b>public</b>(<b>friend</b>) <b>fun</b> <a href="keyless.md#0x1_keyless_get_iss">get_iss</a>(self: &<a href="keyless.md#0x1_keyless_PublicKey">keyless::PublicKey</a>): <a href="../../move-stdlib/doc/string.md#0x1_string_String">string::String</a> </code></pre> <details> <summary>Implementation</summary> <pre><code><b>friend</b> <b>fun</b> <a href="keyless.md#0x1_keyless_get_iss">get_iss</a>(self: &<a href="keyless.md#0x1_keyless_PublicKey">PublicKey</a>): String { self.iss } </code></pre> </details><a id="0x1_keyless_get_idc"></a>
get_idcReturns the identifier bytes of the public key
<pre><code><b>public</b>(<b>friend</b>) <b>fun</b> <a href="keyless.md#0x1_keyless_get_idc">get_idc</a>(self: &<a href="keyless.md#0x1_keyless_PublicKey">keyless::PublicKey</a>): <a href="../../move-stdlib/doc/vector.md#0x1_vector">vector</a><u8> </code></pre> <details> <summary>Implementation</summary> <pre><code><b>friend</b> <b>fun</b> <a href="keyless.md#0x1_keyless_get_idc">get_idc</a>(self: &<a href="keyless.md#0x1_keyless_PublicKey">PublicKey</a>): <a href="../../move-stdlib/doc/vector.md#0x1_vector">vector</a><u8> { self.idc } </code></pre> </details><a id="@Specification_1"></a>