Skip to content
This repository has been archived by the owner on Jul 17, 2021. It is now read-only.

Commit

Permalink
fix: adjust data request format of health office key
Browse files Browse the repository at this point in the history
  • Loading branch information
BerniWittmann committed Mar 21, 2021
1 parent 8d539a3 commit 8fcf3eb
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 10 deletions.
4 changes: 2 additions & 2 deletions src/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ describe('index', () => {
privateKey = priv;
dataRequest = {
healthDepartment: 'Test Health Department',
keyOfHealthDepartment: publicKey,
key: Buffer.from(publicKey, 'utf-8').toString('base64'),
keyReferenz: 'random-string-keyref',
start: '2011-10-05T14:48:00.000Z',
end: '2021-10-05T14:48:00.000Z',
Expand All @@ -77,7 +77,7 @@ describe('index', () => {
});
expect(mockedAxios.get).toHaveBeenCalledWith('/data-requests/12345-abcde');

mockedAxios.post.mockResolvedValue({ status: 200, data: { success: true } });
mockedAxios.post.mockResolvedValue({ status: 201, data: { success: true } });
await iris.sendContactsEvents('12345-abcde', submission, {
firstName: 'Hans',
lastName: 'Müller',
Expand Down
12 changes: 7 additions & 5 deletions src/lib/Iris.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ export default class Iris {
}
const dataRequest = response.data as IrisDataRequestDTO;
this.codeKeyMap.set(code, {
keyOfHealthDepartment: dataRequest.keyOfHealthDepartment,
key: dataRequest.key,
keyReferenz: dataRequest.keyReferenz,
});
return {
Expand All @@ -52,15 +52,17 @@ export default class Iris {
throw new Error("Code could not be found in key map. Did you perform 'getDataRequest' before?");
}
const keys = this.codeKeyMap.get(code);
const { dataToTransport, keyToTransport, nonce } = encryptData(keys.keyOfHealthDepartment, data);
const { dataToTransport, keyToTransport, nonce } = encryptData(keys.key, data);
const response = await this.axiosInstance.post(`/data-submissions/${code}/contacts_events`, {
checkCode: [ getNameCheckHash(user.firstName, user.lastName), getBirthDateCheckHash(user.birthDate) ].filter(c => !!c),
checkCode: [getNameCheckHash(user.firstName, user.lastName), getBirthDateCheckHash(user.birthDate)].filter(
(c) => !!c,
),
secret: keyToTransport,
keyReferenz: keys.keyReferenz,
encryptedData: dataToTransport,
nonce
nonce,
} as IrisContactsEventsSubmissionDTO);
if (response.status !== 200) {
if (response.status !== 201) {
console.error('IRIS Gateway responded the following data', response.data);
throw new Error(`Request failed with status Code ${response.status}`);
}
Expand Down
2 changes: 1 addition & 1 deletion src/lib/crypto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ export function encryptData(
const cipher = crypto.createCipheriv('AES-256-CBC', key, nonce);
const dataString = JSON.stringify(data);
const encryptedData = Buffer.concat([cipher.update(dataString, 'utf8'), cipher.final()]);
const encryptedKey = crypto.publicEncrypt({ key: keyOfHealthDepartment }, key);
const encryptedKey = crypto.publicEncrypt({ key: Buffer.from(keyOfHealthDepartment, 'base64') }, key);
return {
dataToTransport: encryptedData.toString('base64'),
keyToTransport: encryptedKey.toString('base64'),
Expand Down
2 changes: 1 addition & 1 deletion src/types/IrisCodeKeyMap.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import IrisDataRequestDTO from './dto/IrisDataRequestDTO';
import IrisCode from './IrisCode';

type IrisCodeKeyMap = Map<IrisCode, Pick<IrisDataRequestDTO, 'keyOfHealthDepartment' | 'keyReferenz'>>;
type IrisCodeKeyMap = Map<IrisCode, Pick<IrisDataRequestDTO, 'key' | 'keyReferenz'>>;
export default IrisCodeKeyMap;
2 changes: 1 addition & 1 deletion src/types/dto/IrisDataRequestDTO.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export default interface IrisDataRequestDTO {
healthDepartment: string;
keyOfHealthDepartment: string;
key: string;
keyReferenz: string;
start?: string;
end?: string;
Expand Down

0 comments on commit 8fcf3eb

Please sign in to comment.