Searched refs:MBEDTLS_PRIVATE (Results 1 – 25 of 72) sorted by relevance
123
/mbedtls/include/psa/ |
A D | crypto_struct.h | 80 unsigned int MBEDTLS_PRIVATE(id); 105 unsigned int MBEDTLS_PRIVATE(id); 141 unsigned int MBEDTLS_PRIVATE(id); 169 unsigned int MBEDTLS_PRIVATE(id); 208 size_t MBEDTLS_PRIVATE(capacity); 334 attributes->MBEDTLS_PRIVATE(id).MBEDTLS_PRIVATE(owner) = owner; in mbedtls_set_key_owner_id() 344 attributes->MBEDTLS_PRIVATE(id).MBEDTLS_PRIVATE(key_id) = 0; in psa_set_key_lifetime() 372 attributes->MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(usage) = usage_flags; in psa_set_key_usage_flags() 378 return attributes->MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(usage); in psa_get_key_usage_flags() 384 attributes->MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(alg) = alg; in psa_set_key_algorithm() [all …]
|
A D | crypto_builtin_composites.h | 47 psa_algorithm_t MBEDTLS_PRIVATE(alg); 58 psa_algorithm_t MBEDTLS_PRIVATE(alg); 67 } MBEDTLS_PRIVATE(ctx); 85 uint8_t MBEDTLS_PRIVATE(tag_length); 115 uint32_t MBEDTLS_PRIVATE(num_ops); 125 unsigned MBEDTLS_PRIVATE(dummy); 150 uint32_t MBEDTLS_PRIVATE(num_ops); 155 mbedtls_mpi MBEDTLS_PRIVATE(r); 156 mbedtls_mpi MBEDTLS_PRIVATE(s); 160 unsigned MBEDTLS_PRIVATE(dummy); [all …]
|
A D | crypto_builtin_key_derivation.h | 31 uint8_t *MBEDTLS_PRIVATE(info); 32 size_t MBEDTLS_PRIVATE(info_length); 37 uint8_t MBEDTLS_PRIVATE(block_number); 78 uint8_t *MBEDTLS_PRIVATE(secret); 80 uint8_t *MBEDTLS_PRIVATE(seed); 81 size_t MBEDTLS_PRIVATE(seed_length); 82 uint8_t *MBEDTLS_PRIVATE(label); 83 size_t MBEDTLS_PRIVATE(label_length); 108 uint8_t *MBEDTLS_PRIVATE(salt); 109 size_t MBEDTLS_PRIVATE(salt_length); [all …]
|
A D | crypto_se_driver.h | 89 const void *const MBEDTLS_PRIVATE(persistent_data); 96 const size_t MBEDTLS_PRIVATE(persistent_data_size); 103 uintptr_t MBEDTLS_PRIVATE(transient_data); 502 size_t MBEDTLS_PRIVATE(context_size); 504 psa_drv_se_cipher_setup_t MBEDTLS_PRIVATE(p_setup); 517 psa_drv_se_cipher_ecb_t MBEDTLS_PRIVATE(p_ecb); 1284 uint32_t MBEDTLS_PRIVATE(hal_version); 1294 size_t MBEDTLS_PRIVATE(persistent_data_size); 1306 psa_drv_se_init_t MBEDTLS_PRIVATE(p_init); 1309 const psa_drv_se_mac_t *MBEDTLS_PRIVATE(mac); [all …]
|
A D | crypto_extra.h | 62 attributes->MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(alg2) = alg2; in psa_set_key_enrollment_algorithm() 74 return attributes->MBEDTLS_PRIVATE(policy).MBEDTLS_PRIVATE(alg2); in psa_get_key_enrollment_algorithm() 226 size_t MBEDTLS_PRIVATE(cache_slots); 228 size_t MBEDTLS_PRIVATE(empty_slots); 1782 uint8_t *MBEDTLS_PRIVATE(user); 1783 size_t MBEDTLS_PRIVATE(user_len); 1784 uint8_t *MBEDTLS_PRIVATE(peer); 1785 size_t MBEDTLS_PRIVATE(peer_len); 1823 uint8_t MBEDTLS_PRIVATE(inputs); 1852 uint8_t MBEDTLS_PRIVATE(stage); [all …]
|
A D | crypto_builtin_primitives.h | 53 psa_algorithm_t MBEDTLS_PRIVATE(alg); 79 } MBEDTLS_PRIVATE(ctx); 103 psa_algorithm_t MBEDTLS_PRIVATE(alg); 104 uint8_t MBEDTLS_PRIVATE(iv_length); 105 uint8_t MBEDTLS_PRIVATE(block_length); 107 unsigned int MBEDTLS_PRIVATE(dummy); 108 mbedtls_cipher_context_t MBEDTLS_PRIVATE(cipher); 109 } MBEDTLS_PRIVATE(ctx);
|
/mbedtls/include/mbedtls/ |
A D | ssl.h | 1205 uint16_t MBEDTLS_PRIVATE(mki_len); 1484 int MBEDTLS_PRIVATE(tls13_kex_modes); 1551 void *MBEDTLS_PRIVATE(p_ca_cb); 1718 int MBEDTLS_PRIVATE(early_data_state); 2032 return conf->MBEDTLS_PRIVATE(endpoint); in mbedtls_ssl_conf_get_endpoint() 2203 return ssl->MBEDTLS_PRIVATE(conf); in mbedtls_ssl_context_get_config() 2702 return &session->MBEDTLS_PRIVATE(id); in mbedtls_ssl_session_get_id() 2828 ssl->MBEDTLS_PRIVATE(user_data).p = p; in mbedtls_ssl_set_user_data_p() 2842 ssl->MBEDTLS_PRIVATE(user_data).n = n; in mbedtls_ssl_set_user_data_n() 3495 conf->MBEDTLS_PRIVATE(dn_hints) = crt; in mbedtls_ssl_conf_dn_hints() [all …]
|
A D | cipher.h | 268 const char *MBEDTLS_PRIVATE(name); 288 unsigned int MBEDTLS_PRIVATE(mode) : 4; 321 int MBEDTLS_PRIVATE(key_bitlen); 347 size_t MBEDTLS_PRIVATE(iv_size); 350 void *MBEDTLS_PRIVATE(cipher_ctx); 685 return (unsigned int) ctx->MBEDTLS_PRIVATE(cipher_info)->MBEDTLS_PRIVATE(block_size); in mbedtls_cipher_get_block_size() 704 return (mbedtls_cipher_mode_t) ctx->MBEDTLS_PRIVATE(cipher_info)->MBEDTLS_PRIVATE(mode); in mbedtls_cipher_get_cipher_mode() 728 return (int) (((int) ctx->MBEDTLS_PRIVATE(cipher_info)->MBEDTLS_PRIVATE(iv_size)) << in mbedtls_cipher_get_iv_size() 747 return (mbedtls_cipher_type_t) ctx->MBEDTLS_PRIVATE(cipher_info)->MBEDTLS_PRIVATE(type); in mbedtls_cipher_get_type() 766 return ctx->MBEDTLS_PRIVATE(cipher_info)->MBEDTLS_PRIVATE(name); in mbedtls_cipher_get_name() [all …]
|
A D | ecdh.h | 88 mbedtls_mpi MBEDTLS_PRIVATE(d); /*!< The private key. */ 89 mbedtls_ecp_point MBEDTLS_PRIVATE(Q); /*!< The public key. */ 91 mbedtls_mpi MBEDTLS_PRIVATE(z); /*!< The shared secret. */ 108 mbedtls_mpi MBEDTLS_PRIVATE(d); /*!< The private key. */ 109 mbedtls_ecp_point MBEDTLS_PRIVATE(Q); /*!< The public key. */ 111 mbedtls_mpi MBEDTLS_PRIVATE(z); /*!< The shared secret. */ 113 mbedtls_ecp_point MBEDTLS_PRIVATE(Vi); /*!< The blinding value. */ 114 mbedtls_ecp_point MBEDTLS_PRIVATE(Vf); /*!< The unblinding value. */ 115 mbedtls_mpi MBEDTLS_PRIVATE(_d); /*!< The previous \p d. */ 126 mbedtls_ecdh_context_mbed MBEDTLS_PRIVATE(mbed_ecdh); [all …]
|
A D | x509_crt.h | 218 int MBEDTLS_PRIVATE(version); 220 size_t MBEDTLS_PRIVATE(serial_len); 221 mbedtls_pk_context *MBEDTLS_PRIVATE(subject_key); 222 mbedtls_pk_context *MBEDTLS_PRIVATE(issuer_key); 225 mbedtls_md_type_t MBEDTLS_PRIVATE(md_alg); 251 mbedtls_x509_crt *MBEDTLS_PRIVATE(crt); 252 uint32_t MBEDTLS_PRIVATE(flags); 265 unsigned MBEDTLS_PRIVATE(len); 283 mbedtls_pk_restart_ctx MBEDTLS_PRIVATE(pk); 288 int MBEDTLS_PRIVATE(fallback_signature_is_good); [all …]
|
A D | pkcs7.h | 109 int MBEDTLS_PRIVATE(version); 110 mbedtls_x509_buf MBEDTLS_PRIVATE(serial); 111 mbedtls_x509_name MBEDTLS_PRIVATE(issuer); 115 mbedtls_x509_buf MBEDTLS_PRIVATE(sig); 124 int MBEDTLS_PRIVATE(version); 126 int MBEDTLS_PRIVATE(no_of_certs); 127 mbedtls_x509_crt MBEDTLS_PRIVATE(certs); 128 int MBEDTLS_PRIVATE(no_of_crls); 129 mbedtls_x509_crl MBEDTLS_PRIVATE(crl); 130 int MBEDTLS_PRIVATE(no_of_signers); [all …]
|
A D | lms.h | 94 unsigned char MBEDTLS_PRIVATE(I_key_identifier[MBEDTLS_LMOTS_I_KEY_ID_LEN]); /*!< The key 96 unsigned char MBEDTLS_PRIVATE(q_leaf_identifier[MBEDTLS_LMOTS_Q_LEAF_ID_LEN]); /*!< Which 99 mbedtls_lmots_algorithm_type_t MBEDTLS_PRIVATE(type); /*!< The LM-OTS key type identifier as 122 mbedtls_lmots_parameters_t MBEDTLS_PRIVATE(params); 123 unsigned char MBEDTLS_PRIVATE(public_key)[MBEDTLS_LMOTS_N_HASH_LEN_MAX]; 147 mbedtls_lmots_parameters_t MBEDTLS_PRIVATE(params); 148 unsigned char MBEDTLS_PRIVATE(private_key)[MBEDTLS_LMOTS_P_SIG_DIGIT_COUNT_MAX][ 162 unsigned char MBEDTLS_PRIVATE(I_key_identifier[MBEDTLS_LMOTS_I_KEY_ID_LEN]); /*!< The key 167 mbedtls_lms_algorithm_type_t MBEDTLS_PRIVATE(type); /*!< The LMS key type identifier as per 191 mbedtls_lms_parameters_t MBEDTLS_PRIVATE(params); [all …]
|
A D | ssl_ticket.h | 48 unsigned char MBEDTLS_PRIVATE(name)[MBEDTLS_SSL_TICKET_KEY_NAME_BYTES]; 51 mbedtls_time_t MBEDTLS_PRIVATE(generation_time); /*!< key generation timestamp (seconds) */ 56 uint32_t MBEDTLS_PRIVATE(lifetime); 58 mbedtls_cipher_context_t MBEDTLS_PRIVATE(ctx); /*!< context for auth enc/decryption */ 60 mbedtls_svc_key_id_t MBEDTLS_PRIVATE(key); /*!< key used for auth enc/decryption */ 61 psa_algorithm_t MBEDTLS_PRIVATE(alg); /*!< algorithm of auth enc/decryption */ 62 psa_key_type_t MBEDTLS_PRIVATE(key_type); /*!< key type */ 63 size_t MBEDTLS_PRIVATE(key_bits); /*!< key length in bits */ 72 mbedtls_ssl_ticket_key MBEDTLS_PRIVATE(keys)[2]; /*!< ticket protection keys */ 78 int(*MBEDTLS_PRIVATE(f_rng))(void *, unsigned char *, size_t); [all …]
|
A D | ssl_cache.h | 52 mbedtls_time_t MBEDTLS_PRIVATE(timestamp); /*!< entry timestamp */ 55 unsigned char MBEDTLS_PRIVATE(session_id)[32]; /*!< session ID */ 56 size_t MBEDTLS_PRIVATE(session_id_len); 58 unsigned char *MBEDTLS_PRIVATE(session); /*!< serialized session */ 59 size_t MBEDTLS_PRIVATE(session_len); 61 mbedtls_ssl_cache_entry *MBEDTLS_PRIVATE(next); /*!< chain pointer */ 68 mbedtls_ssl_cache_entry *MBEDTLS_PRIVATE(chain); /*!< start of the chain */ 69 int MBEDTLS_PRIVATE(timeout); /*!< cache entry timeout */ 70 int MBEDTLS_PRIVATE(max_entries); /*!< maximum entries */ 72 mbedtls_threading_mutex_t MBEDTLS_PRIVATE(mutex); /*!< mutex */ [all …]
|
A D | rsa.h | 90 size_t MBEDTLS_PRIVATE(len); /*!< The size of \p N in Bytes. */ 92 mbedtls_mpi MBEDTLS_PRIVATE(N); /*!< The public modulus. */ 93 mbedtls_mpi MBEDTLS_PRIVATE(E); /*!< The public exponent. */ 95 mbedtls_mpi MBEDTLS_PRIVATE(D); /*!< The private exponent. */ 96 mbedtls_mpi MBEDTLS_PRIVATE(P); /*!< The first prime factor. */ 97 mbedtls_mpi MBEDTLS_PRIVATE(Q); /*!< The second prime factor. */ 99 mbedtls_mpi MBEDTLS_PRIVATE(DP); /*!< <code>D % (P - 1)</code>. */ 100 mbedtls_mpi MBEDTLS_PRIVATE(DQ); /*!< <code>D % (Q - 1)</code>. */ 101 mbedtls_mpi MBEDTLS_PRIVATE(QP); /*!< <code>1 / (Q % P)</code>. */ 108 mbedtls_mpi MBEDTLS_PRIVATE(Vi); /*!< The cached blinding value. */ [all …]
|
A D | ecjpake.h | 61 mbedtls_md_type_t MBEDTLS_PRIVATE(md_type); /**< Hash to use */ 62 mbedtls_ecp_group MBEDTLS_PRIVATE(grp); /**< Elliptic curve */ 63 mbedtls_ecjpake_role MBEDTLS_PRIVATE(role); /**< Are we client or server? */ 64 int MBEDTLS_PRIVATE(point_format); /**< Format for point export */ 66 mbedtls_ecp_point MBEDTLS_PRIVATE(Xm1); /**< My public key 1 C: X1, S: X3 */ 67 mbedtls_ecp_point MBEDTLS_PRIVATE(Xm2); /**< My public key 2 C: X2, S: X4 */ 68 mbedtls_ecp_point MBEDTLS_PRIVATE(Xp1); /**< Peer public key 1 C: X3, S: X1 */ 69 mbedtls_ecp_point MBEDTLS_PRIVATE(Xp2); /**< Peer public key 2 C: X4, S: X2 */ 70 mbedtls_ecp_point MBEDTLS_PRIVATE(Xp); /**< Peer public key C: Xs, S: Xc */ 72 mbedtls_mpi MBEDTLS_PRIVATE(xm1); /**< My private key 1 C: x1, S: x3 */ [all …]
|
A D | entropy.h | 94 mbedtls_entropy_f_source_ptr MBEDTLS_PRIVATE(f_source); /**< The entropy source callback */ 95 void *MBEDTLS_PRIVATE(p_source); /**< The callback data pointer */ 96 size_t MBEDTLS_PRIVATE(size); /**< Amount received in bytes */ 97 size_t MBEDTLS_PRIVATE(threshold); /**< Minimum bytes required before release */ 98 int MBEDTLS_PRIVATE(strong); /**< Is the source strong? */ 106 mbedtls_md_context_t MBEDTLS_PRIVATE(accumulator); 107 int MBEDTLS_PRIVATE(accumulator_started); /* 0 after init. 110 int MBEDTLS_PRIVATE(source_count); /* Number of entries used in source. */ 111 mbedtls_entropy_source_state MBEDTLS_PRIVATE(source)[MBEDTLS_ENTROPY_MAX_SOURCES]; 113 mbedtls_threading_mutex_t MBEDTLS_PRIVATE(mutex); /*!< mutex */ [all …]
|
A D | ccm.h | 70 unsigned char MBEDTLS_PRIVATE(y)[16]; /*!< The Y working buffer */ 71 unsigned char MBEDTLS_PRIVATE(ctr)[16]; /*!< The counter buffer */ 72 size_t MBEDTLS_PRIVATE(plaintext_len); /*!< Total plaintext length */ 73 size_t MBEDTLS_PRIVATE(add_len); /*!< Total authentication data length */ 74 size_t MBEDTLS_PRIVATE(tag_len); /*!< Total tag length */ 75 size_t MBEDTLS_PRIVATE(processed); /*!< Track how many bytes of input data 81 unsigned int MBEDTLS_PRIVATE(q); /*!< The Q working value */ 82 unsigned int MBEDTLS_PRIVATE(mode); /*!< The operation to perform: 88 …mbedtls_block_cipher_context_t MBEDTLS_PRIVATE(block_cipher_ctx); /*!< The cipher context used.… 90 mbedtls_cipher_context_t MBEDTLS_PRIVATE(cipher_ctx); /*!< The cipher context used. */ [all …]
|
A D | gcm.h | 60 …mbedtls_block_cipher_context_t MBEDTLS_PRIVATE(block_cipher_ctx); /*!< The cipher context used. */ 62 mbedtls_cipher_context_t MBEDTLS_PRIVATE(cipher_ctx); /*!< The cipher context used. */ 64 uint64_t MBEDTLS_PRIVATE(H)[MBEDTLS_GCM_HTABLE_SIZE][2]; /*!< Precalculated HTable. */ 65 …uint64_t MBEDTLS_PRIVATE(len); /*!< The total length of the encrypted da… 66 …uint64_t MBEDTLS_PRIVATE(add_len); /*!< The total length of the additional d… 67 unsigned char MBEDTLS_PRIVATE(base_ectr)[16]; /*!< The first ECTR for tag. */ 68 unsigned char MBEDTLS_PRIVATE(y)[16]; /*!< The Y working value. */ 69 unsigned char MBEDTLS_PRIVATE(buf)[16]; /*!< The buf working value. */ 70 unsigned char MBEDTLS_PRIVATE(mode); /*!< The operation to perform: 73 unsigned char MBEDTLS_PRIVATE(acceleration); /*!< The acceleration to use. */
|
A D | ecp.h | 159 mbedtls_mpi MBEDTLS_PRIVATE(X); /*!< The X coordinate of the ECP point. */ 160 mbedtls_mpi MBEDTLS_PRIVATE(Y); /*!< The Y coordinate of the ECP point. */ 161 mbedtls_mpi MBEDTLS_PRIVATE(Z); /*!< The Z coordinate of the ECP point. */ 252 int(*MBEDTLS_PRIVATE(modp))(mbedtls_mpi *); /*!< The function for fast pseudo-reduction 254 int(*MBEDTLS_PRIVATE(t_pre))(mbedtls_ecp_point *, void *); /*!< Unused. */ 255 int(*MBEDTLS_PRIVATE(t_post))(mbedtls_ecp_point *, void *); /*!< Unused. */ 256 void *MBEDTLS_PRIVATE(t_data); /*!< Unused. */ 429 mbedtls_ecp_group MBEDTLS_PRIVATE(grp); /*!< Elliptic curve and base point */ 430 mbedtls_mpi MBEDTLS_PRIVATE(d); /*!< our secret value */ 431 mbedtls_ecp_point MBEDTLS_PRIVATE(Q); /*!< our public value */ [all …]
|
A D | ctr_drbg.h | 171 unsigned char MBEDTLS_PRIVATE(counter)[16]; /*!< The counter (V). */ 172 int MBEDTLS_PRIVATE(reseed_counter); /*!< The reseed counter. 182 int MBEDTLS_PRIVATE(prediction_resistance); /*!< This determines whether prediction 186 size_t MBEDTLS_PRIVATE(entropy_len); /*!< The amount of entropy grabbed on each 188 int MBEDTLS_PRIVATE(reseed_interval); /*!< The reseed interval. 193 mbedtls_aes_context MBEDTLS_PRIVATE(aes_ctx); /*!< The AES context. */ 195 mbedtls_ctr_drbg_psa_context MBEDTLS_PRIVATE(psa_ctx); /*!< The PSA context. */ 201 int(*MBEDTLS_PRIVATE(f_entropy))(void *, unsigned char *, size_t); 204 void *MBEDTLS_PRIVATE(p_entropy); /*!< The context for the entropy function. */ 214 mbedtls_threading_mutex_t MBEDTLS_PRIVATE(mutex);
|
A D | dhm.h | 102 mbedtls_mpi MBEDTLS_PRIVATE(P); /*!< The prime modulus. */ 103 mbedtls_mpi MBEDTLS_PRIVATE(G); /*!< The generator. */ 104 mbedtls_mpi MBEDTLS_PRIVATE(X); /*!< Our secret value. */ 105 mbedtls_mpi MBEDTLS_PRIVATE(GX); /*!< Our public key = \c G^X mod \c P. */ 106 mbedtls_mpi MBEDTLS_PRIVATE(GY); /*!< The public key of the peer = \c G^Y mod \c P. */ 107 mbedtls_mpi MBEDTLS_PRIVATE(K); /*!< The shared secret = \c G^(XY) mod \c P. */ 108 mbedtls_mpi MBEDTLS_PRIVATE(RP); /*!< The cached value = \c R^2 mod \c P. */ 109 mbedtls_mpi MBEDTLS_PRIVATE(Vi); /*!< The blinding value. */ 110 mbedtls_mpi MBEDTLS_PRIVATE(Vf); /*!< The unblinding value. */ 111 mbedtls_mpi MBEDTLS_PRIVATE(pX); /*!< The previous \c X. */
|
A D | hmac_drbg.h | 77 mbedtls_md_context_t MBEDTLS_PRIVATE(md_ctx); /*!< HMAC context (inc. K) */ 78 unsigned char MBEDTLS_PRIVATE(V)[MBEDTLS_MD_MAX_SIZE]; /*!< V in the spec */ 79 int MBEDTLS_PRIVATE(reseed_counter); /*!< reseed counter */ 82 size_t MBEDTLS_PRIVATE(entropy_len); /*!< entropy bytes grabbed on each (re)seed */ 83 int MBEDTLS_PRIVATE(prediction_resistance); /*!< enable prediction resistance (Automatic 85 int MBEDTLS_PRIVATE(reseed_interval); /*!< reseed interval */ 88 int(*MBEDTLS_PRIVATE(f_entropy))(void *, unsigned char *, size_t); /*!< entropy function */ 89 void *MBEDTLS_PRIVATE(p_entropy); /*!< context for the entropy function */ 100 mbedtls_threading_mutex_t MBEDTLS_PRIVATE(mutex);
|
A D | block_cipher.h | 53 mbedtls_block_cipher_id_t MBEDTLS_PRIVATE(id); 55 mbedtls_block_cipher_engine_t MBEDTLS_PRIVATE(engine); 56 mbedtls_svc_key_id_t MBEDTLS_PRIVATE(psa_key_id); 61 mbedtls_aes_context MBEDTLS_PRIVATE(aes); 64 mbedtls_aria_context MBEDTLS_PRIVATE(aria); 67 mbedtls_camellia_context MBEDTLS_PRIVATE(camellia); 69 } MBEDTLS_PRIVATE(ctx);
|
A D | x509_csr.h | 53 …int MBEDTLS_PRIVATE(ext_types); /**< Bit string containing detected and parsed extens… 56 mbedtls_x509_buf MBEDTLS_PRIVATE(sig); 57 …mbedtls_md_type_t MBEDTLS_PRIVATE(sig_md); /**< Internal representation of the MD algorithm … 58 …mbedtls_pk_type_t MBEDTLS_PRIVATE(sig_pk); /**< Internal representation of the Public Key al… 59 …void *MBEDTLS_PRIVATE(sig_opts); /**< Signature options to be passed to mbedtls_pk_verify_… 67 mbedtls_pk_context *MBEDTLS_PRIVATE(key); 68 mbedtls_asn1_named_data *MBEDTLS_PRIVATE(subject); 69 mbedtls_md_type_t MBEDTLS_PRIVATE(md_alg); 70 mbedtls_asn1_named_data *MBEDTLS_PRIVATE(extensions);
|
Completed in 60 milliseconds
123