1e1051a39Sopenharmony_ci/* 2e1051a39Sopenharmony_ci * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. 3e1051a39Sopenharmony_ci * 4e1051a39Sopenharmony_ci * Licensed under the Apache License 2.0 (the "License"). You may not use 5e1051a39Sopenharmony_ci * this file except in compliance with the License. You can obtain a copy 6e1051a39Sopenharmony_ci * in the file LICENSE in the source distribution or at 7e1051a39Sopenharmony_ci * https://www.openssl.org/source/license.html 8e1051a39Sopenharmony_ci */ 9e1051a39Sopenharmony_ci 10e1051a39Sopenharmony_ci#include <stdio.h> 11e1051a39Sopenharmony_ci#include "internal/cryptlib.h" 12e1051a39Sopenharmony_ci#include <openssl/evp.h> 13e1051a39Sopenharmony_ci#include "crypto/evp.h" 14e1051a39Sopenharmony_ci#include <openssl/pkcs12.h> 15e1051a39Sopenharmony_ci#include <openssl/objects.h> 16e1051a39Sopenharmony_ci 17e1051a39Sopenharmony_civoid openssl_add_all_ciphers_int(void) 18e1051a39Sopenharmony_ci{ 19e1051a39Sopenharmony_ci 20e1051a39Sopenharmony_ci#ifndef OPENSSL_NO_DES 21e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_cfb()); 22e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_cfb1()); 23e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_cfb8()); 24e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_ede_cfb()); 25e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_ede3_cfb()); 26e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_ede3_cfb1()); 27e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_ede3_cfb8()); 28e1051a39Sopenharmony_ci 29e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_ofb()); 30e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_ede_ofb()); 31e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_ede3_ofb()); 32e1051a39Sopenharmony_ci 33e1051a39Sopenharmony_ci EVP_add_cipher(EVP_desx_cbc()); 34e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_desx_cbc, "DESX"); 35e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_desx_cbc, "desx"); 36e1051a39Sopenharmony_ci 37e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_cbc()); 38e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_des_cbc, "DES"); 39e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_des_cbc, "des"); 40e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_ede_cbc()); 41e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_ede3_cbc()); 42e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_des_ede3_cbc, "DES3"); 43e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_des_ede3_cbc, "des3"); 44e1051a39Sopenharmony_ci 45e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_ecb()); 46e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_ede()); 47e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_des_ede_ecb, "DES-EDE-ECB"); 48e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_des_ede_ecb, "des-ede-ecb"); 49e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_ede3()); 50e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_des_ede3_ecb, "DES-EDE3-ECB"); 51e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_des_ede3_ecb, "des-ede3-ecb"); 52e1051a39Sopenharmony_ci EVP_add_cipher(EVP_des_ede3_wrap()); 53e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_id_smime_alg_CMS3DESwrap, "des3-wrap"); 54e1051a39Sopenharmony_ci#endif 55e1051a39Sopenharmony_ci 56e1051a39Sopenharmony_ci#ifndef OPENSSL_NO_RC4 57e1051a39Sopenharmony_ci EVP_add_cipher(EVP_rc4()); 58e1051a39Sopenharmony_ci EVP_add_cipher(EVP_rc4_40()); 59e1051a39Sopenharmony_ci# ifndef OPENSSL_NO_MD5 60e1051a39Sopenharmony_ci EVP_add_cipher(EVP_rc4_hmac_md5()); 61e1051a39Sopenharmony_ci# endif 62e1051a39Sopenharmony_ci#endif 63e1051a39Sopenharmony_ci 64e1051a39Sopenharmony_ci#ifndef OPENSSL_NO_IDEA 65e1051a39Sopenharmony_ci EVP_add_cipher(EVP_idea_ecb()); 66e1051a39Sopenharmony_ci EVP_add_cipher(EVP_idea_cfb()); 67e1051a39Sopenharmony_ci EVP_add_cipher(EVP_idea_ofb()); 68e1051a39Sopenharmony_ci EVP_add_cipher(EVP_idea_cbc()); 69e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_idea_cbc, "IDEA"); 70e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_idea_cbc, "idea"); 71e1051a39Sopenharmony_ci#endif 72e1051a39Sopenharmony_ci 73e1051a39Sopenharmony_ci#ifndef OPENSSL_NO_SEED 74e1051a39Sopenharmony_ci EVP_add_cipher(EVP_seed_ecb()); 75e1051a39Sopenharmony_ci EVP_add_cipher(EVP_seed_cfb()); 76e1051a39Sopenharmony_ci EVP_add_cipher(EVP_seed_ofb()); 77e1051a39Sopenharmony_ci EVP_add_cipher(EVP_seed_cbc()); 78e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_seed_cbc, "SEED"); 79e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_seed_cbc, "seed"); 80e1051a39Sopenharmony_ci#endif 81e1051a39Sopenharmony_ci 82e1051a39Sopenharmony_ci#ifndef OPENSSL_NO_SM4 83e1051a39Sopenharmony_ci EVP_add_cipher(EVP_sm4_ecb()); 84e1051a39Sopenharmony_ci EVP_add_cipher(EVP_sm4_cbc()); 85e1051a39Sopenharmony_ci EVP_add_cipher(EVP_sm4_cfb()); 86e1051a39Sopenharmony_ci EVP_add_cipher(EVP_sm4_ofb()); 87e1051a39Sopenharmony_ci EVP_add_cipher(EVP_sm4_ctr()); 88e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_sm4_cbc, "SM4"); 89e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_sm4_cbc, "sm4"); 90e1051a39Sopenharmony_ci#endif 91e1051a39Sopenharmony_ci 92e1051a39Sopenharmony_ci#ifndef OPENSSL_NO_RC2 93e1051a39Sopenharmony_ci EVP_add_cipher(EVP_rc2_ecb()); 94e1051a39Sopenharmony_ci EVP_add_cipher(EVP_rc2_cfb()); 95e1051a39Sopenharmony_ci EVP_add_cipher(EVP_rc2_ofb()); 96e1051a39Sopenharmony_ci EVP_add_cipher(EVP_rc2_cbc()); 97e1051a39Sopenharmony_ci EVP_add_cipher(EVP_rc2_40_cbc()); 98e1051a39Sopenharmony_ci EVP_add_cipher(EVP_rc2_64_cbc()); 99e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_rc2_cbc, "RC2"); 100e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_rc2_cbc, "rc2"); 101e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_rc2_cbc, "rc2-128"); 102e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_rc2_64_cbc, "rc2-64"); 103e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_rc2_40_cbc, "rc2-40"); 104e1051a39Sopenharmony_ci#endif 105e1051a39Sopenharmony_ci 106e1051a39Sopenharmony_ci#ifndef OPENSSL_NO_BF 107e1051a39Sopenharmony_ci EVP_add_cipher(EVP_bf_ecb()); 108e1051a39Sopenharmony_ci EVP_add_cipher(EVP_bf_cfb()); 109e1051a39Sopenharmony_ci EVP_add_cipher(EVP_bf_ofb()); 110e1051a39Sopenharmony_ci EVP_add_cipher(EVP_bf_cbc()); 111e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_bf_cbc, "BF"); 112e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_bf_cbc, "bf"); 113e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_bf_cbc, "blowfish"); 114e1051a39Sopenharmony_ci#endif 115e1051a39Sopenharmony_ci 116e1051a39Sopenharmony_ci#ifndef OPENSSL_NO_CAST 117e1051a39Sopenharmony_ci EVP_add_cipher(EVP_cast5_ecb()); 118e1051a39Sopenharmony_ci EVP_add_cipher(EVP_cast5_cfb()); 119e1051a39Sopenharmony_ci EVP_add_cipher(EVP_cast5_ofb()); 120e1051a39Sopenharmony_ci EVP_add_cipher(EVP_cast5_cbc()); 121e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_cast5_cbc, "CAST"); 122e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_cast5_cbc, "cast"); 123e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_cast5_cbc, "CAST-cbc"); 124e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_cast5_cbc, "cast-cbc"); 125e1051a39Sopenharmony_ci#endif 126e1051a39Sopenharmony_ci 127e1051a39Sopenharmony_ci#ifndef OPENSSL_NO_RC5 128e1051a39Sopenharmony_ci EVP_add_cipher(EVP_rc5_32_12_16_ecb()); 129e1051a39Sopenharmony_ci EVP_add_cipher(EVP_rc5_32_12_16_cfb()); 130e1051a39Sopenharmony_ci EVP_add_cipher(EVP_rc5_32_12_16_ofb()); 131e1051a39Sopenharmony_ci EVP_add_cipher(EVP_rc5_32_12_16_cbc()); 132e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_rc5_cbc, "rc5"); 133e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_rc5_cbc, "RC5"); 134e1051a39Sopenharmony_ci#endif 135e1051a39Sopenharmony_ci 136e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_128_ecb()); 137e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_128_cbc()); 138e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_128_cfb()); 139e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_128_cfb1()); 140e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_128_cfb8()); 141e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_128_ofb()); 142e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_128_ctr()); 143e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_128_gcm()); 144e1051a39Sopenharmony_ci#ifndef OPENSSL_NO_OCB 145e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_128_ocb()); 146e1051a39Sopenharmony_ci#endif 147e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_128_xts()); 148e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_128_ccm()); 149e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_128_wrap()); 150e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_id_aes128_wrap, "aes128-wrap"); 151e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_128_wrap_pad()); 152e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_aes_128_cbc, "AES128"); 153e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_aes_128_cbc, "aes128"); 154e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_192_ecb()); 155e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_192_cbc()); 156e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_192_cfb()); 157e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_192_cfb1()); 158e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_192_cfb8()); 159e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_192_ofb()); 160e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_192_ctr()); 161e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_192_gcm()); 162e1051a39Sopenharmony_ci#ifndef OPENSSL_NO_OCB 163e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_192_ocb()); 164e1051a39Sopenharmony_ci#endif 165e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_192_ccm()); 166e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_192_wrap()); 167e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_id_aes192_wrap, "aes192-wrap"); 168e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_192_wrap_pad()); 169e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_aes_192_cbc, "AES192"); 170e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_aes_192_cbc, "aes192"); 171e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_256_ecb()); 172e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_256_cbc()); 173e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_256_cfb()); 174e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_256_cfb1()); 175e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_256_cfb8()); 176e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_256_ofb()); 177e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_256_ctr()); 178e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_256_gcm()); 179e1051a39Sopenharmony_ci#ifndef OPENSSL_NO_OCB 180e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_256_ocb()); 181e1051a39Sopenharmony_ci#endif 182e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_256_xts()); 183e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_256_ccm()); 184e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_256_wrap()); 185e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_id_aes256_wrap, "aes256-wrap"); 186e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_256_wrap_pad()); 187e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_aes_256_cbc, "AES256"); 188e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_aes_256_cbc, "aes256"); 189e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_128_cbc_hmac_sha1()); 190e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_256_cbc_hmac_sha1()); 191e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_128_cbc_hmac_sha256()); 192e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aes_256_cbc_hmac_sha256()); 193e1051a39Sopenharmony_ci#ifndef OPENSSL_NO_ARIA 194e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_128_ecb()); 195e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_128_cbc()); 196e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_128_cfb()); 197e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_128_cfb1()); 198e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_128_cfb8()); 199e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_128_ctr()); 200e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_128_ofb()); 201e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_128_gcm()); 202e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_128_ccm()); 203e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_aria_128_cbc, "ARIA128"); 204e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_aria_128_cbc, "aria128"); 205e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_192_ecb()); 206e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_192_cbc()); 207e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_192_cfb()); 208e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_192_cfb1()); 209e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_192_cfb8()); 210e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_192_ctr()); 211e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_192_ofb()); 212e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_192_gcm()); 213e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_192_ccm()); 214e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_aria_192_cbc, "ARIA192"); 215e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_aria_192_cbc, "aria192"); 216e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_256_ecb()); 217e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_256_cbc()); 218e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_256_cfb()); 219e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_256_cfb1()); 220e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_256_cfb8()); 221e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_256_ctr()); 222e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_256_ofb()); 223e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_256_gcm()); 224e1051a39Sopenharmony_ci EVP_add_cipher(EVP_aria_256_ccm()); 225e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_aria_256_cbc, "ARIA256"); 226e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_aria_256_cbc, "aria256"); 227e1051a39Sopenharmony_ci#endif 228e1051a39Sopenharmony_ci 229e1051a39Sopenharmony_ci#ifndef OPENSSL_NO_CAMELLIA 230e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_128_ecb()); 231e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_128_cbc()); 232e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_128_cfb()); 233e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_128_cfb1()); 234e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_128_cfb8()); 235e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_128_ofb()); 236e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_camellia_128_cbc, "CAMELLIA128"); 237e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_camellia_128_cbc, "camellia128"); 238e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_192_ecb()); 239e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_192_cbc()); 240e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_192_cfb()); 241e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_192_cfb1()); 242e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_192_cfb8()); 243e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_192_ofb()); 244e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_camellia_192_cbc, "CAMELLIA192"); 245e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_camellia_192_cbc, "camellia192"); 246e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_256_ecb()); 247e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_256_cbc()); 248e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_256_cfb()); 249e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_256_cfb1()); 250e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_256_cfb8()); 251e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_256_ofb()); 252e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_camellia_256_cbc, "CAMELLIA256"); 253e1051a39Sopenharmony_ci EVP_add_cipher_alias(SN_camellia_256_cbc, "camellia256"); 254e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_128_ctr()); 255e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_192_ctr()); 256e1051a39Sopenharmony_ci EVP_add_cipher(EVP_camellia_256_ctr()); 257e1051a39Sopenharmony_ci#endif 258e1051a39Sopenharmony_ci 259e1051a39Sopenharmony_ci#ifndef OPENSSL_NO_CHACHA 260e1051a39Sopenharmony_ci EVP_add_cipher(EVP_chacha20()); 261e1051a39Sopenharmony_ci# ifndef OPENSSL_NO_POLY1305 262e1051a39Sopenharmony_ci EVP_add_cipher(EVP_chacha20_poly1305()); 263e1051a39Sopenharmony_ci# endif 264e1051a39Sopenharmony_ci#endif 265e1051a39Sopenharmony_ci} 266