Skip to content

Commit

Permalink
Add platform specific keys
Browse files Browse the repository at this point in the history
  • Loading branch information
SebastienTainon committed Apr 15, 2024
1 parent 3a1311c commit 43eaa56
Show file tree
Hide file tree
Showing 7 changed files with 54 additions and 4 deletions.
37 changes: 37 additions & 0 deletions .circleci/config.yml
Expand Up @@ -26,6 +26,43 @@ jobs:
TEST_MODE_USER_ID: 1
GRADER_QUEUE_DEBUG_PASSWORD: test
CODECAST_DEBUGGERS_URL: ws://127.0.0.1:9003
PLATFORM_OWN_PRIVATE_KEY: -----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC3x0GD6iMVOuAV
4PGgaqoFJCRb8ENKX8f6rOkillMKPibDvPKsh5XvNpo+4D/yDxZU8OOWK5XEvA6d
fqnxtPRkSCzKjj+eqXZUQjVwsGpKjBDdWggKp5FgeqC/7yD8HiYXG9FGk01aIz1o
TzQq2NcF6yLsaNQuODomemp+fVQAavHgCWdu5psfnT/FChAxYsdKlJWGekRXletQ
+/McZuRbnX8dFEwQX0WPlJI+zy9A9sDlk7wfs2AfA37x/I27JW2b0PBj1BlWnaZi
VsuVX/7LzGt3lMp/9obIyNWvd27ljB+iyuWudMAn4OCjG5lHDvsMpqIBPFKkSJBE
f8LbTyY7AgMBAAECggEANWPyYSAC3DaUBlco61lBlqfG1lzpN7C22NkmC9HPQyEG
QwRgHgZv5SSgUBb3DNwcOUYYYDa+Vn7p4hB7z8gp3f5n4NrNmcsSoOzxOJFP9+NU
PPJcdrfy0KwfilMu6n/ZwgnnVRETPlYRj32/IpmHcmU66qKTze+w2R/kU2YWot3w
6HDN0xW7rXSXENNbS6sPizu8ppQSbbe4paGb/Kd+lpvnUzCSb+kJ1I5uCDlhM0Wq
QhJqUH6LJCTYKATIr921xaUR5g+0xX2WchcvZYeG3jz6D+E2JPzOsm6j0q2N65MB
8qiSTd93s+ApVEruI2zr3jrEuAL65zBIPnxP0INTdQKBgQDWfdilk0Tn/yx5q6M9
3ECXGlJ3+qmIJNtEO7ehW+WMM15OAtsPy3oDLmqrggTqshrTHuJDVRt3SPiF10yJ
QsMVpY1HDIYDBnhL/xXIvYeI1JOC7bZWgoDJQQE3mvi0ZdLHI5PGpvwPm/QPno6d
XFXnABdxmJx3yfAj49V3eJPDFQKBgQDbV9dTfXolQ9brtvyV05DRHdO9r/KhufGw
F/x2uWSIm4YgKpF4qS5MzHh2qkvz8S7NGY6U6hJfFQJpK2bDKY2foTH+QzPGr09a
B2ywkpL881hk65NN+Dd78Fsq4t5VQ6f68HYzzbfnWn5gkKUgdSVdxR0VJMm9T3SK
DjHwDRnYDwKBgQCAiYYNI4YFqYuTlmILLjSe2K1XLSXvanbkGw1ea13SeO4ovdld
S8jgoy5VfWNI6lbc8gMR6qy8/UPBoVZCY3nZPQ6+5yhgI75vfHwngjz4qLuFmMLO
cQKQmJ4MHpiwMtzvbcifIW6oRAMsYQ6CCtWHyyxBbP1HZAK+30gLgny6SQKBgEqW
jmSX0MeHUDiL20zfyukxqWVhxbJ1Vti472M4HBXQPUYG870CWvpGtdg0hOuJYo7g
V/oPtvuaW12EIsfPA5f66tM56wtvZh6JU86fqVhXMAHxkf/7nnKJA5eL2mtIPIE6
8Bchp54Gyd7wkRZ+f5xpgUBFaEz2Df08YoLtEZLFAoGBAKrPUXpj4hCsql5cs0wb
wqM1cE5jX4v3kp9yLPowajvJ5lqUaOwF+IdvJdJZij+GMiU68RnYe/HeVSh8VuQd
D1xjXqelqtiuVY0MtDvDeqU0VSYQ7TjaTYcqC0xsUXBC2gs8SN1cn9CY9Y2id0Cy
228q7a9S6AUIicRMFGVLDjVz
-----END PRIVATE KEY-----
PLATFORM_OWN_PUBLIC_KEY: -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt8dBg+ojFTrgFeDxoGqq
BSQkW/BDSl/H+qzpIpZTCj4mw7zyrIeV7zaaPuA/8g8WVPDjliuVxLwOnX6p8bT0
ZEgsyo4/nql2VEI1cLBqSowQ3VoICqeRYHqgv+8g/B4mFxvRRpNNWiM9aE80KtjX
Besi7GjULjg6Jnpqfn1UAGrx4AlnbuabH50/xQoQMWLHSpSVhnpEV5XrUPvzHGbk
W51/HRRMEF9Fj5SSPs8vQPbA5ZO8H7NgHwN+8fyNuyVtm9DwY9QZVp2mYlbLlV/+
y8xrd5TKf/aGyMjVr3du5YwfosrlrnTAJ+DgoxuZRw77DKaiATxSpEiQRH/C208m
OwIDAQAB
-----END PUBLIC KEY-----
steps:
- checkout
- node/install-packages:
Expand Down
2 changes: 2 additions & 0 deletions .env
Expand Up @@ -14,3 +14,5 @@ TEST_MODE=0
TEST_MODE_PLATFORM_NAME=""
TEST_MODE_USER_ID=""
CODECAST_DEBUGGERS_URL="ws://127.0.0.1:9997/remote-execution"
PLATFORM_OWN_PRIVATE_KEY=""
PLATFORM_OWN_PUBLIC_KEY=""
5 changes: 5 additions & 0 deletions README.md
Expand Up @@ -67,4 +67,9 @@ To build a new version of the back-end, use:
yarn build
```

### Generate a pair of public/private keys

```
openssl genrsa -out key.pem 2048
openssl rsa -in key.pem -outform PEM -pubout -out public.pem
```
2 changes: 1 addition & 1 deletion features/post_submission.feature
Expand Up @@ -21,7 +21,7 @@ Feature: Post submission
| 5002 | 1000 | 4001 | Evaluation | 2 | 1 | s2-t1 | 15 | 10 | 2147483647 |
And the database has the following table "tm_platforms":
| ID | name | public_key | api_url |
| 1 | codecast-test | -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2fdfSR+W+pwMz/hx11pyJndF1L+LDHyIIW3tj5vYQ57aUjtnU9LUxdscMfF1F9ZNzmHutU+bRKlutNodoEKSHVkRyotQ0qK/VO2nv+DYuiJ0EB2V1uf77xkZzrMT+htukD5XUMyAt38amb6y7daFC5dcD9B7Q2Hx1RT5hzjCILWzZsRD83xEKQ1QAg6JwYYWVVEx759O2SUDqxffyuw/wqANfgWxihlIPimVFbbDoTpfpTf7fnDZu9UU8lFIK4I3EyFRRmKGUC99sMIfw545/p2byB3veIi6507Rb2k0nlwhq2zfGwHlUbwy4QLqL9zk2ipEN5tLvJn4ltU6YOQOawIDAQAB-----END PUBLIC KEY----- | https://mockapi.com |
| 1 | codecast-test | -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt8dBg+ojFTrgFeDxoGqqBSQkW/BDSl/H+qzpIpZTCj4mw7zyrIeV7zaaPuA/8g8WVPDjliuVxLwOnX6p8bT0ZEgsyo4/nql2VEI1cLBqSowQ3VoICqeRYHqgv+8g/B4mFxvRRpNNWiM9aE80KtjXBesi7GjULjg6Jnpqfn1UAGrx4AlnbuabH50/xQoQMWLHSpSVhnpEV5XrUPvzHGbkW51/HRRMEF9Fj5SSPs8vQPbA5ZO8H7NgHwN+8fyNuyVtm9DwY9QZVp2mYlbLlV/+y8xrd5TKf/aGyMjVr3du5YwfosrlrnTAJ+DgoxuZRw77DKaiATxSpEiQRH/C208mOwIDAQAB -----END PUBLIC KEY----- | https://mockapi.com |
And I seed the ID generator to 100
And I mock the graderqueue

Expand Down
5 changes: 2 additions & 3 deletions features/steps/util_steps.ts
Expand Up @@ -17,8 +17,7 @@ Given(/^I seed the ID generator to (\d+)$/, function (seed: number) {
});
Given(/^"([^"]*)" is a token signed by the platform with the following payload:$/, async function (this, tokenName: string, payload: string) {
const tokenGenerator = new TokenGenerator();
await tokenGenerator.setKeys(appConfig.graderQueue.ownPrivateKey);
await tokenGenerator.setKeys(appConfig.platform.ownPrivateKey);
const parsedPayload = JSON.parse(payload) as Record<string, any>;
const token = await tokenGenerator.jwsSignPayload(parsedPayload);
this[tokenName] = token;
this[tokenName] = await tokenGenerator.jwsSignPayload(parsedPayload);
});
6 changes: 6 additions & 0 deletions src/config.ts
Expand Up @@ -29,6 +29,9 @@ interface Config {
url: string,
ownName: string,
},
platform: {
ownPrivateKey: string,
},
testMode: {
enabled: boolean,
platformName: string|undefined,
Expand Down Expand Up @@ -63,6 +66,9 @@ const appConfig: Config = {
url: String(process.env.GRADER_QUEUE_URL),
ownName: String(process.env.GRADER_QUEUE_OWN_NAME),
},
platform: {
ownPrivateKey: String(process.env.PLATFORM_OWN_PRIVATE_KEY),
},
testMode: {
enabled: '1' === String(process.env.TEST_MODE),
platformName: stringifyIfExists(process.env.TEST_MODE_PLATFORM_NAME),
Expand Down
1 change: 1 addition & 0 deletions src/submissions.ts
Expand Up @@ -139,6 +139,7 @@ export async function createOfflineSubmission(submissionData: OfflineSubmissionP
const submissionParameters: SubmissionParameters = {
token: submissionData.token,
taskId: tokenData.taskId,
platform: submissionData.platform,
answerToken,
answer: submissionData.answer,
sLocale: submissionData.sLocale ?? 'fr',
Expand Down

0 comments on commit 43eaa56

Please sign in to comment.