1
0

curve448.h 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576
  1. /*!
  2. \ingroup Curve448
  3. \brief この関数は、与えられたサイズ(Keysize)のサイズの指定された乱数発生器RNGを使用してCurve448キーを生成し、それを指定されたCurve448_Key構造体に格納します。キー構造がWC_CURVE448_INIT()を介して初期化された後に呼び出されるべきです。
  4. \return 0 キーの生成に成功し、それを指定されたCurve448_Key構造体に格納します。
  5. \return ECC_BAD_ARG_E 入力キーサイズがCurve448キー(56バイト)のキーシェイズに対応していない場合は返されます。
  6. \return RNG_FAILURE_E RNGの内部ステータスがDRBG_OKでない場合、またはRNGを使用して次のランダムブロックを生成する場合に返されます。
  7. \return BAD_FUNC_ARG 渡された入力パラメータのいずれかがNULLの場合に返されます。
  8. \param [in] RNG ECCキーの生成に使用されるRNGオブジェクトへのポインタ。
  9. \param [in] キーサイズ生成キーのサイズ。Curve448の場合は56バイトでなければなりません。
  10. _Example_
  11. \code
  12. int ret;
  13. curve448_key key;
  14. wc_curve448_init(&key); // initialize key
  15. WC_RNG rng;
  16. wc_InitRng(&rng); // initialize random number generator
  17. ret = wc_curve448_make_key(&rng, 56, &key);
  18. if (ret != 0) {
  19. // error making Curve448 key
  20. }
  21. \endcode
  22. \sa wc_curve448_init
  23. */
  24. int wc_curve448_make_key(WC_RNG* rng, int keysize, curve448_key* key);
  25. /*!
  26. \ingroup Curve448
  27. \brief この関数は、秘密の秘密鍵と受信した公開鍵を考えると、共有秘密鍵を計算します。生成された秘密鍵をバッファアウトに保存し、ounlentの秘密鍵の変数を割り当てます。ビッグエンディアンのみをサポートします。
  28. \return 0 共有秘密鍵を正常に計算する上で返却されました
  29. \return BAD_FUNC_ARG 渡された入力パラメーターのいずれかがNULLの場合に返されます
  30. \param [in] Private_Key Curve448_Key構造体へのポインタユーザーの秘密鍵で初期化されました。
  31. \param [in] public_key受信した公開鍵を含むCurve448_Key構造体へのポインタ。
  32. \param [out] 56バイトの計算された秘密鍵を保存するバッファへのポインタ。
  33. _Example_
  34. \code
  35. int ret;
  36. byte sharedKey[56];
  37. word32 keySz;
  38. curve448_key privKey, pubKey;
  39. // initialize both keys
  40. ret = wc_curve448_shared_secret(&privKey, &pubKey, sharedKey, &keySz);
  41. if (ret != 0) {
  42. // error generating shared key
  43. }
  44. \endcode
  45. \sa wc_curve448_init
  46. \sa wc_curve448_make_key
  47. \sa wc_curve448_shared_secret_ex
  48. */
  49. int wc_curve448_shared_secret(curve448_key* private_key,
  50. curve448_key* public_key,
  51. byte* out, word32* outlen);
  52. /*!
  53. \ingroup Curve448
  54. \brief この関数は、秘密の秘密鍵と受信した公開鍵を考えると、共有秘密鍵を計算します。生成された秘密鍵をバッファアウトに保存し、ounlentの秘密鍵の変数を割り当てます。ビッグ・リトルエンディアンの両方をサポートします。
  55. \return 0 共有秘密鍵を正常に計算したときに返されました。
  56. \return BAD_FUNC_ARG 渡された入力パラメータのいずれかがNULLの場合に返されます。
  57. \param [in] Private_Key Curve448_Key構造体へのポインタユーザーの秘密鍵で初期化されました。
  58. \param [in] public_key受信した公開鍵を含むCurve448_Key構造体へのポインタ。
  59. \param [out] 56バイトの計算された秘密鍵を保存するバッファへのポインタ。
  60. \param [in,out] 出力バッファに書き込まれた長さを記憶するポインタの概要。
  61. _Example_
  62. \code
  63. int ret;
  64. byte sharedKey[56];
  65. word32 keySz;
  66. curve448_key privKey, pubKey;
  67. // initialize both keys
  68. ret = wc_curve448_shared_secret_ex(&privKey, &pubKey, sharedKey, &keySz,
  69. EC448_BIG_ENDIAN);
  70. if (ret != 0) {
  71. // error generating shared key
  72. }
  73. \endcode
  74. \sa wc_curve448_init
  75. \sa wc_curve448_make_key
  76. \sa wc_curve448_shared_secret
  77. */
  78. int wc_curve448_shared_secret_ex(curve448_key* private_key,
  79. curve448_key* public_key,
  80. byte* out, word32* outlen, int endian);
  81. /*!
  82. \ingroup Curve448
  83. \brief この関数はCurve448キーを初期化します。構造のキーを生成する前に呼び出されるべきです。
  84. \return 0 Curve448_Key構造体の初期化に成功しました。
  85. \return BAD_FUNC_ARG キーがNULLのときに返されます。
  86. _Example_
  87. \code
  88. curve448_key key;
  89. wc_curve448_init(&key); // initialize key
  90. // make key and proceed to encryption
  91. \endcode
  92. \sa wc_curve448_make_key
  93. */
  94. int wc_curve448_init(curve448_key* key);
  95. /*!
  96. \ingroup Curve448
  97. \brief この関数はCurve448オブジェクトを解放します。
  98. _Example_
  99. \code
  100. curve448_key privKey;
  101. // initialize key, use it to generate shared secret key
  102. wc_curve448_free(&privKey);
  103. \endcode
  104. \sa wc_curve448_init
  105. \sa wc_curve448_make_key
  106. */
  107. void wc_curve448_free(curve448_key* key);
  108. /*!
  109. \ingroup Curve448
  110. \brief この関数はCurve448秘密鍵のみをインポートします。(ビッグエンディアン)。
  111. \return 0 秘密鍵のインポートに成功しました。
  112. \return BAD_FUNC_ARG キーまたはPRIVがNULLの場合は返します。
  113. \return ECC_BAD_ARG_E PRIVSZがCURUG448_KEY_SIZEと等しくない場合は返します。
  114. \param [in] インポートする秘密鍵を含むバッファへのポイント。
  115. \param [in] インポートする秘密鍵のPrivsz長。
  116. _Example_
  117. \code
  118. int ret;
  119. byte priv[] = { Contents of private key };
  120. curve448_key key;
  121. wc_curve448_init(&key);
  122. ret = wc_curve448_import_private(priv, sizeof(priv), &key);
  123. if (ret != 0) {
  124. // error importing key
  125. }
  126. \endcode
  127. \sa wc_curve448_import_private_ex
  128. \sa wc_curve448_size
  129. */
  130. int wc_curve448_import_private(const byte* priv, word32 privSz,
  131. curve448_key* key);
  132. /*!
  133. \ingroup Curve448
  134. \brief CURVE448秘密鍵のインポートのみ。(ビッグエンディアン)。
  135. \return 0 秘密鍵のインポートに成功しました。
  136. \return BAD_FUNC_ARG キーまたはPRIVがNULLの場合は返します。
  137. \return ECC_BAD_ARG_E PRIVSZがCURUG448_KEY_SIZEと等しくない場合は返します。
  138. \param [in] インポートする秘密鍵を含むバッファへのポイント。
  139. \param [in] インポートする秘密鍵のPrivsz長。
  140. \param [in,out] インポートされたキーを保存する構造へのキーポインタ。
  141. _Example_
  142. \code
  143. int ret;
  144. byte priv[] = { // Contents of private key };
  145. curve448_key key;
  146. wc_curve448_init(&key);
  147. ret = wc_curve448_import_private_ex(priv, sizeof(priv), &key,
  148. EC448_BIG_ENDIAN);
  149. if (ret != 0) {
  150. // error importing key
  151. }
  152. \endcode
  153. \sa wc_curve448_import_private
  154. \sa wc_curve448_size
  155. */
  156. int wc_curve448_import_private_ex(const byte* priv, word32 privSz,
  157. curve448_key* key, int endian);
  158. /*!
  159. \ingroup Curve448
  160. \brief この関数は、public-秘密鍵のペアをCurve448_Key構造体にインポートします。ビッグエンディアンのみ。
  161. \return 0 Curve448_Key構造体へのインポート時に返されます。
  162. \return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返します。
  163. \return ECC_BAD_ARG_E 入力キーのキーサイズがPublicキーサイズまたは秘密鍵サイズと一致しない場合に返されます。
  164. \param [in] インポートする秘密鍵を含むバッファへのポイント。
  165. \param [in] インポートする秘密鍵のPrivsz長。
  166. \param [in] パブリックキーをインポートするバッファへのPub。
  167. \param [in] インポートする公開鍵のPubsz長さ。
  168. _Example_
  169. \code
  170. int ret;
  171. byte priv[56];
  172. byte pub[56];
  173. // initialize with public and private keys
  174. curve448_key key;
  175. wc_curve448_init(&key);
  176. // initialize key
  177. ret = wc_curve448_import_private_raw(&priv, sizeof(priv), pub, sizeof(pub),
  178. &key);
  179. if (ret != 0) {
  180. // error importing keys
  181. }
  182. \endcode
  183. \sa wc_curve448_init
  184. \sa wc_curve448_make_key
  185. \sa wc_curve448_import_public
  186. \sa wc_curve448_export_private_raw
  187. */
  188. int wc_curve448_import_private_raw(const byte* priv, word32 privSz,
  189. const byte* pub, word32 pubSz, curve448_key* key);
  190. /*!
  191. \ingroup Curve448
  192. \brief この関数は、public-秘密鍵のペアをCurve448_Key構造体にインポートします。ビッグ・リトルエンディアンの両方をサポートします。
  193. \return 0 Curve448_Key構造体へのインポート時に返されます。
  194. \return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返します。
  195. \return ECC_BAD_ARG_E 入力キーのキーサイズがPublicキーサイズまたは秘密鍵サイズと一致しない場合に返されます。
  196. \param [in] インポートする秘密鍵を含むバッファへのポイント。
  197. \param [in] インポートする秘密鍵のPrivsz長。
  198. \param [in] パブリックキーをインポートするバッファへのPub。
  199. \param [in] インポートする公開鍵のPubsz長さ。
  200. \param [in,out] インポートされたキーを保存する構造へのキーポインタ。
  201. _Example_
  202. \code
  203. int ret;
  204. byte priv[56];
  205. byte pub[56];
  206. // initialize with public and private keys
  207. curve448_key key;
  208. wc_curve448_init(&key);
  209. // initialize key
  210. ret = wc_curve448_import_private_raw_ex(&priv, sizeof(priv), pub,
  211. sizeof(pub), &key, EC448_BIG_ENDIAN);
  212. if (ret != 0) {
  213. // error importing keys
  214. }
  215. \endcode
  216. \sa wc_curve448_init
  217. \sa wc_curve448_make_key
  218. \sa wc_curve448_import_public
  219. \sa wc_curve448_export_private_raw
  220. \sa wc_curve448_import_private_raw
  221. */
  222. int wc_curve448_import_private_raw_ex(const byte* priv, word32 privSz,
  223. const byte* pub, word32 pubSz,
  224. curve448_key* key, int endian);
  225. /*!
  226. \ingroup Curve448
  227. \brief この関数はCurve448_Key構造体から秘密鍵をエクスポートし、それを指定されたバッファに格納します。また、エクスポートされたキーのサイズになるように概要を設定します。ビッグエンディアンのみ。
  228. \return 0 Curve448_Key構造体から秘密鍵を正常にエクスポートする上で返されました。
  229. \return BAD_FUNC_ARG 入力パラメータがNULLの場合に返されます。
  230. \return ECC_BAD_ARG_E WC_CURVE448_SIZE()がキーと等しくない場合に返されます。
  231. \param [in] キーをエクスポートする構造へのキーポインタ。
  232. \param [out] エクスポートされたキーを保存するバッファへのポインタ。
  233. _Example_
  234. \code
  235. int ret;
  236. byte priv[56];
  237. int privSz;
  238. curve448_key key;
  239. // initialize and make key
  240. ret = wc_curve448_export_private_raw(&key, priv, &privSz);
  241. if (ret != 0) {
  242. // error exporting key
  243. }
  244. \endcode
  245. \sa wc_curve448_init
  246. \sa wc_curve448_make_key
  247. \sa wc_curve448_import_private_raw
  248. \sa wc_curve448_export_private_raw_ex
  249. */
  250. int wc_curve448_export_private_raw(curve448_key* key, byte* out,
  251. word32* outLen);
  252. /*!
  253. \ingroup Curve448
  254. \brief この関数はCurve448_Key構造体から秘密鍵をエクスポートし、それを指定されたバッファに格納します。また、エクスポートされたキーのサイズになるように概要を設定します。それが大きいかリトルエンディアンかを指定できます。
  255. \return 0 Curve448_Key構造体から秘密鍵を正常にエクスポートする上で返されました。
  256. \return BAD_FUNC_ARG 入力パラメータがNULLの場合に返されます。
  257. \return ECC_BAD_ARG_E WC_CURVE448_SIZE()がキーと等しくない場合に返されます。
  258. \param [in] キーをエクスポートする構造へのキーポインタ。
  259. \param [out] エクスポートされたキーを保存するバッファへのポインタ。
  260. \param [in,out] INに照会は、バイト数のサイズです。ON OUTでは、出力バッファに書き込まれたバイトを保存します。
  261. _Example_
  262. \code
  263. int ret;
  264. byte priv[56];
  265. int privSz;
  266. curve448_key key;
  267. // initialize and make key
  268. ret = wc_curve448_export_private_raw_ex(&key, priv, &privSz,
  269. EC448_BIG_ENDIAN);
  270. if (ret != 0) {
  271. // error exporting key
  272. }
  273. \endcode
  274. \sa wc_curve448_init
  275. \sa wc_curve448_make_key
  276. \sa wc_curve448_import_private_raw
  277. \sa wc_curve448_export_private_raw
  278. \sa wc_curve448_size
  279. */
  280. int wc_curve448_export_private_raw_ex(curve448_key* key, byte* out,
  281. word32* outLen, int endian);
  282. /*!
  283. \ingroup Curve448
  284. \brief この関数は、指定されたバッファから公開鍵をインポートし、それをCurve448_Key構造体に格納します。
  285. \return 0 公開鍵をCurve448_Key構造体に正常にインポートしました。
  286. \return ECC_BAD_ARG_E InLenパラメータがキー構造のキーサイズと一致しない場合に返されます。
  287. \return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
  288. \param [in] インポートする公開鍵を含むバッファへのポインタ。
  289. \param [in] インポートする公開鍵のインレル長。
  290. _Example_
  291. \code
  292. int ret;
  293. byte pub[56];
  294. // initialize pub with public key
  295. curve448_key key;
  296. // initialize key
  297. ret = wc_curve448_import_public(pub,sizeof(pub), &key);
  298. if (ret != 0) {
  299. // error importing key
  300. }
  301. \endcode
  302. \sa wc_curve448_init
  303. \sa wc_curve448_export_public
  304. \sa wc_curve448_import_private_raw
  305. \sa wc_curve448_import_public_ex
  306. \sa wc_curve448_check_public
  307. \sa wc_curve448_size
  308. */
  309. int wc_curve448_import_public(const byte* in, word32 inLen,
  310. curve448_key* key);
  311. /*!
  312. \ingroup Curve448
  313. \brief この関数は、指定されたバッファから公開鍵をインポートし、それをCurve448_Key構造体に格納します。
  314. \return 0 公開鍵をCurve448_Key構造体に正常にインポートしました。
  315. \return ECC_BAD_ARG_E InLenパラメータがキー構造のキーサイズと一致しない場合に返されます。
  316. \return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
  317. \param [in] インポートする公開鍵を含むバッファへのポインタ。
  318. \param [in] インポートする公開鍵のインレル長。
  319. \param [in,out] キーを保存するCurve448_Key構造体へのキーポインタ。
  320. _Example_
  321. \code
  322. int ret;
  323. byte pub[56];
  324. // initialize pub with public key
  325. curve448_key key;
  326. // initialize key
  327. ret = wc_curve448_import_public_ex(pub, sizeof(pub), &key,
  328. EC448_BIG_ENDIAN);
  329. if (ret != 0) {
  330. // error importing key
  331. }
  332. \endcode
  333. \sa wc_curve448_init
  334. \sa wc_curve448_export_public
  335. \sa wc_curve448_import_private_raw
  336. \sa wc_curve448_import_public
  337. \sa wc_curve448_check_public
  338. \sa wc_curve448_size
  339. */
  340. int wc_curve448_import_public_ex(const byte* in, word32 inLen,
  341. curve448_key* key, int endian);
  342. /*!
  343. \ingroup Curve448
  344. \brief この関数は、公開鍵バッファがエンディアン順序付けを与えられた有効なCurve448キー値を保持することを確認します。
  345. \return 0 公開鍵の値が有効なときに返されます。
  346. \return ECC_BAD_ARG_E 公開鍵の値が無効な場合は返されます。
  347. \return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
  348. \param [in] チェックするための公開鍵を含むバッファへのPubポインタ。
  349. \param [in] チェックするための公開鍵の長さを掲載します。
  350. _Example_
  351. \code
  352. int ret;
  353. byte pub[] = { Contents of public key };
  354. ret = wc_curve448_check_public_ex(pub, sizeof(pub), EC448_BIG_ENDIAN);
  355. if (ret != 0) {
  356. // error importing key
  357. }
  358. \endcode
  359. \sa wc_curve448_init
  360. \sa wc_curve448_import_public
  361. \sa wc_curve448_import_public_ex
  362. \sa wc_curve448_size
  363. */
  364. int wc_curve448_check_public(const byte* pub, word32 pubSz, int endian);
  365. /*!
  366. \ingroup Curve448
  367. \brief この関数は指定されたキー構造から公開鍵をエクスポートし、結果をアウトバッファに格納します。ビッグエンディアンのみ。
  368. \return 0 Curve448_Key構造体から公開鍵のエクスポートに成功しました。
  369. \return ECC_BAD_ARG_E outlenがcurve448_pub_key_sizeより小さい場合に返されます。
  370. \return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
  371. \param [in] キーをエクスポートするCurve448_Key構造体へのキーポインタ。
  372. \param [out] 公開鍵を保存するバッファへのポインタ。
  373. _Example_
  374. \code
  375. int ret;
  376. byte pub[56];
  377. int pubSz;
  378. curve448_key key;
  379. // initialize and make key
  380. ret = wc_curve448_export_public(&key, pub, &pubSz);
  381. if (ret != 0) {
  382. // error exporting key
  383. }
  384. \endcode
  385. \sa wc_curve448_init
  386. \sa wc_curve448_export_private_raw
  387. \sa wc_curve448_import_public
  388. */
  389. int wc_curve448_export_public(curve448_key* key, byte* out, word32* outLen);
  390. /*!
  391. \ingroup Curve448
  392. \brief この関数は指定されたキー構造から公開鍵をエクスポートし、結果をアウトバッファに格納します。ビッグ・リトルエンディアンの両方をサポートします。
  393. \return 0 Curve448_Key構造体から公開鍵のエクスポートに成功しました。
  394. \return ECC_BAD_ARG_E outlenがcurve448_pub_key_sizeより小さい場合に返されます。
  395. \return BAD_FUNC_ARG 入力パラメータのいずれかがNULLの場合に返されます。
  396. \param [in] キーをエクスポートするCurve448_Key構造体へのキーポインタ。
  397. \param [out] 公開鍵を保存するバッファへのポインタ。
  398. \param [in,out] INに照会は、バイト数のサイズです。ON OUTでは、出力バッファに書き込まれたバイトを保存します。
  399. _Example_
  400. \code
  401. int ret;
  402. byte pub[56];
  403. int pubSz;
  404. curve448_key key;
  405. // initialize and make key
  406. ret = wc_curve448_export_public_ex(&key, pub, &pubSz, EC448_BIG_ENDIAN);
  407. if (ret != 0) {
  408. // error exporting key
  409. }
  410. \endcode
  411. \sa wc_curve448_init
  412. \sa wc_curve448_export_private_raw
  413. \sa wc_curve448_import_public
  414. */
  415. int wc_curve448_export_public_ex(curve448_key* key, byte* out,
  416. word32* outLen, int endian);
  417. /*!
  418. \ingroup Curve448
  419. \brief この関数は指定されたキー構造からキーペアをエクスポートし、結果をアウトバッファに格納します。ビッグエンディアンのみ。
  420. \return 0 Curve448_Key構造体からキーペアのエクスポートに成功しました。
  421. \return BAD_FUNC_ARG 入力パラメータがNULLの場合に返されます。
  422. \return ECC_BAD_ARG_E PRIVSZがCURUV448_KEY_SIZEまたはPUBSZよりも小さい場合は、Curge448_PUB_KEY_SIZEよりも小さい場合に返されます。
  423. \param [in] キーペアをエクスポートするCURUN448_KEY構造体へのキーポインタ。
  424. \param [out] 秘密鍵を保存するバッファへのPRIVポインタ。
  425. \param [in,out] PRIVSZ ON INは、PRIVバッファのサイズをバイト単位で)です。ON OUTは、PRIVバッファに書き込まれたバイトを保存します。
  426. \param [out] パブリックキーを保存するバッファへのPub。
  427. _Example_
  428. \code
  429. int ret;
  430. byte pub[56];
  431. byte priv[56];
  432. int pubSz;
  433. int privSz;
  434. curve448_key key;
  435. // initialize and make key
  436. ret = wc_curve448_export_key_raw(&key, priv, &privSz, pub, &pubSz);
  437. if (ret != 0) {
  438. // error exporting key
  439. }
  440. \endcode
  441. \sa wc_curve448_export_key_raw_ex
  442. \sa wc_curve448_export_private_raw
  443. */
  444. int wc_curve448_export_key_raw(curve448_key* key,
  445. byte* priv, word32 *privSz,
  446. byte* pub, word32 *pubSz);
  447. /*!
  448. \ingroup Curve448
  449. \brief Curve448キーペアをエクスポートします。ビッグ、またはリトルエンディアン。
  450. \brief この関数は指定されたキー構造からキーペアをエクスポートし、結果をアウトバッファに格納します。ビッグ、またはリトルエンディアン。
  451. \return 0 成功
  452. \return BAD_FUNC_ARG 入力パラメータがNULLの場合に返されます。
  453. \return ECC_BAD_ARG_E PRIVSZがCURUV448_KEY_SIZEまたはPUBSZよりも小さい場合は、Curge448_PUB_KEY_SIZEよりも小さい場合に返されます。
  454. \param [in] キーペアをエクスポートするCURUN448_KEY構造体へのキーポインタ。
  455. \param [out] 秘密鍵を保存するバッファへのPRIVポインタ。
  456. \param [in,out] PRIVSZ ON INは、PRIVバッファのサイズをバイト単位で)です。ON OUTは、PRIVバッファに書き込まれたバイトを保存します。
  457. \param [out] パブリックキーを保存するバッファへのPub。
  458. \param [in,out] PUBSZ ON INは、パブバッファのサイズをバイト単位で)です。ON OUTでは、PUBバッファに書き込まれたバイトを保存します。
  459. _Example_
  460. \code
  461. int ret;
  462. byte pub[56];
  463. byte priv[56];
  464. int pubSz;
  465. int privSz;
  466. curve448_key key;
  467. // initialize and make key
  468. ret = wc_curve448_export_key_raw_ex(&key,priv, &privSz, pub, &pubSz,
  469. EC448_BIG_ENDIAN);
  470. if (ret != 0) {
  471. // error exporting key
  472. }
  473. \endcode
  474. \sa wc_curve448_export_key_raw
  475. \sa wc_curve448_export_private_raw_ex
  476. \sa wc_curve448_export_public_ex
  477. */
  478. int wc_curve448_export_key_raw_ex(curve448_key* key,
  479. byte* priv, word32 *privSz,
  480. byte* pub, word32 *pubSz,
  481. int endian);
  482. /*!
  483. \ingroup Curve448
  484. \brief この関数は与えられたキー構造のキーサイズを返します。
  485. \return Success 有効な初期化されたCurve448_Key構造体を考慮すると、キーのサイズを返します。
  486. \return 0 キーがNULLの場合は返されます。
  487. _Example_
  488. \code
  489. int keySz;
  490. curve448_key key;
  491. // initialize and make key
  492. keySz = wc_curve448_size(&key);
  493. \endcode
  494. \sa wc_curve448_init
  495. \sa wc_curve448_make_key
  496. */
  497. int wc_curve448_size(curve448_key* key);