/**
 *--------------------------------------------------------------------\n
 *          HSLU T&A Hochschule Luzern Technik+Architektur            \n
 *--------------------------------------------------------------------\n
 *
 * \brief         model solution for ASYD assignment crypto 04
 * \file
 * \author        Stefano Nicora, stefano.nicora@hslu.ch
 * \date          03.02.23
 *
 *--------------------------------------------------------------------
 */

#ifndef DSA_H_
#define DSA_H_
#define _CRT_SECURE_NO_WARININGS

#include <stdint.h>
#include <stdio.h>
#include "DSA.h"
#include "encryptionArithmetic.h"

void squareAndMultiply(t_encryptionArithmetic* base, t_encryptionArithmetic* exponent, t_encryptionArithmetic* modulo, t_encryptionArithmetic* result, uint32_t keyLength);

void square(t_encryptionArithmetic* base, t_encryptionArithmetic* exponent, t_encryptionArithmetic* result, uint32_t keyLength);

void moduloOperation(t_encryptionArithmetic* number, t_encryptionArithmetic* moduloValue, uint32_t keyLength);

void modInverse(t_encryptionArithmetic* number, t_encryptionArithmetic* modValue, t_encryptionArithmetic* result, uint32_t keyLength);

#endif // !RSA_H_