diff options
| -rw-r--r-- | scripts/encryptor.py | 24 | ||||
| -rw-r--r-- | src/handlers.rs | 9 | ||||
| -rw-r--r-- | tests/route_tests.rs | 2 |
3 files changed, 23 insertions, 12 deletions
diff --git a/scripts/encryptor.py b/scripts/encryptor.py index 008ac51..2dac487 100644 --- a/scripts/encryptor.py +++ b/scripts/encryptor.py | |||
| @@ -20,16 +20,28 @@ cipher = Cipher(algorithms.AES(key), mode) | |||
| 20 | 20 | ||
| 21 | encryptor = cipher.encryptor() | 21 | encryptor = cipher.encryptor() |
| 22 | 22 | ||
| 23 | padder = padding.PKCS7(128).padder() | ||
| 24 | 23 | ||
| 25 | payload_string = """{"public_key":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzJN9ALFoUHE8SigFhtql | 24 | payload = dict() |
| 26 | \\n+GPI6dIVHDCfAFXe6DU131yXoL14imBRBb5SevMou5WGiL7XBTdtlRaY8+dkNdFz\\nWEMhPoe++/GvV3u6Mq6UAJMjuiJj838NbJVl+83+NEP66htXpqidTIdr | 25 | payload["public_key"] = """-----BEGIN PUBLIC KEY----- |
| 27 | 7syaRU1T\\n0PfgvVYdNkwiWkTVtwveRchGtUwp2iZePMSF1+vtKKDvzXgZuwrKBhwBFXz6ApSZ\\n+eGkWhK1pW6TRTSENlySwb/DEg5PckzOzApLTTQqi4uu+sHU | 26 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoNsLhsQzL+5HiGuaI4mu |
| 28 | D+McAtOP9pNILwst\\nG87LxNEO0roFqUaDIhRolgkF8jol2BUZmKChdy84XX+L6jpqDvPsxuTUpIghr0Jq\\nvQIDAQAB\\n-----END PUBLIC KEY-----","st | 27 | K0TqiLEOFPOl8kd9pWR8eop0b7/N2ggDRXATIkV+XwzeQp+k9lGT1h2B2bDhxn51 |
| 29 | udent_id":"e223795","passwd":"pmcTCKox99NFsqp"}""" | 28 | lBESb2rSqKKzTVf4SXoPxqvPwsi1bnmHcRG8tTr+ZWcJdblXabMUkKUJCrwKhvr8 |
| 29 | UpOi0tndcc7buVq4EWCIBUeG4SCFHeBu1Ue9Zus7BpwjSxF4jHH4M8ssl/ioN8+m | ||
| 30 | qz9LcDQe3kvVRMlVbaXjYnWyP0VjwRbQuwIjMsDVaTQUIVtPZY9el7LiIxCqZ4mO | ||
| 31 | cnnwlIZyGLN52uqDZ1cz7aSO18YIGcbCpxuOuPhSzrnZNvHJZFIkacd477fK+PKB | ||
| 32 | 7QIDAQAB | ||
| 33 | -----END PUBLIC KEY-----""" | ||
| 34 | payload["student_id"] = "e223795" | ||
| 35 | payload["passwd"] = "pmcTCKox99NFsqp" | ||
| 36 | |||
| 37 | import json | ||
| 38 | payload_string = json.dumps(payload) | ||
| 30 | 39 | ||
| 31 | byte_guys = str.encode(payload_string) | 40 | byte_guys = str.encode(payload_string) |
| 41 | |||
| 42 | padder = padding.PKCS7(128).padder() | ||
| 32 | padded_data = padder.update(byte_guys) | 43 | padded_data = padder.update(byte_guys) |
| 44 | padded_data += padder.finalize() | ||
| 33 | 45 | ||
| 34 | ct = encryptor.update(padded_data) + encryptor.finalize() | 46 | ct = encryptor.update(padded_data) + encryptor.finalize() |
| 35 | 47 | ||
diff --git a/src/handlers.rs b/src/handlers.rs index 2401c0d..ee0fbf0 100644 --- a/src/handlers.rs +++ b/src/handlers.rs | |||
| @@ -151,7 +151,7 @@ pub async fn authenticate_user( | |||
| 151 | 151 | ||
| 152 | let res_json = warp::reply::json(&GradeCoinResponse { | 152 | let res_json = warp::reply::json(&GradeCoinResponse { |
| 153 | res: ResponseType::Error, | 153 | res: ResponseType::Error, |
| 154 | message: "Given IV has invalid length".to_owned(), | 154 | message: "Given IV has invalid length, use a 128 bit key".to_owned(), |
| 155 | }); | 155 | }); |
| 156 | 156 | ||
| 157 | return Ok(warp::reply::with_status(res_json, StatusCode::BAD_REQUEST)); | 157 | return Ok(warp::reply::with_status(res_json, StatusCode::BAD_REQUEST)); |
| @@ -176,9 +176,8 @@ pub async fn authenticate_user( | |||
| 176 | } | 176 | } |
| 177 | }; | 177 | }; |
| 178 | 178 | ||
| 179 | println!(">>>{:?}<<<", auth_packet); | 179 | let mut buf = auth_packet.to_vec(); |
| 180 | 180 | let auth_plaintext = match cipher.decrypt(&mut buf) { | |
| 181 | let auth_plaintext = match cipher.decrypt_vec(&auth_packet) { | ||
| 182 | Ok(p) => p, | 181 | Ok(p) => p, |
| 183 | Err(err) => { | 182 | Err(err) => { |
| 184 | println!( | 183 | println!( |
| @@ -195,7 +194,7 @@ pub async fn authenticate_user( | |||
| 195 | } | 194 | } |
| 196 | }; | 195 | }; |
| 197 | 196 | ||
| 198 | let utf8_auth_plaintext = match String::from_utf8(auth_plaintext.clone()) { | 197 | let utf8_auth_plaintext = match String::from_utf8(auth_plaintext.to_vec()) { |
| 199 | Ok(text) => text, | 198 | Ok(text) => text, |
| 200 | Err(err) => { | 199 | Err(err) => { |
| 201 | debug!( | 200 | debug!( |
diff --git a/tests/route_tests.rs b/tests/route_tests.rs index 537b3d8..f3fbb0e 100644 --- a/tests/route_tests.rs +++ b/tests/route_tests.rs | |||
| @@ -445,7 +445,7 @@ FQIDAQAB | |||
| 445 | let res = warp::test::request() | 445 | let res = warp::test::request() |
| 446 | .method("POST") | 446 | .method("POST") |
| 447 | .json(&InitialAuthRequest { | 447 | .json(&InitialAuthRequest { |
| 448 | c: "xsF0qqyokuvOZJ4CgnW4mzfLHaTZS3vLqr7y8LFx6pdKo0XKXBJ4+Ojx8Uz6CYrQZLPy39O485BZNtYtLzcfF/03MePBNgSRM6ccVuh6hJ8UUAjv9nf93gZlnGceMP0bLKEaYRHTsgyW+s0y0ki7/CfYn3vveLDd4NVkkgFUAebcmMuAJJt0OAzSLgsQ/kww6hOOsIcIlBNlLIi0dopCUxE5h7aPqV4WyrxA/PSvE8hM8LcfYiATTa7PyinfkjCRu7hzItM/N3+h/zubI+6ht8lY4V/19WB24HnMZJdP1odAPuKbSDiyZoMvq+P7jHfWnbJxJJI7hEYlbB45MNMnFenVhzwEtIqHu6JEGhi7umDoh2zUDAXzofERkd3qNgPtV6L3hxmDX94Y8FIJ9ZdDj/EG06PXj9P3kg0Gt4t+hi+J8h+RtV+g+Pwza1kFCLA6sXoPxxhTuEGyYCYi+DYtWCOCFo2loyReg+juIQQRpSZsZmu4Ml5eEcVpD24lUWZ6yO/AL/TjA9eSU+PgSrQzNBggMWg4Pd6MubILBTI+crt/rSCKwcGBu2IDEiVTIWLCqlMW/PHL6LkLyLnnvOuP6yHKwpnlWboV9h+TSDfzs4aur1AoUnW+UuEQXvYYfVNkSPJ+dsOGHwi1LyAql3H36jX4dtESGZSINUjeiYxR8fwZdnge1Eo+sOGT3cQ+wCL9".to_owned(), | 448 | c: "D9OKSp4XD+niltqhoiTEyz3pTxGm5ZKYVNFPofW40M6Km7wE7FgIpfTkurBZ6tQsG/rYPRsd6C/Qo+o3HrgOYC8BDprwpnYb7UnJdL2pe44ZMEsPAmDAdwTP9WozY0lr+bjEjtTM1mVQnIdfknychFek/FNi3l8MrapeFTxFaTMGxWuS1+wEuAkcz4AR4+jooaXVAEpKrPiSXqbywF9OQ41tk0kRiXn234dj40ndND+GlfMgghITuBJrJx6tzLppAZNIIGwUjQDt5Oib5dEGrPOe+rran1D26YNhZOtrfYEGyUSN+/58HbItQlLrgFhL6zRT7ojw/Eg4jYXndK0xNgYGyhAn5UI/qnI2NPpZU7Wd3sJKlWc7HfrjNnKVKlcrhHtYy3FXfN/hLg7SFmuSfXqqvVbNVT6pEDU6Y5NahOYaE/vkL0no7F7lz0UjAlgQCmn5yN7mKs3yLSnlx6hmsK/fVoqGBcOIbYY5gzYMlAQ3E+lq0p2MPEoWC8NYxStSeo9M8uLYT6Jl3hYVf8aLgd1l0HEiCyT+kWxvcR5hw42I7gqaoUcnr53Zm1mYK30/fvZ6lxsrb4FphldgQC5fx6nwEgjaLUeB4n0oZTSRLbrd9ZXCjUG4FNmM+sOklhIXyTYUj4VcBSwZuAvJZEFf2em68e7ySJs/ysz+TGu3eVeRc+voAvI9mGLxWnSEjWx64po7PO61uG6ikadHZH+wIw==".to_owned(), |
| 449 | iv: "bmV2ZXJtaW5kdGhlbmZ1aw==".to_owned(), | 449 | iv: "bmV2ZXJtaW5kdGhlbmZ1aw==".to_owned(), |
| 450 | key: "s4cn9BSmuForX6PxJAa55Es4t2puXuDtdII1lxEArqVlP+uYd5jDKofFtn9PCAoY7jyTgBIhQW7Ah5MGCcufWTaKHAjFVfSZ+qGwbGbBcklbNGH/F7cJ0Pe7kOCddUpIvLG6WH6+mnvyPs8PwDyagsx1Jc2PSSOYLAwkECvPbjiUjQiBixguTRNsU2eKaqzLimPE0w2ztvdA+IgCv94UPhjQfQrnMGK+Ppn3oK7IfKQJ7v2DLVNuz4d/BpwuqD+lYYAu4B4qn3daNR32a/mqAAlPg/RbPlH69N44Qh/NYux90FOY0XKxUskEwsAUw8dHFzzdKPcGx4C0s5e4KSLGkw==".to_owned(), | 450 | key: "s4cn9BSmuForX6PxJAa55Es4t2puXuDtdII1lxEArqVlP+uYd5jDKofFtn9PCAoY7jyTgBIhQW7Ah5MGCcufWTaKHAjFVfSZ+qGwbGbBcklbNGH/F7cJ0Pe7kOCddUpIvLG6WH6+mnvyPs8PwDyagsx1Jc2PSSOYLAwkECvPbjiUjQiBixguTRNsU2eKaqzLimPE0w2ztvdA+IgCv94UPhjQfQrnMGK+Ppn3oK7IfKQJ7v2DLVNuz4d/BpwuqD+lYYAu4B4qn3daNR32a/mqAAlPg/RbPlH69N44Qh/NYux90FOY0XKxUskEwsAUw8dHFzzdKPcGx4C0s5e4KSLGkw==".to_owned(), |
| 451 | }) | 451 | }) |
