/** *--------------------------------------------------------------------\n * HSLU T&A Hochschule Luzern Technik+Architektur \n *--------------------------------------------------------------------\n * * \brief ASYD assignment crypto 03 * \file * \author Basil Estermann, basil.estermann@stud.hslu.ch * Simon Frei, simon.frei@stud.hslu.ch * Jonas Arnold, jonas.arnold@stud.hslu.ch * \date 10.03.2023 * *-------------------------------------------------------------------- */ #include #include #include #include #include "encryptionArithmetic.h" #include "DHKE.h" #define KEY_LENGTH 64 void main(void) { /* Initialize variables */ // P has to be a prime number! Large prime number (64bit): 3203431780337000 t_encryptionArithmetic P; encryptionArithmetic_Init(&P, KEY_LENGTH); if (encryptionArithmetic_stringToHex("3203431780337000", P.number, KEY_LENGTH) == false) { printf("ERROR: Creating P."); return 1000000; } // alpha not required for session key generation //t_encryptionArithmetic alpha; //encryptionArithmetic_Init(&alpha, KEY_LENGTH); //if (encryptionArithmetic_stringToHex("13", alpha.number, KEY_LENGTH) == false) { // printf("ERROR: Creating alpha."); // return 1000001; //} t_encryptionArithmetic pub; encryptionArithmetic_Init(&pub, KEY_LENGTH); if (encryptionArithmetic_stringToHex("1370122177720875", pub.number, KEY_LENGTH) == false) { printf("ERROR: Creating pub."); return 1000002; } t_encryptionArithmetic priv; encryptionArithmetic_Init(&priv, KEY_LENGTH); if (encryptionArithmetic_stringToHex("9778729279583412", priv.number, KEY_LENGTH) == false) { printf("ERROR: Creating priv."); return 1000003; } t_encryptionArithmetic session_key; encryptionArithmetic_Init(&session_key, KEY_LENGTH); /* Create session key */ squareAndMultiply(&pub, &priv, &P, &session_key, KEY_LENGTH); /* Write session key */ printf("%i",*session_key.number); return 0; }