Looks like the project has significant progress! So far, I am almost done making the bare-bones structure of the demo application, with abstraction in all places. For example, places which require encryption are demarked with an abstract function, which I will be implementing later. This approach to programming will allow me to plug-and-play different implementations according to performance and efficiency, giving greater flexibility. Additionally, it will help in easily maintaining the project with necessary updates, as the core will remain mostly unchanged.
On the implementation side, I decided to go with the networking. As stated in the previous blog post, I want to have the computer auto-create an ad hoc network which the other computer can easily and securely connect to. Using some built-in libraries and system functions, I got mixed results. It worked well on Windows, but gave security errors on Mac. As a cross-platform application, it was necessary for me to have my application work everywhere. Reading online, it looked as if I had to create a certificate with KeyChain Access, and I was able to make something in Swift (Apple’s native language) but not in Java. A conversion to Swift would not be possible, as a focus of this project is also cross-platform functionality. My future goals were also to port this to Android and iOS.
Spending many days on this, I decided to pause on this and manually configure networks for now. I want to get going with the actual encryption parts and make a viable demo application to demonstrate the potential of “mental poker” based decentralized authentication.