برای این موضوع باید API زیر را فراخوانی کنید:
/api/Devices/Register
POST
- Header
Parameter Description ندارد ندارد - Request
Parameter Type Required Description Cypher string * در ادامه توضیح داده خواهد شد. IV string * در ادامه توضیح داده خواهد شد. IntegrationID int * در ادامه توضیح داده خواهد شد. JSONRequest Body : { "Cypher": "string", "IV": "string", "IntegrationID": 9999 } - Response
- 200
Parameter Type Description Cypher string در ادامه توضیح داده خواهد شد. IV string در ادامه توضیح داده خواهد شد. DeviceTitle string عنوان دستگاه JSONResponse : { "Cypher": "string", "IV": "string", "DeviceTitle": "string" } - 400
Message Description دستگاه در حال حاضر رجیستر شده است. این دستگاه قبلاً با همین شماره سریال رجیستر شده است. عدم تطابق دستگاه اطلاعات رمز شده ارسالی، درست نیست. - 404
Message Description دستگاه پیدا نشد. کد سریال اشتباه است.
- 200
IntehrationID در واقع همان شناسه دستگاه است که از این پس در همهٔ ارتباطات برای شناسایی دستگاه از آن استفاده خواهد شد. این شناسه از ۴ رقم اول سمت چپ سریال به دست میآید.
به عنوان مثال IntegrationID برای سریال عدد 1001 است.
با هر بار تولید سریال جدید، این شناسه ثابت میماند.
Cypher در واقع همان IntegrationID است که به روش زیر رمز شده است:
- از الگوریتم AES یا Rijndael برای رمزنگاری این قسمت استفاده شده است.
- مد رمزنگاری باید CBC انتخاب شود.
- کلید رمزنگاری از کنار هم قرار دادن دو بار یک سریال ساخته شود. برای سریال مثال بالا کلید رمزنگاری به صورت است.
- IV به صورت تصادفی تولید شود و به سرور نیز ارسال شود.
- از padding برای حل مشکل سایز داده ورودی استفاده کنید.
- در نهایت IV و Cypher تولید شده به صورت Base64String به سرور ارسال شود.
در صورتی که خطایی رخ ندهد، سرور دادههای زیر را برای شما ارسال خواهد کرد:
- DeviceTitle: همان عنوانی که در تعریف دستگاه از آن استفاده کردید.
- Cypher: کلید عمومی مختص کلاینت شما که با الگوریتم AES رمز شده است.
- IV: یک IV تصادفی که توسط سرور برای رمزنگاری استفاده شده است.
پس از انجام عملیات رجیستر، یک کلید عمومی و یک کلید خصوصی برای دستگاه شما تولید میشود. شما کلید عمومی را به صورت رمز شده دریافت میکنید. برای بازگشایی و خواندن اطلاعات کلید عمومی باید مراحل زیر را طی نمایید:
- از الگوریتم AES یا Rijndael برای بازگشایی رمز این قسمت استفاده شده است.
- مد رمزگشایی باید CBC انتخاب شود.
- کلید رمزگشایی همانند بالا از کنار هم قرار دادن دو بار همان سریال ساخته شود.
- از IV ارسال شده از سمت سرور به عنوان IV الگوریتم AES استفاده شود. فقط دقت داشته باشید که IV ارسالی از سمت سرور به صورت Base64String است.
- Cypher ارسالی از سمت سرور به عنوان ورودی تابع رمزنگاری استفاده شود. فقط دقت داشته باشید که Cypher ارسالی از سمت سرور به صورت Base64String است.
- پس از رمزگشایی از unpadding برای رسیدن به اطلاعات اصلی استفاده نمایید.
- در نهایت یک کلید رمزنگاری عمومی به فرمت XML مشابه زیر دریافت خواهید کرد:
<RSAKeyValue>
<Modulus>yUMZ3QUs5c0dMJp0mAWzZFlzATNmuxol0N+NlOY1TZXW/q8YCrdWzhV6iLANJe6wEblDugUQgYK/Ue30ld8T7Q==</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>
از این کلید رمزنگاری برای فراخوانی باقی API ها استفاده خواهد شد.