跳轉到內容

OpenSSL/EC POINT new

來自Wikibooks,開放世界中的開放書籍

EC_POINT 代表曲線上的一個點。透過呼叫函式 EC_POINT_new 並提供點相關的組物件來構造一個新點。

EC_POINT_free 釋放與 EC_POINT 相關的記憶體。

EC_POINT_clear_free 銷燬 EC_POINT 中儲存的任何敏感資料,然後釋放其記憶體。

EC_POINT_copy 將點src複製到dst中。srcdst必須使用相同的 EC_METHOD。

EC_POINT_dup 建立一個新的 EC_POINT 物件,並將內容從src複製到新建立的 EC_POINT 物件。

EC_POINT_method_of 獲取與point關聯的 EC_METHOD。

曲線上有效的點是無窮遠處的特殊點。透過呼叫 EC_POINT_set_to_infinity 將點設定為無窮遠點。

點的仿射座標用其 x 和 y 位置來描述一個點。函式 EC_POINT_set_affine_coordinates_GFp 和 EC_POINT_set_affine_coordinates_GF2m 設定在group中給定的曲線上定義的點pxy座標。

除了仿射座標外,還可以用雅可比射影座標(僅適用於 Fp 曲線)來描述一個點。雅可比射影座標表示為三個值 x、y 和 z。在此座標系中工作可以提供更高效的點乘法運算。雅可比射影座標和仿射座標之間存在對映關係。雅可比射影座標 (x, y, z) 可以寫成仿射座標 (x/(z^2), y/(z^3))。從雅可比射影座標到仿射座標的轉換很簡單。座標 (x, y) 對映到 (x, y, 1)。要設定或獲取射影座標,分別使用 EC_POINT_set_Jprojective_coordinates_GFp 和 EC_POINT_get_Jprojective_coordinates_GFp。

點也可以用它們的壓縮座標來描述。對於點 (x, y),對於 x 的任何給定值,只要該點在曲線上,y 就只有兩個可能的值。因此,可以使用 EC_POINT_set_compressed_coordinates_GFp 和 EC_POINT_set_compressed_coordinates_GF2m 函式設定一個點,其中x是 x 座標,y_bit是值 0 或 1,用於標識應使用兩個可能的 y 值中的哪一個。

此外,EC_POINT 可以轉換為各種外部表示形式,反之亦然。支援的表示形式包括八位位元組字串、BIGNUM 和十六進位制。外部表示形式的格式由 point_conversion_form 描述。有關 point_conversion_form 的描述,請參閱EC_GROUP_copy。八位位元組字串儲存在緩衝區中,以及相關的緩衝區長度。儲存在 BIGNUM 中的點是透過將點轉換為八位位元組字串,然後將該八位位元組字串轉換為 BIGNUM 整數來計算的。十六進位制格式的點儲存在以 NULL 結尾的字元字串中,其中每個字元都是可列印值 0-9 或 A-F(或 a-f)之一。

返回值

[編輯 | 編輯原始碼]

EC_POINT_new 和 EC_POINT_dup 返回新分配的 EC_POINT,或者在出錯時返回 NULL。

以下函式在成功時返回 1,在出錯時返回 0:EC_POINT_copy、EC_POINT_set_to_infinity、EC_POINT_set_Jprojective_coordinates_GFp、EC_POINT_get_Jprojective_coordinates_GFp、EC_POINT_set_affine_coordinates_GFp、EC_POINT_get_affine_coordinates_GFp、EC_POINT_set_compressed_coordinates_GFp、EC_POINT_set_affine_coordinates_GF2m、EC_POINT_get_affine_coordinates_GF2m、EC_POINT_set_compressed_coordinates_GF2m 和 EC_POINT_oct2point。

EC_POINT_method_of 返回與提供的 EC_POINT 關聯的 EC_METHOD。

EC_POINT_point2oct 返回所需緩衝區的長度,或在出錯時返回 0。

EC_POINT_point2bn 返回指向提供的 BIGNUM 的指標,或在出錯時返回 NULL。

EC_POINT_bn2point 返回指向提供的 EC_POINT 的指標,或在出錯時返回 NULL。

EC_POINT_point2hex 返回指向十六進位制字串的指標,或在出錯時返回 NULL。

EC_POINT_hex2point 返回指向提供的 EC_POINT 的指標,或在出錯時返回 NULL。

函式 EC_POINT_point2oct、EC_POINT_oct2point、EC_POINT_point2bn、EC_POINT_bn2point、EC_POINT_point2hex 和 EC_POINT_hex2point 分別在 EC_POINT 與以下格式之間進行轉換:八位位元組字串、BIGNUM 和十六進位制。

函式 EC_POINT_point2oct 必須提供一個足夠長的緩衝區來儲存八位位元組字串。返回值提供儲存的八位位元組數。使用 NULL 緩衝區呼叫該函式不會執行轉換,但仍會返回所需的緩衝區長度。

函式 EC_POINT_point2hex 將分配足夠的記憶體來儲存十六進位制字串。呼叫方有責任隨後呼叫 OPENSSL_free() 來釋放此記憶體。

華夏公益教科書