EC_POINT_ADD(3SSL)

الاسم
EC_POINT_add, EC_POINT_dbl, EC_POINT_invert, EC_POINT_is_at_infinity, EC_POINT_is_on_curve, EC_POINT_cmp, EC_POINT_make_affine, EC_POINTs_make_affine, EC_POINTs_mul, EC_POINT_mul, EC_GROUP_precompute_mult, EC_GROUP_have_precompute_mult - دوال لإجراء العمليات الرياضية والاختبارات على كائنات EC_POINT

موجز
 #include <openssl/ec.h>

 int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a,
                  const EC_POINT *b, BN_CTX *ctx);
 int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, BN_CTX *ctx);
 int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx);
 int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p);
 int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, BN_CTX *ctx);
 int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, BN_CTX *ctx);
 int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n,
                  const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx);

الدوال التالية أصبحت مهجورة منذ OpenSSL 3.0، ويمكن إخفاؤها تماماً عن طريق تعريف OPENSSL_API_COMPAT بقيمة إصدار مناسبة، انظر openssl_user_macros(7):

 int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx);
 int EC_POINTs_make_affine(const EC_GROUP *group, size_t num,
                           EC_POINT *points[], BN_CTX *ctx);
 int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, size_t num,
                   const EC_POINT *p[], const BIGNUM *m[], BN_CTX *ctx);
 int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx);
 int EC_GROUP_have_precompute_mult(const EC_GROUP *group);

الوصف
EC_POINT_add تجمع النقطتين a و b وتضع النتيجة في r. وبالمثل، EC_POINT_dbl تضاعف النقطة a وتضع النتيجة في r. في كلتا الحالتين، يصح أن تكون r إحدى a أو b.

EC_POINT_invert تحسب معكوس النقطة المعطاة a. تُعاد النتيجة إلى a.

الدالة EC_POINT_is_at_infinity تختبر ما إذا كانت النقطة المعطاة عند اللانهاية أم لا.

EC_POINT_is_on_curve تختبر ما إذا كانت النقطة المعطاة على المنحنى أم لا.

EC_POINT_cmp تقارن النقطتين المعطاتين وتختبر ما إذا كانتا متساويتين أم لا.

الدالتان EC_POINT_make_affine و EC_POINTs_make_affine تُجبران التمثيل الداخلي لنقطة (نقاط) EC_POINT إلى نظام الإحداثيات الأفيني. في حالة EC_POINTs_make_affine، توفر القيمة num عدد النقاط في المصفوفة points التي يجب إجبارها. أُهملت هاتان الدالتان في OpenSSL 3.0 ولا ينبغي استخدامهما بعد الآن. الإصدارات الحديثة تُجري هذا التحويل آليًا عند الحاجة.

EC_POINT_mul تحسب القيمة المولد * n + q * m وتخزن النتيجة في r. قد تكون القيمة n NULL وفي هذه الحالة تكون النتيجة مجرد q * m (ضرب نقطة متغير). بدلاً من ذلك، قد يكون كل من q و m NULL، و n غير NULL، وفي هذه الحالة تكون النتيجة مجرد المولد * n (ضرب نقطة ثابت). عند إجراء ضرب نقطة ثابتة أو متغيرة واحدة، يستخدم التطبيق الأساسي خوارزمية زمن ثابت، عندما يكون العدد القياسي المُدخل (إما n أو m) في النطاق [0, ec_group_order).

على الرغم من إهمالها في OpenSSL 3.0 وعدم جواز استخدامها بعد الآن، تحسب EC_POINTs_mul القيمة المولد * n + q[0] * m[0] + ... + q[num-1] * m[num-1]. كما في EC_POINT_mul، قد تكون القيمة n NULL أو num صفرًا. عند إجراء ضرب نقطة ثابتة (n غير NULL و num يساوي 0) أو ضرب نقطة متغيرة (n NULL و num يساوي 1)، يستخدم التطبيق الأساسي خوارزمية زمن ثابت، عندما يكون العدد القياسي المُدخل (إما n أو m[0]) في النطاق [0, ec_group_order). يجب أن تستخدم الإصدارات الحديثة بدلاً من ذلك EC_POINT_mul()، المدمجة (إذا لزم الأمر) مع EC_POINT_add() في مثل هذه الظروف النادرة.

الدالة EC_GROUP_precompute_mult تخزن مضاعفات المولد لضرب نقاط أسرع، بينما تختبر EC_GROUP_have_precompute_mult ما إذا كان الحساب المسبق قد أُجري بالفعل. انظر EC_GROUP_copy(3) للحصول على معلومات حول المولد. أُهملت وظيفة الحساب المسبق في OpenSSL 3.0. يجب على مستخدمي EC_GROUP_precompute_mult() و EC_GROUP_have_precompute_mult() التحول إلى المنحنيات المسماة التي لدى OpenSSL جداول بحث مشفرة لها.

القيم المُرجعة
الدوال التالية تُرجع 1 عند النجاح أو 0 عند الخطأ: EC_POINT_add, EC_POINT_dbl, EC_POINT_invert, EC_POINT_make_affine, EC_POINTs_make_affine, EC_POINTs_make_affine, EC_POINT_mul, EC_POINTs_mul و EC_GROUP_precompute_mult.

EC_POINT_is_at_infinity تُرجع 1 إذا كانت النقطة عند اللانهاية، أو 0 بخلاف ذلك.

EC_POINT_is_on_curve تُرجع 1 إذا كانت النقطة على المنحنى، 0 إذا لم تكن، أو -1 عند الخطأ.

EC_POINT_cmp تُرجع 1 إذا كانت النقطتان غير متساويتين، 0 إذا كانتا متساويتين، أو -1 عند الخطأ.

EC_GROUP_have_precompute_mult تُرجع 1 إذا أُجري حساب مسبق، أو 0 إذا لم يُجر.

انظر أيضًا
crypto(7), EC_GROUP_new(3), EC_GROUP_copy(3), EC_POINT_new(3), EC_KEY_new(3), EC_GFp_simple_method(3), d2i_ECPKParameters(3)

التاريخ
أُهملت الدوال EC_POINT_make_affine() و EC_POINTs_make_affine() و EC_POINTs_mul() و EC_GROUP_precompute_mult() و EC_GROUP_have_precompute_mult() في OpenSSL 3.0.

حقوق النسخ
حقوق النشر 2013-2023 لمؤلفي مشروع OpenSSL. جميع الحقوق محفوظة.

مرخص بموجب رخصة Apache 2.0 (المشار إليها فيما يلي بـ ”الرخصة“). لا يجوز لك استخدام هذا الملف إلا وفقًا لشروط الرخصة. يمكنك الحصول على نسخة منها في الملف LICENSE الموجود في حزمة التوزيع المصدرية أو على الرابط <https://www.openssl.org/source/license.html>.

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.