// funcion auxiliar de validate, tambien implementada en assembly void write_error(int tipo_de_error, char* tag1, char* tag2, int nro_linea, char** errmsg) { size_t size = ERRMSG + calcular_largo(tag1) + calcular_largo(tag2); (*errmsg) = (char*)malloc(sizeof(char)*size); (*errmsg)[size-1]='\0'; switch (tipo_de_error) { case 1: sprintf(*errmsg, "es tag sin abrir - nro de linea: %d - tag: ", nro_linea); print_tag(tag2, errmsg); break; case 2: sprintf(*errmsg, "es tag mal anidado - nro de linea: %d - tags: ", nro_linea); print_tag(tag1, errmsg); int tam = strlen(*errmsg); (*errmsg)[tam] = ' '; (*errmsg)[tam+1] = 'y'; (*errmsg)[tam+2] = ' '; (*errmsg)[tam+3] = '\0'; print_tag(tag2, errmsg); break; case 3: sprintf(*errmsg, "hay tags sin cerrar - nro de linea: %d - tag: ", nro_linea); print_tag(tag1, errmsg); break; default: break; } }
void desencriptar(long int mensajeEncriptado[], char salida[], long int d, long int n) { for (int i = 0; i <= calcular_largo(mensajeEncriptado); ++i) { long int numero = mensajeEncriptado[i]; char caracter = potencia_modular(numero, d, n); salida[i] = caracter; } }