https://medium.com/@ricardojpsantos/building-and-end-to-end-encryption-framework-in-swift-cff7c8909130