السلطان
  1. الرئيسية
  2. الأمثلة
  3. التشفير

Ed25519

توقيع رسالة ببذرة خاصة والتحقق منها بالمفتاح العام.

crypto/signatures.sn
// Ed25519: توقيع رسالة ببذرة خاصة والتحقق منها بالمفتاح العام.
استورد std.io.println;
استورد std.text.from_bytes;
استورد std.crypto.ed25519;

عرف الرئيسية(): عدد {
    دع البذرة: متغير متجه ط8 = [];
    دع ف: متغير طبيعي = 0;
    طالما (ف < 32) { ألحق(البذرة, (ف * 7) مثل ط8); ف := ف + 1; }
    دع الرسالة: متجه ط8 = بايتات_من_نص("ادفع 10 لنور");
    دع المزور: متجه ط8 = بايتات_من_نص("ادفع 99 لنور");
    طابق مفتاح_عام_إد25519(&البذرة) مع
    | اختياري.لا_شيء -> { أرجع 1; }
    | اختياري.موجود(المفتاح_العام) -> {
        طابق وقع_إد25519(&البذرة, &الرسالة) مع
        | اختياري.لا_شيء -> { أرجع 2; }
        | اختياري.موجود(التوقيع) -> {
            إذا (تحقق_إد25519(&المفتاح_العام, &الرسالة, &التوقيع)) { اطبع_سطر("التوقيع صحيح"); };
            إذا (!تحقق_إد25519(&المفتاح_العام, &المزور, &التوقيع)) { اطبع_سطر("رُفض التزوير"); };
        };
    };
    أرجع 0;
}

التشغيل

بالمفسر، دون ترجمة:

./build/sultanc run examples/ar/crypto/signatures.sn

أو ترجمه إلى ملف تنفيذي:

./build/sultanc examples/ar/crypto/signatures.sn -o build/example && ./build/example

المصدر على GitHub   كل الأمثلة