OpenSSL/EC 金鑰新
EC_KEY 表示一個公鑰和(可選)一個關聯的私鑰。可以透過呼叫 EC_KEY_new 來構造一個新的 EC_KEY(沒有關聯的曲線)。新建立的 EC_KEY 的引用計數最初設定為 1。可以透過呼叫 EC_KEY_set_group 將曲線與 EC_KEY 關聯。
或者,可以透過呼叫 EC_KEY_new_by_curve_name 並提供關聯曲線的 nid 來構造一個新的 EC_KEY。有關曲線名稱的說明,請參閱 EC_GROUP_new。此函式只是將呼叫封裝到 EC_KEY_new 和 EC_GROUP_new_by_curve_name 中。
呼叫 EC_KEY_free 會減少 EC_KEY 物件的引用計數,如果它已降至零,則會釋放與之關聯的記憶體。
EC_KEY_copy 將src 中的 EC_KEY 的內容複製到dest 中。
EC_KEY_dup 建立一個新的 EC_KEY 物件並將ec_key 複製到其中。
EC_KEY_up_ref 會增加與 EC_KEY 物件關聯的引用計數。
EC_KEY_generate_key 為提供的eckey 物件生成一個新的公鑰和私鑰。eckey 必須在呼叫此函式之前與一個 EC_GROUP 物件關聯。私鑰是一個隨機整數(0 < priv_key < order,其中 order 是 EC_GROUP 物件的階)。公鑰是透過將曲線的生成元乘以私鑰來計算的曲線上的 EC_POINT。
EC_KEY_check_key 對 EC_KEY 物件執行各種健全性檢查,以確認其有效性。
EC_KEY_set_public_key_affine_coordinates 基於其仿射座標設定key 的公鑰,即它根據提供的x 和y 值構造一個 EC_POINT 物件,並將公鑰設定為這個 EC_POINT。它還會對金鑰執行某些健全性檢查,以確認其有效性。
函式 EC_KEY_get0_group、EC_KEY_set_group、EC_KEY_get0_private_key、EC_KEY_set_private_key、EC_KEY_get0_public_key 和 EC_KEY_set_public_key 分別獲取和設定key 的 EC_GROUP 物件、私鑰和 EC_POINT 公鑰。
函式 EC_KEY_get_enc_flags 和 EC_KEY_set_enc_flags 獲取和設定key 的編碼標誌的值。目前定義了兩個編碼標誌 - EC_PKEY_NO_PARAMETERS 和 EC_PKEY_NO_PUBKEY。這些標誌定義了key 如何在呼叫 i2d_ECPrivateKey 時轉換為 ASN1 的行為。如果設定了 EC_PKEY_NO_PARAMETERS,則不會將曲線的公共引數與私鑰一起編碼。如果設定了 EC_PKEY_NO_PUBKEY,則不會將公鑰與私鑰一起編碼。
函式 EC_KEY_get_conv_form 和 EC_KEY_set_conv_form 獲取和設定金鑰的 point_conversion_form。有關 point_conversion_forms 的說明,請參閱 EC_POINT_new。
EC_KEY_insert_key_method_data 和 EC_KEY_get_key_method_data 使呼叫者能夠將與正在使用的橢圓曲線方案相關的任意附加資料與 EC_KEY 物件關聯。這些資料被 ec 庫視為一個“黑盒”。要由 EC_KEY_insert_key_method_data 儲存的資料在data 引數中提供,該引數必須具有與複製、釋放和“清除釋放”資料項相關的函式。如果隨後發出 EC_KEY_get_key_method_data 呼叫,則必須再次提供複製、釋放和“清除釋放”資料項的函式,並且它們必須與插入資料項時的函式相同。
EC_KEY_set_flags 在 EC_KEY 物件上設定flags 引數中的標誌。任何已設定的標誌都保持設定。當前定義的標準標誌是 EC_FLAG_NON_FIPS_ALLOW 和 EC_FLAG_FIPS_CHECKED。此外,還有標誌 EC_FLAG_COFACTOR_ECDH,它是特定於 ECDH 的,並在 ecdh.h 中定義。EC_KEY_get_flags 返回為此 EC_KEY 設定的當前標誌。EC_KEY_clear_flags 會清除由flags 引數指示的標誌。所有其他標誌都保留在它們現有的狀態中。
EC_KEY_set_asn1_flag 會在底層 EC_GROUP 物件上設定 asn1_flag(如果設定)。有關 asn1_flag 的更多資訊,請參閱 EC_GROUP_copy。
EC_KEY_precompute_mult 會儲存底層 EC_GROUP 生成元的倍數,以加快點乘運算。另請參閱 EC_POINT_add。
EC_KEY_new、EC_KEY_new_by_curve_name 和 EC_KEY_dup 會返回指向新建立的 EC_KEY 物件的指標,或者在出錯時返回 NULL。
EC_KEY_get_flags 會以整數的形式返回與 EC_KEY 物件關聯的標誌。
EC_KEY_copy 會返回指向目標金鑰的指標,或者在出錯時返回 NULL。
EC_KEY_up_ref、EC_KEY_set_group、EC_KEY_set_private_key、EC_KEY_set_public_key、EC_KEY_precompute_mult、EC_KEY_generate_key、EC_KEY_check_key 和 EC_KEY_set_public_key_affine_coordinates 在成功時返回 1,在出錯時返回 0。
EC_KEY_get0_group 會返回與 EC_KEY 關聯的 EC_GROUP。
EC_KEY_get0_private_key 會返回與 EC_KEY 關聯的私鑰。
EC_KEY_get_enc_flags 會返回 EC_KEY 的當前編碼標誌的值。
EC_KEY_get_conv_form 會返回 EC_KEY 的 point_conversion_form。