diff options
author | Yigit Sever | 2021-04-16 13:56:45 +0300 |
---|---|---|
committer | Yigit Sever | 2021-04-16 13:56:45 +0300 |
commit | 109ae1f771ec5e8a5a9510c3b09fad579dab5ed7 (patch) | |
tree | e5fc87e27e955ec2df1c5ee2a539433fc4d65054 /site/public/register-docs | |
parent | b7cd484a869600e181dd06522befbfd091a7a488 (diff) | |
download | gradecoin-109ae1f771ec5e8a5a9510c3b09fad579dab5ed7.tar.gz gradecoin-109ae1f771ec5e8a5a9510c3b09fad579dab5ed7.tar.bz2 gradecoin-109ae1f771ec5e8a5a9510c3b09fad579dab5ed7.zip |
Improve auth documentation
Diffstat (limited to 'site/public/register-docs')
-rw-r--r-- | site/public/register-docs/index.html | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/site/public/register-docs/index.html b/site/public/register-docs/index.html index fdc5237..810f4ec 100644 --- a/site/public/register-docs/index.html +++ b/site/public/register-docs/index.html | |||
@@ -84,38 +84,42 @@ | |||
84 | <div class="content text"> | 84 | <div class="content text"> |
85 | 85 | ||
86 | <div class="heading-text">Register Documentation</div> | 86 | <div class="heading-text">Register Documentation</div> |
87 | <p>POST request to /register endpoint</p> | 87 | <p>POST request to <code>/register</code> endpoint</p> |
88 | <p>Lets a user to authenticate themselves to the system. | 88 | <p>Lets a user to authenticate themselves to the system. |
89 | Only people who are enrolled to the class can open Gradecoin accounts. | 89 | Only people who are enrolled to the class can open Gradecoin accounts. |
90 | This is enforced with your Student ID and a one time password you will receive.</p> | 90 | This is enforced with your Student ID and a one time password you will receive.</p> |
91 | <h1 id="authentication-process">Authentication Process</h1> | 91 | <h1 id="authentication-process">Authentication Process</h1> |
92 | <blockquote> | ||
93 | <p>The bytes you are sending over the network are all Base64 Encoded</p> | ||
94 | </blockquote> | ||
92 | <ul> | 95 | <ul> |
93 | <li>Gradecoin's Public Key (<code>gradecoin_public_key</code>) is listed on our Moodle page.</li> | 96 | <li>Gradecoin's Public Key (<code>gradecoin_public_key</code>) is listed on our Moodle page. Download and load it it to your client.</li> |
94 | <li>You pick a short temporary key (<code>k_temp</code>)</li> | 97 | <li>Create a JSON object (<code>P_AR</code>) with your <code>metu_id</code> ("e"+<code>6 chars</code>) and <code>public key</code> in base64 (PEM) format (<code>S_PK</code>) <a href="https://tls.mbed.org/kb/cryptography/asn1-key-structures-in-der-and-pem">reference</a></li> |
95 | <li>Create a JSON object (<code>auth_plaintext</code>) with your <code>metu_id</code> and <code>public key</code> in base64 (PEM) format (<code>S_PK</code>) <a href="https://tls.mbed.org/kb/cryptography/asn1-key-structures-in-der-and-pem">reference</a></li> | ||
96 | </ul> | 98 | </ul> |
97 | <pre style="background-color:#ffffff;"> | 99 | <pre style="background-color:#ffffff;"> |
98 | <code class="language-json" data-lang="json"><span style="color:#545052;">{ | 100 | <code class="language-json" data-lang="json"><span style="color:#545052;">{ |
99 | "</span><span style="color:#009854;">student_id</span><span style="color:#545052;">": "</span><span style="color:#009854;">e12345</span><span style="color:#545052;">", | 101 | "</span><span style="color:#009854;">student_id</span><span style="color:#545052;">": "</span><span style="color:#009854;">e123456</span><span style="color:#545052;">", |
100 | "</span><span style="color:#009854;">passwd</span><span style="color:#545052;">": "</span><span style="color:#009854;">15 char secret</span><span style="color:#545052;">", | 102 | "</span><span style="color:#009854;">passwd</span><span style="color:#545052;">": "</span><span style="color:#009854;">15 char secret</span><span style="color:#545052;">", |
101 | "</span><span style="color:#009854;">public_key</span><span style="color:#545052;">": "</span><span style="color:#009854;">---BEGIN PUBLIC KEY...</span><span style="color:#545052;">" | 103 | "</span><span style="color:#009854;">public_key</span><span style="color:#545052;">": "</span><span style="color:#009854;">---BEGIN PUBLIC KEY...</span><span style="color:#545052;">" |
102 | } | 104 | } |
103 | </span></code></pre> | 105 | </span></code></pre> |
104 | <ul> | 106 | <ul> |
105 | <li>Pick a random IV.</li> | 107 | <li>Pick a short temporary key (<code>k_temp</code>)</li> |
106 | <li>Encrypt the serialized string of <code>auth_plaintext</code> with 128 bit block AES in CBC mode with Pkcs7 padding using the temporary key (<code>k_temp</code>), the result is <code>auth_ciphertext</code>. Encode this with base64.</li> | 108 | <li>Pick a random IV (<code>iv</code>).</li> |
107 | <li>The temporary key you have picked <code>k_temp</code> is encrypted using RSA with OAEP padding scheme | 109 | <li>Encrypt the serialized string of <code>P_AR</code> with 128 bit block AES in CBC mode with Pkcs7 padding using the temporary key (<code>k_temp</code>), the result is <code>C_AR</code>. Encode this with base64.</li> |
108 | using SHA-256 with <code>gradecoin_public_key</code>, giving us <code>key_ciphertext</code>. Encode this with base 64.</li> | 110 | <li>The temporary key you have picked <code>k_temp</code> is encrypted using RSA with OAEP padding scheme using SHA-256 with <code>gradecoin_public_key</code>, giving us <code>key_ciphertext</code>. Encode this with base64.</li> |
111 | <li>Base64 encode the IV (<code>iv</code>) as well.</li> | ||
109 | <li>The payload JSON object (<code>auth_request</code>) can be serialized now:</li> | 112 | <li>The payload JSON object (<code>auth_request</code>) can be serialized now:</li> |
110 | </ul> | 113 | </ul> |
111 | <pre style="background-color:#ffffff;"> | 114 | <pre style="background-color:#ffffff;"> |
112 | <code class="language-json" data-lang="json"><span style="color:#545052;">{ | 115 | <code class="language-json" data-lang="json"><span style="color:#545052;">{ |
113 | "</span><span style="color:#009854;">c</span><span style="color:#545052;">": "</span><span style="color:#009854;">auth_ciphertext</span><span style="color:#545052;">", | 116 | "</span><span style="color:#009854;">c</span><span style="color:#545052;">": "</span><span style="color:#009854;">C_AR</span><span style="color:#545052;">", |
114 | "</span><span style="color:#009854;">iv</span><span style="color:#545052;">": "</span><span style="color:#009854;">hexadecimal</span><span style="color:#545052;">", | 117 | "</span><span style="color:#009854;">iv</span><span style="color:#545052;">": "</span><span style="color:#009854;">iv</span><span style="color:#545052;">", |
115 | "</span><span style="color:#009854;">key</span><span style="color:#545052;">": "</span><span style="color:#009854;">key_ciphertext</span><span style="color:#545052;">" | 118 | "</span><span style="color:#009854;">key</span><span style="color:#545052;">": "</span><span style="color:#009854;">key_ciphertext</span><span style="color:#545052;">" |
116 | } | 119 | } |
117 | </span></code></pre> | 120 | </span></code></pre> |
118 | <p>If your authentication process was valid, you will be given access and your public key fingerprint that is your address.</p> | 121 | <p>If your authentication process was valid, you will be given access and your public key fingerprint that is your address. |
122 | You can now sign JWTs to send authorized transaction requests.</p> | ||
119 | 123 | ||
120 | 124 | ||
121 | </div> | 125 | </div> |