/*!
    \ingroup Curve448

    \brief この関数は、与えられた乱数生成器rngを使用して、与えられたサイズ（keysize）のCurve448鍵を生成し、与えられたcurve448_key構造体に格納します。wc_curve448_init()を通じて鍵構造体が初期化された後に呼び出す必要があります。

    \return 0 鍵の生成に成功し、与えられたcurve448_key構造体に格納された場合に返されます。
    \return ECC_BAD_ARG_E 入力keysizeがcurve448鍵のkeysizeに対応していない場合（56バイト）に返されます。
    \return RNG_FAILURE_E rng内部ステータスがDRBG_OKでない場合、またはrngで次のランダムブロックを生成する際にエラーがある場合に返されます。
    \return BAD_FUNC_ARG 渡された入力パラメータのいずれかがNULLの場合に返されます。

    \param [in] rng ecc鍵を生成するために使用されるRNGオブジェクトへのポインタ。
    \param [in] keysize 生成する鍵のサイズ。curve448では56バイトである必要があります。
    \param [in,out] key 生成された鍵を格納するcurve448_key構造体へのポインタ。

    _Example_
    \code
    int ret;

    curve448_key key;
    wc_curve448_init(&key); // 鍵を初期化
    WC_RNG rng;
    wc_InitRng(&rng); // 乱数生成器を初期化

    ret = wc_curve448_make_key(&rng, 56, &key);
    if (ret != 0) {
        // Curve448鍵作成エラー
    }
    \endcode

    \sa wc_curve448_init
*/

int wc_curve448_make_key(WC_RNG* rng, int keysize, curve448_key* key);

/*!
    \ingroup Curve448

    \brief この関数は、秘密の秘密鍵と受信した公開鍵を与えられた共有秘密鍵を計算します。生成された秘密鍵をバッファoutに格納し、秘密鍵の変数をoutlenに割り当てます。ビッグエンディアンのみをサポートします。

    \return 0 共有秘密鍵の計算に成功した場合に返されます。
    \return BAD_FUNC_ARG 渡された入力パラメータのいずれかがNULLの場合に返されます。

    \param [in] private_key ユーザーの秘密鍵で初期化されたcurve448_key構造体へのポインタ。
    \param [in] public_key 受信した公開鍵を含むcurve448_key構造体へのポインタ。
    \param [out] out 56バイトの計算された秘密鍵を格納するバッファへのポインタ。
    \param [in,out] outlen 出力バッファに書き込まれた長さを格納するポインタ。

    _Example_
    \code
    int ret;

    byte sharedKey[56];
    word32 keySz;
    curve448_key privKey, pubKey;
    // 両方の鍵を初期化

    ret = wc_curve448_shared_secret(&privKey, &pubKey, sharedKey, &keySz);
    if (ret != 0) {
        // 共有鍵生成エラー
    }
    \endcode

    \sa wc_curve448_init
    \sa wc_curve448_make_key
    \sa wc_curve448_shared_secret_ex
*/

int wc_curve448_shared_secret(curve448_key* private_key,
                                curve448_key* public_key,
                                byte* out, word32* outlen);

/*!
    \ingroup Curve448

    \brief この関数は、秘密の秘密鍵と受信した公開鍵を与えられた共有秘密鍵を計算します。生成された秘密鍵をバッファoutに格納し、秘密鍵の変数をoutlenに割り当てます。ビッグエンディアンとリトルエンディアンの両方をサポートします。

    \return 0 共有秘密鍵の計算に成功した場合に返されます。
    \return BAD_FUNC_ARG 渡された入力パラメータのいずれかがNULLの場合に返されます。

    \param [in] private_key ユーザーの秘密鍵で初期化されたcurve448_key構造体へのポインタ。
    \param [in] public_key 受信した公開鍵を含むcurve448_key構造体へのポインタ。
    \param [out] out 56バイトの計算された秘密鍵を格納するバッファへのポインタ。
    \param [in,out] outlen 出力バッファに書き込まれた長さを格納するポインタ。
    \param [in] endian 使用する形式を設定するためのEC448_BIG_ENDIANまたはEC448_LITTLE_ENDIAN。

    _Example_
    \code
    int ret;

    byte sharedKey[56];
    word32 keySz;

    curve448_key privKey, pubKey;
    // 両方の鍵を初期化

    ret = wc_curve448_shared_secret_ex(&privKey, &pubKey, sharedKey, &keySz,
            EC448_BIG_ENDIAN);
    if (ret != 0) {
        // 共有鍵生成エラー
    }
    \endcode

    \sa wc_curve448_init
    \sa wc_curve448_make_key
    \sa wc_curve448_shared_secret
*/

int wc_curve448_shared_secret_ex(curve448_key* private_key,
                                   curve448_key* public_key,
                                   byte* out, word32* outlen, int endian);

/*!
    \ingroup Curve448

    \brief この関数はCurve448鍵を初期化します。構造体の鍵を生成する前に呼び出す必要があります。

    \return 0 curve448_key構造体の初期化に成功した場合に返されます。
    \return BAD_FUNC_ARG keyがNULLの場合に返されます。

    \param [in,out] key 初期化するcurve448_key構造体へのポインタ。

    _Example_
    \code
    curve448_key key;
    wc_curve448_init(&key); // 鍵を初期化
    // 鍵を作成し、暗号化に進む
    \endcode

    \sa wc_curve448_make_key
*/

int wc_curve448_init(curve448_key* key);

/*!
    \ingroup Curve448

    \brief この関数はCurve448オブジェクトを解放します。

    \param [in,out] key 解放する鍵オブジェクトへのポインタ。

    _Example_
    \code
    curve448_key privKey;
    // 鍵を初期化し、共有秘密鍵の生成に使用
    wc_curve448_free(&privKey);
    \endcode

    \sa wc_curve448_init
    \sa wc_curve448_make_key
*/

void wc_curve448_free(curve448_key* key);

/*!
    \ingroup Curve448

    \brief この関数はcurve448秘密鍵のみをインポートします。（ビッグエンディアン）

    \return 0 秘密鍵のインポートに成功した場合に返されます。
    \return BAD_FUNC_ARG keyまたはprivがnullの場合に返されます。
    \return ECC_BAD_ARG_E privSzがCURVE448_KEY_SIZEと等しくない場合に返されます。

    \param [in] priv インポートする秘密鍵を含むバッファへのポインタ。
    \param [in] privSz インポートする秘密鍵の長さ。
    \param [in,out] key インポートされた鍵を格納する構造体へのポインタ。

    _Example_
    \code
    int ret;

    byte priv[] = { // 秘密鍵の内容 };
    curve448_key key;
    wc_curve448_init(&key);

    ret = wc_curve448_import_private(priv, sizeof(priv), &key);
    if (ret != 0) {
        // 鍵のインポートエラー
    }
    \endcode

    \sa wc_curve448_import_private_ex
    \sa wc_curve448_size
*/

int wc_curve448_import_private(const byte* priv, word32 privSz,
                                 curve448_key* key);

/*!
    \ingroup Curve448

    \brief curve448秘密鍵のみのインポート。（ビッグエンディアンまたはリトルエンディアン）

    \return 0 秘密鍵のインポートに成功した場合に返されます。
    \return BAD_FUNC_ARG keyまたはprivがnullの場合に返されます。
    \return ECC_BAD_ARG_E privSzがCURVE448_KEY_SIZEと等しくない場合に返されます。

    \param [in] priv インポートする秘密鍵を含むバッファへのポインタ。
    \param [in] privSz インポートする秘密鍵の長さ。
    \param [in,out] key インポートされた鍵を格納する構造体へのポインタ。
    \param [in] endian 使用する形式を設定するためのEC448_BIG_ENDIANまたはEC448_LITTLE_ENDIAN。

    _Example_
    \code
    int ret;

    byte priv[] = { // 秘密鍵の内容 };
    curve448_key key;
    wc_curve448_init(&key);

    ret = wc_curve448_import_private_ex(priv, sizeof(priv), &key,
            EC448_BIG_ENDIAN);
    if (ret != 0) {
        // 鍵のインポートエラー
    }

    \endcode

    \sa wc_curve448_import_private
    \sa wc_curve448_size
*/

int wc_curve448_import_private_ex(const byte* priv, word32 privSz,
                                    curve448_key* key, int endian);

/*!
    \ingroup Curve448

    \brief この関数は、公開鍵-秘密鍵ペアをcurve448_key構造体にインポートします。ビッグエンディアンのみ。

    \return 0 curve448_key構造体へのインポートに成功した場合に返されます。
    \return BAD_FUNC_ARG 入力パラメータのいずれかがnullの場合に返されます。
    \return ECC_BAD_ARG_E 入力鍵の鍵サイズが公開鍵または秘密鍵のサイズと一致しない場合に返されます。

    \param [in] priv インポートする秘密鍵を含むバッファへのポインタ。
    \param [in] privSz インポートする秘密鍵の長さ。
    \param [in] pub インポートする公開鍵を含むバッファへのポインタ。
    \param [in] pubSz インポートする公開鍵の長さ。
    \param [in,out] key インポートされた鍵を格納する構造体へのポインタ。

    _Example_
    \code
    int ret;

    byte priv[56];
    byte pub[56];
    // 公開鍵と秘密鍵で初期化
    curve448_key key;

    wc_curve448_init(&key);
    // 鍵を初期化

    ret = wc_curve448_import_private_raw(&priv, sizeof(priv), pub, sizeof(pub),
            &key);
    if (ret != 0) {
        // 鍵のインポートエラー
    }
    \endcode

    \sa wc_curve448_init
    \sa wc_curve448_make_key
    \sa wc_curve448_import_public
    \sa wc_curve448_export_private_raw
*/

int wc_curve448_import_private_raw(const byte* priv, word32 privSz,
                            const byte* pub, word32 pubSz, curve448_key* key);

/*!
    \ingroup Curve448

    \brief この関数は、公開鍵-秘密鍵ペアをcurve448_key構造体にインポートします。ビッグエンディアンとリトルエンディアンの両方をサポートします。

    \return 0 curve448_key構造体へのインポートに成功した場合に返されます。
    \return BAD_FUNC_ARG 入力パラメータのいずれかがnullの場合に返されます。
    \return ECC_BAD_ARG_E 入力鍵の鍵サイズが公開鍵または秘密鍵のサイズと一致しない場合に返されます。

    \param [in] priv インポートする秘密鍵を含むバッファへのポインタ。
    \param [in] privSz インポートする秘密鍵の長さ。
    \param [in] pub インポートする公開鍵を含むバッファへのポインタ。
    \param [in] pubSz インポートする公開鍵の長さ。
    \param [in,out] key インポートされた鍵を格納する構造体へのポインタ。
    \param [in]  endian 使用する形式を設定するためのEC448_BIG_ENDIANまたはEC448_LITTLE_ENDIAN。

    _Example_
    \code
    int ret;

    byte priv[56];
    byte pub[56];
    // 公開鍵と秘密鍵で初期化
    curve448_key key;

    wc_curve448_init(&key);
    // 鍵を初期化

    ret = wc_curve448_import_private_raw_ex(&priv, sizeof(priv), pub,
            sizeof(pub), &key, EC448_BIG_ENDIAN);
    if (ret != 0) {
        // 鍵のインポートエラー
    }
    \endcode

    \sa wc_curve448_init
    \sa wc_curve448_make_key
    \sa wc_curve448_import_public
    \sa wc_curve448_export_private_raw
    \sa wc_curve448_import_private_raw
*/

int wc_curve448_import_private_raw_ex(const byte* priv, word32 privSz,
                                        const byte* pub, word32 pubSz,
                                        curve448_key* key, int endian);

/*!
    \ingroup Curve448

    \brief この関数は、curve448_key構造体から秘密鍵をエクスポートし、与えられたoutバッファに格納します。また、outLenをエクスポートされた鍵のサイズに設定します。ビッグエンディアンのみ。

    \return 0 curve448_key構造体から秘密鍵のエクスポートに成功した場合に返されます。
    \return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
    \return ECC_BAD_ARG_E wc_curve448_size()がkeyと等しくない場合に返されます。

    \param [in] key 鍵をエクスポートする構造体へのポインタ。
    \param [out] out エクスポートされた鍵を格納するバッファへのポインタ。
    \param [in,out] outLen 入力時は、outのバイト単位のサイズ。
    出力時は、出力バッファに書き込まれたバイト数を格納します。

    _Example_
    \code
    int ret;
    byte priv[56];
    int privSz;

    curve448_key key;
    // 鍵を初期化して作成

    ret = wc_curve448_export_private_raw(&key, priv, &privSz);
    if (ret != 0) {
        // 鍵のエクスポートエラー
    }
    \endcode

    \sa wc_curve448_init
    \sa wc_curve448_make_key
    \sa wc_curve448_import_private_raw
    \sa wc_curve448_export_private_raw_ex
*/

int wc_curve448_export_private_raw(curve448_key* key, byte* out,
                                     word32* outLen);

/*!
    \ingroup Curve448

    \brief この関数は、curve448_key構造体から秘密鍵をエクスポートし、与えられたoutバッファに格納します。また、outLenをエクスポートされた鍵のサイズに設定します。ビッグエンディアンまたはリトルエンディアンを指定できます。

    \return 0 curve448_key構造体から秘密鍵のエクスポートに成功した場合に返されます。
    \return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
    \return ECC_BAD_ARG_E wc_curve448_size()がkeyと等しくない場合に返されます。

    \param [in] key 鍵をエクスポートする構造体へのポインタ。
    \param [out] out エクスポートされた鍵を格納するバッファへのポインタ。
    \param [in,out] outLen 入力時は、outのバイト単位のサイズ。
    出力時は、出力バッファに書き込まれたバイト数を格納します。
    \param [in] endian 使用する形式を設定するためのEC448_BIG_ENDIANまたはEC448_LITTLE_ENDIAN。

    _Example_
    \code
    int ret;

    byte priv[56];
    int privSz;
    curve448_key key;
    // 鍵を初期化して作成
    ret = wc_curve448_export_private_raw_ex(&key, priv, &privSz,
            EC448_BIG_ENDIAN);
    if (ret != 0) {
        // 鍵のエクスポートエラー
    }
    \endcode

    \sa wc_curve448_init
    \sa wc_curve448_make_key
    \sa wc_curve448_import_private_raw
    \sa wc_curve448_export_private_raw
    \sa wc_curve448_size
*/

int wc_curve448_export_private_raw_ex(curve448_key* key, byte* out,
                                        word32* outLen, int endian);

/*!
    \ingroup Curve448

    \brief この関数は、与えられたinバッファから公開鍵をインポートし、curve448_key構造体に格納します。

    \return 0 curve448_key構造体への公開鍵のインポートに成功した場合に返されます。
    \return ECC_BAD_ARG_E inLenパラメータが鍵構造体の鍵サイズと一致しない場合に返されます。
    \return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。

    \param [in] in インポートする公開鍵を含むバッファへのポインタ。
    \param [in] inLen インポートする公開鍵の長さ。
    \param [in,out] key 鍵を格納するcurve448_key構造体へのポインタ。

    _Example_
    \code
    int ret;

    byte pub[56];
    // pubを公開鍵で初期化

    curve448_key key;
    // 鍵を初期化

    ret = wc_curve448_import_public(pub,sizeof(pub), &key);
    if (ret != 0) {
        // 鍵のインポートエラー
    }
    \endcode

    \sa wc_curve448_init
    \sa wc_curve448_export_public
    \sa wc_curve448_import_private_raw
    \sa wc_curve448_import_public_ex
    \sa wc_curve448_check_public
    \sa wc_curve448_size
*/

int wc_curve448_import_public(const byte* in, word32 inLen,
                                curve448_key* key);

/*!
    \ingroup Curve448

    \brief この関数は、与えられたinバッファから公開鍵をインポートし、curve448_key構造体に格納します。

    \return 0 curve448_key構造体への公開鍵のインポートに成功した場合に返されます。
    \return ECC_BAD_ARG_E inLenパラメータが鍵構造体の鍵サイズと一致しない場合に返されます。
    \return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。

    \param [in] in インポートする公開鍵を含むバッファへのポインタ。
    \param [in] inLen インポートする公開鍵の長さ。
    \param [in,out] key 鍵を格納するcurve448_key構造体へのポインタ。
    \param [in] endian 使用する形式を設定するためのEC448_BIG_ENDIANまたはEC448_LITTLE_ENDIAN。

    _Example_
    \code
    int ret;

    byte pub[56];
    // pubを公開鍵で初期化
    curve448_key key;
    // 鍵を初期化

    ret = wc_curve448_import_public_ex(pub, sizeof(pub), &key,
            EC448_BIG_ENDIAN);
    if (ret != 0) {
        // 鍵のインポートエラー
    }
    \endcode

    \sa wc_curve448_init
    \sa wc_curve448_export_public
    \sa wc_curve448_import_private_raw
    \sa wc_curve448_import_public
    \sa wc_curve448_check_public
    \sa wc_curve448_size
*/

int wc_curve448_import_public_ex(const byte* in, word32 inLen,
                                   curve448_key* key, int endian);

/*!
    \ingroup Curve448

    \brief この関数は、エンディアン順序を考慮して、公開鍵バッファが有効なCurve448鍵値を保持しているかどうかをチェックします。

    \return 0 公開鍵の値が有効な場合に返されます。
    \return ECC_BAD_ARG_E 公開鍵の値が有効でない場合に返されます。
    \return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。

    \param [in] pub チェックする公開鍵を含むバッファへのポインタ。
    \param [in] pubSz チェックする公開鍵の長さ。
    \param [in] endian 使用する形式を設定するためのEC448_BIG_ENDIANまたはEC448_LITTLE_ENDIAN。

    _Example_
    \code
    int ret;

    byte pub[] = { // 公開鍵の内容 };

    ret = wc_curve448_check_public_ex(pub, sizeof(pub), EC448_BIG_ENDIAN);
    if (ret != 0) {
        // 鍵のインポートエラー
    }
    \endcode

    \sa wc_curve448_init
    \sa wc_curve448_import_public
    \sa wc_curve448_import_public_ex
    \sa wc_curve448_size
*/

int wc_curve448_check_public(const byte* pub, word32 pubSz, int endian);

/*!
    \ingroup Curve448

    \brief この関数は、与えられた鍵構造体から公開鍵をエクスポートし、結果をoutバッファに格納します。ビッグエンディアンのみ。

    \return 0 curve448_key構造体から公開鍵のエクスポートに成功した場合に返されます。
    \return ECC_BAD_ARG_E outLenがCURVE448_PUB_KEY_SIZEより小さい場合に返されます。
    \return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。

    \param [in] key 鍵をエクスポートするcurve448_key構造体へのポインタ。
    \param [out] out 公開鍵を格納するバッファへのポインタ。
    \param [in,out] outLen 入力時は、outのバイト単位のサイズ。
    出力時は、出力バッファに書き込まれたバイト数を格納します。

    _Example_
    \code
    int ret;

    byte pub[56];
    int pubSz;

    curve448_key key;
    // 鍵を初期化して作成

    ret = wc_curve448_export_public(&key, pub, &pubSz);
    if (ret != 0) {
        // 鍵のエクスポートエラー
    }
    \endcode

    \sa wc_curve448_init
    \sa wc_curve448_export_private_raw
    \sa wc_curve448_import_public
*/

int wc_curve448_export_public(curve448_key* key, byte* out, word32* outLen);

/*!
    \ingroup Curve448

    \brief この関数は、与えられた鍵構造体から公開鍵をエクスポートし、結果をoutバッファに格納します。ビッグエンディアンとリトルエンディアンの両方をサポートします。

    \return 0 curve448_key構造体から公開鍵のエクスポートに成功した場合に返されます。
    \return ECC_BAD_ARG_E outLenがCURVE448_PUB_KEY_SIZEより小さい場合に返されます。
    \return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。

    \param [in] key 鍵をエクスポートするcurve448_key構造体へのポインタ。
    \param [out] out 公開鍵を格納するバッファへのポインタ。
    \param [in,out] outLen 入力時は、outのバイト単位のサイズ。
    出力時は、出力バッファに書き込まれたバイト数を格納します。
    \param [in] endian 使用する形式を設定するためのEC448_BIG_ENDIANまたはEC448_LITTLE_ENDIAN。

    _Example_
    \code
    int ret;

    byte pub[56];
    int pubSz;

    curve448_key key;
    // 鍵を初期化して作成

    ret = wc_curve448_export_public_ex(&key, pub, &pubSz, EC448_BIG_ENDIAN);
    if (ret != 0) {
        // 鍵のエクスポートエラー
    }
    \endcode

    \sa wc_curve448_init
    \sa wc_curve448_export_private_raw
    \sa wc_curve448_import_public
*/

int wc_curve448_export_public_ex(curve448_key* key, byte* out,
                                   word32* outLen, int endian);

/*!
    \ingroup Curve448

    \brief この関数は、与えられた鍵構造体から鍵ペアをエクスポートし、結果をoutバッファに格納します。ビッグエンディアンのみ。

    \return 0 curve448_key構造体から鍵ペアのエクスポートに成功した場合に返されます。
    \return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
    \return ECC_BAD_ARG_E privSzがCURVE448_KEY_SIZEより小さい、またはpubSzがCURVE448_PUB_KEY_SIZEより小さい場合に返されます。

    \param [in] key 鍵ペアをエクスポートするcurve448_key構造体へのポインタ。
    \param [out] priv 秘密鍵を格納するバッファへのポインタ。
    \param [in,out] privSz 入力時は、privバッファのバイト単位のサイズ。
    出力時は、privバッファに書き込まれたバイト数を格納します。
    \param [out] pub 公開鍵を格納するバッファへのポインタ。
    \param [in,out] pubSz 入力時は、pubバッファのバイト単位のサイズ。
    出力時は、pubバッファに書き込まれたバイト数を格納します。

    _Example_
    \code
    int ret;

    byte pub[56];
    byte priv[56];
    int pubSz;
    int privSz;

    curve448_key key;
    // 鍵を初期化して作成

    ret = wc_curve448_export_key_raw(&key, priv, &privSz, pub, &pubSz);
    if (ret != 0) {
        // 鍵のエクスポートエラー
    }
    \endcode

    \sa wc_curve448_export_key_raw_ex
    \sa wc_curve448_export_private_raw
*/

int wc_curve448_export_key_raw(curve448_key* key,
                                 byte* priv, word32 *privSz,
                                 byte* pub, word32 *pubSz);

/*!
    \ingroup Curve448

    \brief curve448鍵ペアをエクスポートします。ビッグエンディアンまたはリトルエンディアン。
    \brief この関数は、与えられた鍵構造体から鍵ペアをエクスポートし、結果をoutバッファに格納します。ビッグエンディアンまたはリトルエンディアン。

    \return 0 成功。
    \return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
    \return ECC_BAD_ARG_E privSzがCURVE448_KEY_SIZEより小さい、またはpubSzがCURVE448_PUB_KEY_SIZEより小さい場合に返されます。

    \param [in] key 鍵ペアをエクスポートするcurve448_key構造体へのポインタ。
    \param [out] priv 秘密鍵を格納するバッファへのポインタ。
    \param [in,out] privSz 入力時は、privバッファのバイト単位のサイズ。
    出力時は、privバッファに書き込まれたバイト数を格納します。
    \param [out] pub 公開鍵を格納するバッファへのポインタ。
    \param [in,out] pubSz 入力時は、pubバッファのバイト単位のサイズ。
    出力時は、pubバッファに書き込まれたバイト数を格納します。
    \param [in] endian 使用する形式を設定するためのEC448_BIG_ENDIANまたはEC448_LITTLE_ENDIAN。

    _Example_
    \code
    int ret;

    byte pub[56];
    byte priv[56];
    int pubSz;
    int privSz;

    curve448_key key;
    // 鍵を初期化して作成

    ret = wc_curve448_export_key_raw_ex(&key,priv, &privSz, pub, &pubSz,
            EC448_BIG_ENDIAN);
    if (ret != 0) {
        // 鍵のエクスポートエラー
    }
    \endcode

    \sa wc_curve448_export_key_raw
    \sa wc_curve448_export_private_raw_ex
    \sa wc_curve448_export_public_ex
*/

int wc_curve448_export_key_raw_ex(curve448_key* key,
                                    byte* priv, word32 *privSz,
                                    byte* pub, word32 *pubSz,
                                    int endian);

/*!
    \ingroup Curve448

    \brief この関数は、与えられた鍵構造体の鍵サイズを返します。

    \return Success 有効で初期化されたcurve448_key構造体が与えられた場合、鍵のサイズを返します。
    \return 0 keyがNULLの場合に返されます。

    \param [in] key 鍵サイズを決定するcurve448_key構造体へのポインタ。

    _Example_
    \code
    int keySz;

    curve448_key key;
    // 鍵を初期化して作成

    keySz = wc_curve448_size(&key);
    \endcode

    \sa wc_curve448_init
    \sa wc_curve448_make_key
*/

int wc_curve448_size(curve448_key* key);
