/*
 * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the \"License\").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */

{-
use OpenSSL::paramnames qw(produce_param_decoder);
-}

{- produce_param_decoder('ossl_cipher_generic_get_params',
                         (['OSSL_CIPHER_PARAM_MODE',             'mode',   'uint'],
                          ['OSSL_CIPHER_PARAM_KEYLEN',           'keylen', 'size_t'],
                          ['OSSL_CIPHER_PARAM_IVLEN',            'ivlen',  'size_t'],
                          ['OSSL_CIPHER_PARAM_BLOCK_SIZE',       'bsize',  'size_t'],
                          ['OSSL_CIPHER_PARAM_AEAD',             'aead',   'int' ],
                          ['OSSL_CIPHER_PARAM_CUSTOM_IV',        'custiv', 'int' ],
                          ['OSSL_CIPHER_PARAM_CTS',              'cts',    'int' ],
                          ['OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK',  'mb',     'int' ],
                          ['OSSL_CIPHER_PARAM_HAS_RAND_KEY',     'rand',   'int' ],
                          ['OSSL_CIPHER_PARAM_ENCRYPT_THEN_MAC', 'etm',    'int' ],
                         )); -}

{- produce_param_decoder('cipher_generic_get_ctx_params',
                         (['OSSL_CIPHER_PARAM_KEYLEN',     'keylen', 'size_t'],
                          ['OSSL_CIPHER_PARAM_IVLEN',      'ivlen',  'size_t'],
                          ['OSSL_CIPHER_PARAM_PADDING',    'pad',    'uint'],
                          ['OSSL_CIPHER_PARAM_NUM',        'num',    'uint' ],
                          ['OSSL_CIPHER_PARAM_IV',         'iv',     'octet_string' ],
                          ['OSSL_CIPHER_PARAM_UPDATED_IV', 'updiv',  'octet_string' ],
                          ['OSSL_CIPHER_PARAM_TLS_MAC',    'tlsmac', 'octet_string' ],
                         )); -}

{- produce_param_decoder('cipher_generic_set_ctx_params',
                         (['OSSL_CIPHER_PARAM_PADDING',      'pad',         'uint'],
                          ['OSSL_CIPHER_PARAM_NUM',          'num',         'uint'],
                          ['OSSL_CIPHER_PARAM_USE_BITS',     'bits',        'uint'],
                          ['OSSL_CIPHER_PARAM_TLS_VERSION',  'tlsvers',     'uint'],
                          ['OSSL_CIPHER_PARAM_TLS_MAC_SIZE', 'tlsmacsize',  'size_t'],
                         )); -}

{- produce_param_decoder('cipher_var_keylen_set_ctx_params',
                         (['OSSL_CIPHER_PARAM_PADDING',      'pad',         'uint'],
                          ['OSSL_CIPHER_PARAM_NUM',          'num',         'uint'],
                          ['OSSL_CIPHER_PARAM_USE_BITS',     'bits',        'uint'],
                          ['OSSL_CIPHER_PARAM_TLS_VERSION',  'tlsvers',     'uint'],
                          ['OSSL_CIPHER_PARAM_TLS_MAC_SIZE', 'tlsmacsize',  'size_t'],
                          ['OSSL_CIPHER_PARAM_KEYLEN',       'keylen',      'size_t'],
                         )); -}
