Compare commits

...

2 commits

Author SHA1 Message Date
e9b4e2d34c
feat: Make Method+URI as signature data if there is no data
All checks were successful
Build site / Rust CI (push) Successful in 27s
Signed-off-by: Awiteb <a@4rs.nl>
2024-07-04 14:29:23 +03:00
7d860d3589
feat: Remove the public key from websocket body
Signed-off-by: Awiteb <a@4rs.nl>
2024-07-04 13:54:51 +03:00

View file

@ -38,9 +38,7 @@ add_toc = true
مضغوط وهو يتكون من 33 بايت (264 بت) يتم ترميزه بترميز [base58] على سبيل المثال
العنوان التالي `becZJsZZqGR7qBG8t1Pm4uy62jDTzJsabxnkARhr2syo`.
يتم وضع العنوان العام في رأس (Header) الطلب (Request) بأسم `X-OTMP-PUBLIC` او في
بيانات ال [Websocket] في المفتاح `public_key` ويجب ان يكون نص [base58] صحيح مكون
من 33 بايت (264 بت).
يتم وضع العنوان العام في رأس (Header) الطلب (Request) بأسم `X-OTMP-PUBLIC` ويجب ان يكون نص [base58] صحيح مكون من 33 بايت (264 بت).
## أسم الخادم
أسم الخادم هو نطاق إلكتروني طبيعي، على سبيل المثال `example.com` ويتم جلب عنوان
@ -109,7 +107,7 @@ base58 فقط:\
### إنشاء التوقيع
التوقيع يحتاج إلى ثلاث اشياء ليتم إنشائه
- مفتاح التشفير المشترك.
- جسم الطلب (body) او بيانات الحدث (data).
- جسم الطلب (body) أو بيانات الحدث (data) أو طريقة الطلب+المسار، مثال (GET/ws/chat)
- ثواني الوقت الحالي للمنطقة الزمنية UTC بتنسيق [Unix Time] (8 بايت أي 64 بت
**big-endian**).
- 16 بايت عشوائي (128 بت).
@ -140,27 +138,25 @@ bad035084e11bfd266c7b7dfa473d6603be551b3aa215f869776b75bf42ef31900000000665e1a69
الطلب مرة أخرى من المهاجمين (ضمان أن التوقيع صالح لمرة واحدة فقط).
### شكل البيانات داخل إتصال الـWebsocket
بعد الإتصال بـ[Websocket] مع الخادم، سوف يكون تنسيق البيانات التي يتم تبادلها
بعد الإتصال بـ[Websocket] مع الخادم، يكون تنسيق البيانات التي يتم تبادلها
بين المرسل والخادم json ويجب عليها توفر المفاتيح التالية
- `event`: إسم الحدث، على سبيل المثال إرسال رسالة او تحديث حالة الكتابة.
- `event`: إسم الحدث، على سبيل المثال إرسال رسالة او تحديث حالة الكتابة (التنسيق PascalCase).
- `data`: البيانات الخاصة بالحدث.
- `public_key`: وهو العنوان العام الخاص بالمرسل.
- `signature`: توقيع بيانات الحدث (data)، هذا التوقيع يكون بين المرسل وبين
الخادم وليس المُستقبل.
ليكون الشكل النهائي كالتالي (مثال)
#### مثال لشكل البيانات في ال websocket
<div dir="ltr">
```json
{
"event": "EVENT_NAME",
"event": "EventName",
"data": {
"key": "value"
},
"public_key": "becZJsZZqGR7qBG8t1Pm4uy62jDTzJsabxnkARhr2syo",
"signature": "bad035084e11bfd266c7b7dfa473d6603be551b3aa215f869776b75bf42ef31900000000665e1a696e6d776f65726e6664757265686a66"
}
```