Contenu connexe Similaire à How to Add End-to-End Encryption to Your React App (20) Plus de IronCore Labs (7) How to Add End-to-End Encryption to Your React App1. HOW TO ADD END TO END
ENCRYPTION TO YOUR REACT APP
15. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
import * as IronWeb from "@ironcorelabs/ironweb";
const encryptionMiddleware = () => (next) => (action) => {
if (action.type === “ADD_BLOOD_TEST") {
return encryptBloodTest(next, action, group.id);
}
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === "GET_BLOOD_TEST") {
if (action.payload.encrypted) {
return decryptBloodTest(next, action);
}
return next(action);
}
next(action);
};
16. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
import * as IronWeb from "@ironcorelabs/ironweb";
const encryptionMiddleware = () => (next) => (action) => {
if (action.type === “ADD_BLOOD_TEST") {
return encryptBloodTest(next, action, group.id);
}
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === "GET_BLOOD_TEST") {
if (action.payload.encrypted) {
return decryptBloodTest(next, action);
}
return next(action);
}
next(action);
};
17. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
import * as IronWeb from "@ironcorelabs/ironweb";
const encryptionMiddleware = () => (next) => (action) => {
if (action.type === “ADD_BLOOD_TEST") {
return encryptBloodTest(next, action, group.id);
}
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === "GET_BLOOD_TEST") {
if (action.payload.encrypted) {
return decryptBloodTest(next, action);
}
return next(action);
}
next(action);
};
18. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
import * as IronWeb from "@ironcorelabs/ironweb";
const encryptionMiddleware = () => (next) => (action) => {
if (action.type === “ADD_BLOOD_TEST") {
return encryptBloodTest(next, action, group.id);
}
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === "GET_BLOOD_TEST") {
if (action.payload.encrypted) {
return decryptBloodTest(next, action);
}
return next(action);
}
next(action);
};
19. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
import * as IronWeb from "@ironcorelabs/ironweb";
const encryptionMiddleware = () => (next) => (action) => {
if (action.type === “ADD_BLOOD_TEST") {
return encryptBloodTest(next, action, group.id);
}
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === "GET_BLOOD_TEST") {
if (action.payload.encrypted) {
return decryptBloodTest(next, action);
}
return next(action);
}
next(action);
};
20. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === “GET_BLOOD_TEST”) {
return decryptBloodTest(next, action);
}
next(action);
};
function encryptBloodTest(next, action, hospital) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospital }]
}
})
.then((encryptedDoc) => {
next({...action,
21. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === “GET_BLOOD_TEST”) {
return decryptBloodTest(next, action);
}
next(action);
};
function encryptBloodTest(next, action, hospital) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospital }]
}
})
.then((encryptedDoc) => {
next({...action,
22. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === “GET_BLOOD_TEST”) {
return decryptBloodTest(next, action);
}
next(action);
};
function encryptBloodTest(next, action, hospital) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospital }]
}
})
.then((encryptedDoc) => {
next({...action,
23. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === “GET_BLOOD_TEST”) {
return decryptBloodTest(next, action);
}
next(action);
};
function encryptBloodTest(next, action, hospital) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospital }]
}
})
.then((encryptedDoc) => {
next({...action,
24. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
next(action);
};
const decryptionMiddleware = () => (next) => (action) => {
if (action.type === “GET_BLOOD_TEST”) {
return decryptBloodTest(next, action);
}
next(action);
};
function encryptBloodTest(next, action, hospital) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospital }]
}
})
.then((encryptedDoc) => {
next({...action,
25. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
function encryptBloodTest(next, action, hospital) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospital }]
}
})
.then((encryptedDoc) => {
next({...action,
payload: { ...action.payload,
body: encryptedDoc.document,
id: encryptedDoc.documentID,
encrypted: true
},
});
})
.catch(() => {...});
}
26. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
function encryptBloodTest(next, action, hospital) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: personalHealthInfoID }]
}
})
.then((encryptedDoc) => {
next({...action,
payload: { ...action.payload,
body: encryptedDoc.document,
id: encryptedDoc.documentID,
encrypted: true
},
});
})
.catch(() => {...});
}
27. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
function encryptBloodTest(next, action, hospitalID) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospitalID }]
}
})
.then((encryptedDoc) => {
next({...action,
payload: { ...action.payload,
body: encryptedDoc.document,
id: encryptedDoc.documentID,
encrypted: true
},
});
})
.catch(() => {...});
}
28. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
function encryptBloodTest(next, action, hospitalID) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospitalID }]
}
})
.then((encryptedBloodTest) => {
next({...action,
payload: { ...action.payload,
body: encryptedBloodTest.document,
id: encryptedBloodTest.documentID,
encrypted: true
},
});
})
.catch(() => {...});
}
29. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
function encryptBloodTest(next, action, hospitalID) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: hospitalID }]
}
})
.then((encryptedDoc) => {
next({...action,
payload: { ...action.payload,
body: encryptedDoc.document,
id: encryptedDoc.documentID,
encrypted: true
},
});
})
.catch(() => {...});
}
30. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
.catch(() => {…});
}
function decryptBloodTest(next, action) {
IronWeb.document.decrypt(action.payload.id, action.payload.body)
.then((bloodTest) => {
next({
…action,
payload: {
…action.payload,
body: IronWeb.codec.utf8.fromBytes(bloodTest.data)
},
});
})
.catch(() => {...});
}
31. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
.catch(() => {…});
}
function decryptBloodTest(next, action) {
IronWeb.document.decrypt(action.payload.id, action.payload.body)
.then((bloodTest) => {
next({
...action,
payload: {
…action.payload,
body: IronWeb.codec.utf8.fromBytes(bloodTest.data)
},
});
})
.catch(() => {...});
}
32. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
.catch(() => {…});
}
function decryptBloodTest(next, action) {
IronWeb.document.decrypt(action.payload.id, action.payload.body)
.then((bloodTest) => {
next({
...action,
payload: {
…action.payload,
body: IronWeb.codec.utf8.fromBytes(bloodTest.data)
},
});
})
.catch(() => {...});
}
33. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
.catch(() => {…});
}
function decryptBloodTest(next, action) {
IronWeb.document.decrypt(action.payload.id, action.payload.body)
.then((bloodTest) => {
next({
...action,
payload: {
…action.payload,
body: IronWeb.codec.utf8.fromBytes(bloodTest.data)
},
});
})
.catch(() => {...});
}
34. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
.catch(() => {…});
}
function decryptBloodTest(next, action) {
IronWeb.document.decrypt(action.payload.id, action.payload.body)
.then((bloodTest) => {
next({
...action,
payload: {
…action.payload,
body: IronWeb.codec.utf8.fromBytes(bloodTest.data)
},
});
})
.catch(() => {...});
}
35. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
.catch(() => {…});
}
function decryptBloodTest(next, action) {
IronWeb.document.decrypt(action.payload.id, action.payload.body)
.then((bloodTest) => {
next({
...action,
payload: {
…action.payload,
body: IronWeb.codec.utf8.fromBytes(bloodTest.data)
},
});
})
.catch(() => {...});
}
39. // @IronCoreLabs @cipher_sift
IronCoreMiddleware.js
function encryptNewOrder(next, action, hospital) {
return IronWeb.document.encrypt(IronWeb.codec.utf8.toBytes(action.payload.body), {
accessList: {
groups: [{ id: personalHealthInfoID }]
}
})
.then((encryptedDoc) => {
next({...action,
payload: { ...action.payload,
body: encryptedDoc.document,
id: encryptedDoc.documentID,
encrypted: true
},
});
})
.catch(() => {...});
}
46. // @IronCoreLabs @cipher_sift
Data control:
Data control is the ability for a data owner
to determine who can use their data, see how
it's used and by whom, and to change their
mind and revoke their access at any time,
regardless of where the data is stored.
47. If your application is not using
end-to-end encryption
it is not private or secure.
Implement data control
for who, how, and revocation.