Patch level : 12.0 no patch

Files correlati     : libraries
Commento            :

aggiunto ssa
This commit is contained in:
AlexBonazzi 2019-01-15 11:48:23 +01:00
parent 85239954cb
commit f3eefc0ff5
535 changed files with 133485 additions and 0 deletions

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,164 @@

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SSALib", "SSALib\SSALib.vcproj", "{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}"
ProjectSection(ProjectDependencies) = postProject
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF} = {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SSAGetInfo", "SSAGetInfo\SSAGetInfo.vcproj", "{EB1AC636-C625-4DCD-857B-333A29F3CD3E}"
ProjectSection(ProjectDependencies) = postProject
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62} = {FEC518FD-F211-4B43-BC8B-F93E74F6DB62}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SSACreaLicenza", "SSACreaLicenza\SSACreaLicenza.vcproj", "{CFB99818-88B6-45B9-A2BA-09785781CFB6}"
ProjectSection(ProjectDependencies) = postProject
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62} = {FEC518FD-F211-4B43-BC8B-F93E74F6DB62}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SSADll", "SSADll\SSADll.vcproj", "{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}"
ProjectSection(ProjectDependencies) = postProject
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62} = {FEC518FD-F211-4B43-BC8B-F93E74F6DB62}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestDll", "TestDll\TestDll.vcproj", "{BBB86999-65EA-4F83-A1FD-917B0A38381A}"
ProjectSection(ProjectDependencies) = postProject
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C} = {7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SSAAgent", "SSAAgent\SSAAgent.vcproj", "{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}"
ProjectSection(ProjectDependencies) = postProject
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62} = {FEC518FD-F211-4B43-BC8B-F93E74F6DB62}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cryptlib", "contrib\cryptopp561\cryptlib.vcproj", "{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
DLL-Import Debug|Win32 = DLL-Import Debug|Win32
DLL-Import Debug|x64 = DLL-Import Debug|x64
DLL-Import Release|Win32 = DLL-Import Release|Win32
DLL-Import Release|x64 = DLL-Import Release|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.Debug|Win32.ActiveCfg = Debug|Win32
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.Debug|Win32.Build.0 = Debug|Win32
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.Debug|x64.ActiveCfg = Debug|x64
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.Debug|x64.Build.0 = Debug|x64
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.DLL-Import Debug|x64.Build.0 = Debug|x64
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.DLL-Import Release|Win32.Build.0 = Release|Win32
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.DLL-Import Release|x64.ActiveCfg = Release|x64
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.DLL-Import Release|x64.Build.0 = Release|x64
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.Release|Win32.ActiveCfg = Release|Win32
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.Release|Win32.Build.0 = Release|Win32
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.Release|x64.ActiveCfg = Release|x64
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.Release|x64.Build.0 = Release|x64
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.Debug|Win32.ActiveCfg = Debug|Win32
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.Debug|Win32.Build.0 = Debug|Win32
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.Debug|x64.ActiveCfg = Debug|x64
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.Debug|x64.Build.0 = Debug|x64
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.DLL-Import Debug|x64.Build.0 = Debug|x64
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.DLL-Import Release|Win32.Build.0 = Release|Win32
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.DLL-Import Release|x64.ActiveCfg = Release|x64
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.DLL-Import Release|x64.Build.0 = Release|x64
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.Release|Win32.ActiveCfg = Release|Win32
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.Release|Win32.Build.0 = Release|Win32
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.Release|x64.ActiveCfg = Release|x64
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.Release|x64.Build.0 = Release|x64
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.Debug|Win32.ActiveCfg = Debug|Win32
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.Debug|Win32.Build.0 = Debug|Win32
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.Debug|x64.ActiveCfg = Debug|x64
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.Debug|x64.Build.0 = Debug|x64
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.DLL-Import Debug|x64.Build.0 = Debug|x64
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.DLL-Import Release|Win32.Build.0 = Release|Win32
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.DLL-Import Release|x64.ActiveCfg = Release|x64
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.DLL-Import Release|x64.Build.0 = Release|x64
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.Release|Win32.ActiveCfg = Release|Win32
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.Release|Win32.Build.0 = Release|Win32
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.Release|x64.ActiveCfg = Release|x64
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.Release|x64.Build.0 = Release|x64
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.Debug|Win32.ActiveCfg = Debug|Win32
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.Debug|Win32.Build.0 = Debug|Win32
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.Debug|x64.ActiveCfg = Debug|x64
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.Debug|x64.Build.0 = Debug|x64
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.DLL-Import Debug|x64.Build.0 = Debug|x64
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.DLL-Import Release|Win32.Build.0 = Release|Win32
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.DLL-Import Release|x64.ActiveCfg = Release|x64
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.DLL-Import Release|x64.Build.0 = Release|x64
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.Release|Win32.ActiveCfg = Release|Win32
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.Release|Win32.Build.0 = Release|Win32
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.Release|x64.ActiveCfg = Release|x64
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.Release|x64.Build.0 = Release|x64
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.Debug|Win32.ActiveCfg = Debug|Win32
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.Debug|Win32.Build.0 = Debug|Win32
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.Debug|x64.ActiveCfg = Debug|x64
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.Debug|x64.Build.0 = Debug|x64
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.DLL-Import Debug|x64.Build.0 = Debug|x64
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.DLL-Import Release|Win32.Build.0 = Release|Win32
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.DLL-Import Release|x64.ActiveCfg = Release|x64
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.DLL-Import Release|x64.Build.0 = Release|x64
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.Release|Win32.ActiveCfg = Release|Win32
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.Release|Win32.Build.0 = Release|Win32
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.Release|x64.ActiveCfg = Release|x64
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.Release|x64.Build.0 = Release|x64
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.Debug|Win32.ActiveCfg = Debug|Win32
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.Debug|Win32.Build.0 = Debug|Win32
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.Debug|x64.ActiveCfg = Debug|x64
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.Debug|x64.Build.0 = Debug|x64
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.DLL-Import Debug|x64.Build.0 = Debug|x64
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.DLL-Import Release|Win32.Build.0 = Release|Win32
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.DLL-Import Release|x64.ActiveCfg = Release|x64
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.DLL-Import Release|x64.Build.0 = Release|x64
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.Release|Win32.ActiveCfg = Release|Win32
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.Release|Win32.Build.0 = Release|Win32
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.Release|x64.ActiveCfg = Release|x64
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.Release|x64.Build.0 = Release|x64
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|Win32.ActiveCfg = Debug|Win32
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|Win32.Build.0 = Debug|Win32
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|x64.ActiveCfg = Debug|x64
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|x64.Build.0 = Debug|x64
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Debug|Win32.ActiveCfg = DLL-Import Debug|Win32
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Debug|Win32.Build.0 = DLL-Import Debug|Win32
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Debug|x64.ActiveCfg = DLL-Import Debug|x64
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Debug|x64.Build.0 = DLL-Import Debug|x64
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Release|Win32.ActiveCfg = DLL-Import Release|Win32
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Release|Win32.Build.0 = DLL-Import Release|Win32
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Release|x64.ActiveCfg = DLL-Import Release|x64
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Release|x64.Build.0 = DLL-Import Release|x64
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|Win32.ActiveCfg = Release|Win32
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|Win32.Build.0 = Release|Win32
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|x64.ActiveCfg = Release|x64
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,12 @@
#ifndef HTTPCALL_H
#define HTTPCALL_H
#include "stdafx.h"
#include "ssalog.h"
#include "ssaini.h"
#include "ssalibman.h"
int manageHTTPCall(const string& request, string& response);
#endif

View File

@ -0,0 +1,506 @@
#include "stdafx.h"
#include <time.h>
#include "SSACall.h"
#include "HTTPCall.h"
string getCSS()
{
string ret = "";
ret += "<style type=\"text/css\">";
ret += "#myTable { font-family:\"Trebuchet MS\", Arial, Helvetica, sans-serif; width:100%; border-collapse:collapse; }";
ret += "#myTable td { font-size:1em; border:1px solid #98bf21; padding:3px 7px 2px 7px; }";
ret += "#myTable th {font-size:1.1em;text-align:left;padding-top:5px;padding-bottom:4px;background-color:#A7C942;color:#ffffff;}";
ret += "#myTable tr.alt td {color:#000000;background-color:#EAF2D3;}";
ret += "#myButton {font-size:1.1em; background-color:C9A742; color:ffffff; border-radius: 20px}";
ret += "h1 {font-family:\"Trebuchet MS\", Arial, Helvetica, sans-serif; font-size:1.1em;text-align:left;padding-top:5px;padding-bottom:4px;background-color:#A7C942;color:#ffffff;}";
ret += "h2 {font-family:\"Trebuchet MS\", Arial, Helvetica, sans-serif; font-size:1em; text-align:left;padding-top:5px;padding-bottom:4px;}";
ret += "</style>";
return ret;
}
void manageROOTRequest(string& risp)
{
char buf[32768];
//risp = "<!DOCTYPE html>";
risp = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
risp += "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n";
risp += "<head>\n";
//risp += "<meta http-equiv=\"Content-Type\" content=\"text/html\" />";
risp += "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />\n";
risp += getCSS();
risp += "</head>\n";
risp += "<body>";
risp += "<div><h1><center>SSA-AGENT</center></h1></div>";
SSALibMan::getInstClient()->Id(buf, 32768);
risp.append("<div><table id=myTable><tr><td>ID=").append(buf).append("</td></tr></table></div>");
risp += "<table width=100%>";
risp.append("<tr><td><center><form><button type=submit id=myButton>REFRESH</button></center></form></td></tr>");
//SPAZIO
risp += "<tr height=50></tr>";
//PRODOTTI CONFIGURATI
risp += "<tr><td><h><b>PRODOTTI CONFIGURATI</b></h><td></tr>";
risp += "<tr><td>";
risp += "<table id=myTable>";
risp += "<tr><th>PRODOTTO</th><th>MODULO</th><th>DATA SCADENZA</th><th>NUMERO ABILITAZIONI</th><th>NUMERO SERIE</th><th>UTENTI CORRENTI</th></tr>";
SSALibMan::getInstClient()->XMLProdottiConfigurati(buf, 32768);
string prodotti = string(buf);
int n=0;
int n1 = prodotti.find(TAG_PRODOTTO, n+1);
int x,x1, y, y1;
int fine = prodotti.find("</PRODOTTO>", n+1);
int rowCount=0;
while(n1!=string::npos)
{
//PRODOTTO
string tr = "<tr";
if(rowCount%2==1) tr += " class=\"alt\"";
tr += ">";
rowCount++;
risp.append(tr);
//NOME PRODOTTO
risp.append("<td>");
x = prodotti.find(ATTR_NOME, n1);
x1 = prodotti.find("\"", x+1);
x = prodotti.find("\"", x1+1);
risp.append(prodotti.substr(x1+1, x-x1-1));
risp.append("</td>");
//NOME MODULO
risp.append("<td></td>");
//DATA SCADENZA
risp.append("<td>");
x = prodotti.find(ATTR_DATA_SCAD, n1);
x1 = prodotti.find("\"", x+1);
x = prodotti.find("\"", x1+1);
risp.append(prodotti.substr(x1+1, x-x1-1));
risp.append("</td>");
//NUMERO ABILITAZIONI
risp.append("<td>");
x = prodotti.find(ATTR_NUM_ABIL, n1);
x1 = prodotti.find("\"", x+1);
x = prodotti.find("\"", x1+1);
risp.append(prodotti.substr(x1+1, x-x1-1));
risp.append("</td>");
//NUMERO SERIE
risp.append("<td>");
x = prodotti.find(ATTR_NUM_SERIE, n1);
x1 = prodotti.find("\"", x+1);
x = prodotti.find("\"", x1+1);
risp.append(prodotti.substr(x1+1, x-x1-1));
risp.append("</td>");
//UTENTI CORRENTI
risp.append("<td>");
x = prodotti.find(ATTR_CURR_USER, n1);
x1 = prodotti.find("\"", x+1);
x = prodotti.find("\"", x1+1);
risp.append(prodotti.substr(x1+1, x-x1-1));
risp.append("</td>");
//PARTITA IVA
risp.append("<td>");
x = prodotti.find(ATTR_PIVA, n1);
x1 = prodotti.find("\"", x+1);
x = prodotti.find("\"", x1+1);
risp.append(prodotti.substr(x1+1, x-x1-1));
risp.append("</td>");
risp.append("</tr>");
int y=n1;
int y1 = prodotti.find(TAG_MODULO, y+1);
while(y1!=string::npos)
{
//MODULO
string tr = "<tr";
if(rowCount%2==1) tr += " class=\"alt\"";
tr += ">";
rowCount++;
risp.append(tr);
//NOME PRODOTTO
risp.append("<td></td>");
//NOME MODULO
risp.append("<td>");
x = prodotti.find(ATTR_NOME, y1);
x1 = prodotti.find("\"", x+1);
x = prodotti.find("\"", x1+1);
risp.append(prodotti.substr(x1+1, x-x1-1));
risp.append("</td>");
//DATA SCADENZA
risp.append("<td>");
x = prodotti.find(ATTR_DATA_SCAD, y1);
x1 = prodotti.find("\"", x+1);
x = prodotti.find("\"", x1+1);
risp.append(prodotti.substr(x1+1, x-x1-1));
risp.append("</td>");
//NUMERO ABILITAZIONI
risp.append("<td>");
x = prodotti.find(ATTR_NUM_ABIL, y1);
x1 = prodotti.find("\"", x+1);
x = prodotti.find("\"", x1+1);
risp.append(prodotti.substr(x1+1, x-x1-1));
risp.append("</td>");
//NUMERO SERIE
risp.append("<td>");
risp.append("</td>");
//UTENTI CORRENTI
risp.append("<td>");
x = prodotti.find(ATTR_CURR_USER, y1);
x1 = prodotti.find("\"", x+1);
x = prodotti.find("\"", x1+1);
risp.append(prodotti.substr(x1+1, x-x1-1));
risp.append("</td>");
risp.append("</tr>");
y=y1+1;
y1 = prodotti.find(TAG_MODULO, y+1);
if(y1>fine)
y1 = string::npos;
}
n=n1+1;
n1 = prodotti.find(TAG_PRODOTTO, n+1);
fine = prodotti.find("</PRODOTTO>", n+1);
}
risp += "</table>";
risp += "</td></tr>";
//SPAZIO
risp += "<tr height=50></tr>";
//UTENTI CORRENTI
risp += "<tr><td><h><b>UTENTI CORRENTI</b></h><td></tr>";
risp += "<tr><td>";
risp += "<table id=myTable>";
risp += "<tr><th>UTENTE</th><th>ULTIMO PING</th><th>PRODOTTO</th><th>MODULO</th><th>AZIONE</th></tr>";
SSALibMan::getInstClient()->XMLUtentiCorrenti(buf, 32768);
string utenti = string(buf);
n=0;
n1 = utenti.find(TAG_UTENTE, n+1);
fine = utenti.find("</UTENTE>", n1+1);
rowCount=0;
while(n1!=string::npos)
{
//UTENTE
string tr = "<tr";
if(rowCount%2==1) tr += " class=\"alt\"";
tr += ">";
rowCount++;
risp.append(tr);
//NOME UTENTE
risp.append("<td>");
x = utenti.find(ATTR_NOME, n1);
x1 = utenti.find("\"", x+1);
x = utenti.find("\"", x1+1);
string nomeUtente=utenti.substr(x1+1, x-x1-1);
risp.append(nomeUtente);
risp.append("</td>");
//LAST PING
risp.append("<td>");
x = utenti.find(ATTR_LAST_PING, n1);
x1 = utenti.find("\"", x+1);
x = utenti.find("\"", x1+1);
risp.append(utenti.substr(x1+1, x-x1-1));
risp.append("</td>");
risp.append("<td></td><td></td>");
risp.append("<td align=center><form action=ping method=get><input type=hidden name=cid value=").append(nomeUtente).append(" /><button type=submit id=myButton>PING</button></form></td>");
int z=n1;
int z1 = utenti.find(TAG_PRODOTTO, z+1);
int fine1 = utenti.find("</PRODOTTO>", z1+1);
while(z1!=string::npos && z1<fine)
{
//PRODOTTO
string tr = "<tr";
if(rowCount%2==1) tr += " class=\"alt\"";
tr += ">";
rowCount++;
risp.append(tr);
//NOME PRODOTTO
risp.append("<td></td><td></td><td>");
x = utenti.find(ATTR_NOME, z1);
x1 = utenti.find("\"", x+1);
x = utenti.find("\"", x1+1);
string nomeProdotto=utenti.substr(x1+1, x-x1-1);
risp.append(nomeProdotto);
risp.append("</td>");
risp.append("<td></td>");
risp.append("<td align=center><form action=logout method=get><input type=hidden name=cid value=").append(nomeUtente).append(" /><input type=hidden name=prod value=").append(nomeProdotto).append(" /><button type=submit id=myButton>LOGOUT</button></form></td>");
risp.append("</tr>");
int y=z1;
int y1 = utenti.find(TAG_MODULO, y+1);
while(y1!=string::npos && y1<fine1)
{
//MODULO
string tr = "<tr";
if(rowCount%2==1) tr += " class=\"alt\"";
tr += ">";
rowCount++;
risp.append(tr);
//NOME MODULO
risp.append("<td></td><td></td><td></td><td>");
x = utenti.find(ATTR_NOME, y1);
x1 = utenti.find("\"", x+1);
x = utenti.find("\"", x1+1);
string nomeModulo=utenti.substr(x1+1, x-x1-1);
risp.append(nomeModulo);
risp.append("</td>");
risp.append("<td align=center><form action=chiudim method=get><input type=hidden name=cid value=").append(nomeUtente).append(" /><input type=hidden name=mod value=").append(nomeModulo).append(" /><button type=submit id=myButton>CHIUDI MODULO</button></form></td>");
risp.append("</tr>");
y=y1+1;
y1 = utenti.find(TAG_MODULO, y+1);
if(y1>fine1)
y1 = string::npos;
}
z=z1+1;
z1 = utenti.find(TAG_PRODOTTO, z+1);
if(z1>fine)
z1 = string::npos;
}
n=n1+1;
n1 = utenti.find(TAG_UTENTE, n+1);
fine = utenti.find("</UTENTE>", n1+1);
}
risp += "</table>";
risp += "</td></tr>";
risp +="</table>";
risp += "</body>";
risp += "</html>";
}
void manageRequest(const string& filename, string& risp)
{
if(filename.empty())
return;
if(filename.find("/logout")!=string::npos)
{
string idClient, prodotto;
int n = filename.find("cid");
if(n!=string::npos)
{
n=filename.find("=", n+1);
int n1=filename.find("&", n+1);
if(n1!=string::npos)
idClient = filename.substr(n+1, n1-n-1);
else
idClient = filename.substr(n+1);
}
n = filename.find("prod");
if(n!=string::npos)
{
n=filename.find("=", n+1);
int n1=filename.find("&", n+1);
if(n1!=string::npos)
prodotto = filename.substr(n+1, n1-n-1);
else
prodotto = filename.substr(n+1);
}
if(!prodotto.empty() && !idClient.empty())
{
string l = IFF_LOGOUT;
l+=IFF_SEP;
l+=idClient;
l+=IFF_SEP;
l+=prodotto;
l+=IFF_SEP;
string x;
manageSSACall(l, x);
}
}
else if(filename.find("/chiudim")!=string::npos)
{
string idClient, modulo;
int n = filename.find("cid");
if(n!=string::npos)
{
n=filename.find("=", n+1);
int n1=filename.find("&", n+1);
if(n1!=string::npos)
idClient = filename.substr(n+1, n1-n-1);
else
idClient = filename.substr(n+1);
}
n = filename.find("mod");
if(n!=string::npos)
{
n=filename.find("=", n+1);
int n1=filename.find("&", n+1);
if(n1!=string::npos)
modulo = filename.substr(n+1, n1-n-1);
else
modulo = filename.substr(n+1);
}
if(!modulo.empty() && !idClient.empty())
{
string l = IFF_CHIUDIMODULO;
l+=IFF_SEP;
l+=idClient;
l+=IFF_SEP;
l+=modulo;
l+=IFF_SEP;
string x;
manageSSACall(l, x);
}
}
else if(filename.find("/ping")!=string::npos)
{
string idClient;
int n = filename.find("cid");
if(n!=string::npos)
{
n=filename.find("=", n+1);
int n1=filename.find("&", n+1);
if(n1!=string::npos)
idClient = filename.substr(n+1, n1-n-1);
else
idClient = filename.substr(n+1);
}
if(!idClient.empty())
{
string l = IFF_PING;
l+=IFF_SEP;
l+=idClient;
l+=IFF_SEP;
string x;
manageSSACall(l, x);
}
}
manageROOTRequest(risp);
}
int manageHTTPCall(const string& request, string& response)
{
string risp;
string filename;
int n, n1;
n = request.find(" ");
if(n!=string::npos)
{
n1 = request.find(" ", n+1);
if(n1!=string::npos)
{
filename = request.substr(n+1,n1-n-1);
manageRequest(filename, risp);
}
}
char pResponseHeader[2048];
string szStatusCode("200 OK");
string szContentType("text/html");
string szConnectionType("close");
char szDT[128];
struct tm *newtime;
time_t rawtime;
time ( &rawtime );
newtime = gmtime(&rawtime);
strftime(szDT, 128, "%a, %d %b %Y %H:%M:%S GMT", newtime);
sprintf(pResponseHeader, "HTTP/1.0 %s\r\nDate: %s\r\nServer: %s\r\nAccept-Ranges: bytes\r\nContent-Length: %d\r\nConnection: %s\r\nContent-Type: %s\r\n\r\n",
szStatusCode.c_str(), szDT, "SSA-AGENT", risp.size(), "close", szContentType.c_str());
response = string(pResponseHeader);
response += risp;
//response = risp;
return 0;
}

View File

@ -0,0 +1,33 @@
========================================================================
CONSOLE APPLICATION : SSAAgent Project Overview
========================================================================
AppWizard has created this SSAAgent application for you.
This file contains a summary of what you will find in each of the files that
make up your SSAAgent application.
SSAAgent.vcproj
This is the main project file for VC++ projects generated using an Application Wizard.
It contains information about the version of Visual C++ that generated the file, and
information about the platforms, configurations, and project features selected with the
Application Wizard.
SSAAgent.cpp
This is the main application source file.
/////////////////////////////////////////////////////////////////////////////
Other standard files:
StdAfx.h, StdAfx.cpp
These files are used to build a precompiled header (PCH) file
named SSAAgent.pch and a precompiled types file named StdAfx.obj.
/////////////////////////////////////////////////////////////////////////////
Other notes:
AppWizard uses "TODO:" comments to indicate parts of the source code you
should add to or customize.
/////////////////////////////////////////////////////////////////////////////

View File

@ -0,0 +1,126 @@
// SSAAgent.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <process.h>
#include "socket.h"
#include "SSACall.h"
#include "HTTPCall.h"
static CRITICAL_SECTION cs;
unsigned __stdcall OnNewConnection(void* a)
{
Socket* s = (Socket*) a;
while(true)
{
string r = s->ReceiveLine();
if (r.empty()) break;
EnterCriticalSection(&cs);
try
{
string risp = "";
bool close = FALSE;
if(r.find("GET")==0)
{
string request = string(r);
while(true)
{
string r = s->ReceiveLine();
if (r.empty() || r[0]==13) break;
request += "\n";
request += r;
}
manageHTTPCall(request, risp);
close=TRUE;
}
else
manageSSACall(r, risp);
if(risp.length()>0)
s->SendLine(risp);
if(close)
s->Close();
}
catch(...)
{
char bufLog[1024];
sprintf(bufLog, "manage");
SSALog::getInst()->error(bufLog);
}
LeaveCriticalSection(&cs);
}
delete s;
_endthreadex(0);
return 0;
}
int main(int argc, char* argv[])
{
InitializeCriticalSection(&cs);
const char* ssaport = SSAIni::getInst()->getProp(ENV_PORT);
if(ssaport==NULL || strlen(ssaport)==0)
{
char bufLog[1024];
sprintf(bufLog, "Parametro %s NON configurato", ENV_PORT);
SSALog::getInst()->error(bufLog);
return -1;
}
string s(ssaport);
int p=s.find(":");
if(p==string::npos)
{
char bufLog[1024];
sprintf(bufLog, "Parametro %s errato", ENV_PORT);
SSALog::getInst()->error(bufLog);
return -1;
}
try
{
SocketServer in(atoi(s.substr(p+1).c_str()),50);
char bufLog[1024];
sprintf(bufLog, "In ascolto su porta %s", s.c_str());
SSALog::getInst()->info(bufLog);
while (true)
{
Socket* s=in.Accept();
unsigned ret;
_beginthreadex(0,0,OnNewConnection,(void*) s,0,&ret);
}
}
catch(const char* e)
{
char bufLog[1024];
sprintf(bufLog, "Exception in main e=%s", e);
SSALog::getInst()->error(bufLog);
return -1;
}
catch(...)
{
char bufLog[1024];
sprintf(bufLog, "Exception in main");
SSALog::getInst()->error(bufLog);
return -1;
}
return 0;
}

View File

@ -0,0 +1,416 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="SSAAgent"
ProjectGUID="{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}"
RootNamespace="SSAAgent"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\SSALib"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\SSALib"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\SSALib"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\SSALib"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\HttpCall.cpp"
>
</File>
<File
RelativePath=".\SSAAgent.cpp"
>
</File>
<File
RelativePath=".\SSACall.cpp"
>
</File>
<File
RelativePath=".\stdafx.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\HTTPCall.h"
>
</File>
<File
RelativePath=".\SSACall.h"
>
</File>
<File
RelativePath=".\stdafx.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
<File
RelativePath=".\ReadMe.txt"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,192 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}</ProjectGuid>
<RootNamespace>SSAAgent</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>15.0.27130.2020</_ProjectFileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\SSALib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\SSALib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\SSALib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<AdditionalIncludeDirectories>..\SSALib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="HttpCall.cpp" />
<ClCompile Include="SSAAgent.cpp" />
<ClCompile Include="SSACall.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="HTTPCall.h" />
<ClInclude Include="SSACall.h" />
<ClInclude Include="stdafx.h" />
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SSALib\SSALib.vcxproj">
<Project>{fec518fd-f211-4b43-bc8b-f93e74f6db62}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="HttpCall.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SSAAgent.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SSACall.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="stdafx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="HTTPCall.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="SSACall.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="stdafx.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,71 @@
#include "stdafx.h"
#include "SSACall.h"
int manage(const string& s)
{
vector<string> par;
int p=s.find(IFF_SEP);
string ss = s;
while(p!=string::npos)
{
par.push_back(ss.substr(0,p));
ss = ss.substr(p+1);
p = ss.find(IFF_SEP);
}
if(par.size()==0)
return SSA_NOTLOADED;
if(par[0].compare(IFF_VERIFICAMODULO)==0)
{
return SSALibMan::getInstClient()->VerificaModulo(par[1].c_str(), par[2].c_str(), par[3].c_str());
}
else if(par[0].compare(IFF_LOGIN)==0)
{
return SSALibMan::getInstClient()->Login(par[1].c_str(), par[2].c_str(), par[3].c_str());
}
else if(par[0].compare(IFF_APRIMODULO)==0)
{
return SSALibMan::getInstClient()->ApriModulo(par[1].c_str(), par[2].c_str());
}
else if(par[0].compare(IFF_CHIUDIMODULO)==0)
{
return SSALibMan::getInstClient()->ChiudiModulo(par[1].c_str(), par[2].c_str());
}
else if(par[0].compare(IFF_LOGOUT)==0)
{
return SSALibMan::getInstClient()->Logout(par[1].c_str(), par[2].c_str());
}
else if(par[0].compare(IFF_PING)==0)
{
return SSALibMan::getInstClient()->Ping(par[1].c_str());
}
else if(par[0].compare(IFF_GETNUMSERIE)==0)
{
return SSALibMan::getInstClient()->NumeroSerie(par[1].c_str());
}
else if(par[0].compare(IFF_DATASCADENZA)==0)
{
return SSALibMan::getInstClient()->DataScadenza(par[1].c_str(), par[2].c_str());
}
else if(par[0].compare(IFF_NUMMAXUTE)==0)
{
return SSALibMan::getInstClient()->NumMaxUtenti(par[1].c_str(), par[2].c_str());
}
return SSA_NOTLOADED;
}
int manageSSACall(const string& request, string& response)
{
int rr = manage(request);
char buf[1024];
sprintf(buf, "%d", rr);
response = buf;
return rr;
}

View File

@ -0,0 +1,12 @@
#ifndef SSACALL_H
#define SSACALL_H
#include "stdafx.h"
#include "ssalog.h"
#include "ssaini.h"
#include "ssalibman.h"
int manageSSACall(const string& request, string& response);
#endif

View File

@ -0,0 +1,5 @@
// stdafx.cpp : source file that includes just the standard includes
// SSAAgent.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"

View File

@ -0,0 +1,18 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
#endif
#include <stdio.h>
#include <tchar.h>
//STL
#include <string>
#include <Vector>
using namespace std;

View File

@ -0,0 +1,33 @@
========================================================================
CONSOLE APPLICATION : SSACreaLicenza Project Overview
========================================================================
AppWizard has created this SSACreaLicenza application for you.
This file contains a summary of what you will find in each of the files that
make up your SSACreaLicenza application.
SSACreaLicenza.vcproj
This is the main project file for VC++ projects generated using an Application Wizard.
It contains information about the version of Visual C++ that generated the file, and
information about the platforms, configurations, and project features selected with the
Application Wizard.
SSACreaLicenza.cpp
This is the main application source file.
/////////////////////////////////////////////////////////////////////////////
Other standard files:
StdAfx.h, StdAfx.cpp
These files are used to build a precompiled header (PCH) file
named SSACreaLicenza.pch and a precompiled types file named StdAfx.obj.
/////////////////////////////////////////////////////////////////////////////
Other notes:
AppWizard uses "TODO:" comments to indicate parts of the source code you
should add to or customize.
/////////////////////////////////////////////////////////////////////////////

View File

@ -0,0 +1,21 @@
// SSACreaLicenza.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "ssalib.h"
int main(int argc, char* argv[])
{
if(argc==1)
{
generaLicenze();
}
else if(strcmp(argv[1], "-decrypt")==0)
{
string s = decrypt(argv[2]);
printf(s.c_str());
}
return 0;
}

View File

@ -0,0 +1,400 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="SSACreaLicenza"
ProjectGUID="{CFB99818-88B6-45B9-A2BA-09785781CFB6}"
RootNamespace="SSACreaLicenza"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\SSALib"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\SSALib"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\SSALib"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\SSALib"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\SSACreaLicenza.cpp"
>
</File>
<File
RelativePath=".\stdafx.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\stdafx.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
<File
RelativePath=".\ReadMe.txt"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Template|Win32">
<Configuration>Template</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup></ItemDefinitionGroup>
<ItemGroup></ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

View File

@ -0,0 +1,6 @@
// stdafx.cpp : source file that includes just the standard includes
// SSACreaLicenza.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"

View File

@ -0,0 +1,16 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
#endif
#include <stdio.h>
#include <tchar.h>
#include <string>
using namespace std;

View File

@ -0,0 +1,369 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="SSADll"
ProjectGUID="{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}"
RootNamespace="SSADll"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\ssalib;C:\tools\java\jdk1.6.0_04\include;C:\tools\java\jdk1.6.0_04\include\win32"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SSADLL_EXPORTS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\ssalib;C:\tools\java\jdk1.6.0_04\include;C:\tools\java\jdk1.6.0_04\include\win32"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SSADLL_EXPORTS"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\ssalib;C:\tools\java\jdk1.6.0_04\include;C:\tools\java\jdk1.6.0_04\include\win32"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;SSADLL_EXPORTS"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="2"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="2"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\ssalib;C:\tools\java\jdk1.6.0_04\include;C:\tools\java\jdk1.6.0_04\include\win32"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;SSADLL_EXPORTS"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)\$(ProjectName)64.dll"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\ssadll.cpp"
>
</File>
<File
RelativePath=".\SSAJni.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\ssadll.h"
>
</File>
<File
RelativePath=".\SSAJni.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,182 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}</ProjectGuid>
<RootNamespace>SSADll</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>15.0.27130.2020</_ProjectFileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\ssalib;C:\tools\java\jdk1.6.0_04\include;C:\tools\java\jdk1.6.0_04\include\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;SSADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\ssalib;C:\tools\java\jdk1.6.0_04\include;C:\tools\java\jdk1.6.0_04\include\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;SSADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\ssalib;C:\tools\java\jdk1.6.0_04\include;C:\tools\java\jdk1.6.0_04\include\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;SSADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<AdditionalIncludeDirectories>..\ssalib;C:\tools\java\jdk1.6.0_04\include;C:\tools\java\jdk1.6.0_04\include\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;SSADLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>$(OutDir)$(ProjectName)64.dll</OutputFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="ssadll.cpp" />
<ClCompile Include="SSAJni.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="ssadll.h" />
<ClInclude Include="SSAJni.h" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SSALib\SSALib.vcxproj">
<Project>{fec518fd-f211-4b43-bc8b-f93e74f6db62}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="ssadll.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="SSAJni.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="ssadll.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="SSAJni.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@ -0,0 +1,153 @@
#include <stdio.h>
#include <string>
using namespace std;
#include "ssadll.h"
#include "SSAJni.h"
JNIEXPORT jint JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1Login
(JNIEnv *env, jobject obj, jstring id, jstring prod)
{
const char *idClient;
idClient = env->GetStringUTFChars(id, JNI_FALSE);
if (idClient == NULL) {
return 0;
}
const char* prodotto = env->GetStringUTFChars(prod, JNI_FALSE);
if (prodotto == NULL) {
return 0;
}
return SSA_Login(idClient, prodotto);
}
JNIEXPORT jint JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1Login1
(JNIEnv *env, jobject obj, jstring id, jstring prod, jstring pi)
{
const char *idClient;
idClient = env->GetStringUTFChars(id, JNI_FALSE);
if (idClient == NULL) {
return 0;
}
const char* prodotto = env->GetStringUTFChars(prod, JNI_FALSE);
if (prodotto == NULL) {
return 0;
}
const char* piva = env->GetStringUTFChars(pi, JNI_FALSE);
if (piva == NULL) {
return 0;
}
return SSA_Login1(idClient, prodotto, piva);
}
JNIEXPORT jint JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1Logout
(JNIEnv * env, jobject obj, jstring id, jstring prod)
{
const char *idClient;
idClient = env->GetStringUTFChars(id, JNI_FALSE);
if (idClient == NULL) {
return 0;
}
const char* prodotto = env->GetStringUTFChars(prod, JNI_FALSE);
if (prodotto == NULL) {
return 0;
}
return SSA_Logout(idClient, prodotto);
}
JNIEXPORT jint JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1ApriModulo
(JNIEnv * env, jobject obj, jstring id, jstring mod)
{
const char *idClient;
idClient = env->GetStringUTFChars(id, JNI_FALSE);
if (idClient == NULL) {
return 0;
}
const char* modulo = env->GetStringUTFChars(mod, JNI_FALSE);
if (modulo == NULL) {
return 0;
}
return SSA_ApriModulo(idClient, modulo);
}
JNIEXPORT jint JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1ChiudiModulo
(JNIEnv * env, jobject obj, jstring id, jstring mod)
{
const char *idClient;
idClient = env->GetStringUTFChars(id, JNI_FALSE);
if (idClient == NULL) {
return 0;
}
const char* modulo= env->GetStringUTFChars(mod, JNI_FALSE);
if (modulo == NULL) {
return 0;
}
return SSA_ChiudiModulo(idClient, modulo);
}
JNIEXPORT jstring JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1GetLastErrorString
(JNIEnv * env, jobject obj)
{
const char * error = SSA_DecodificaUltimoErrore();
return env->NewStringUTF(error);
}
JNIEXPORT jint JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1VerificaModulo
(JNIEnv * env, jobject obj, jstring prod, jstring mod)
{
const char* prodotto = env->GetStringUTFChars(prod, JNI_FALSE);
if (prodotto == NULL) {
return 0;
}
const char* modulo = env->GetStringUTFChars(mod, JNI_FALSE);
if (modulo == NULL) {
return 0;
}
return SSA_VerificaModulo(prodotto, modulo);
}
JNIEXPORT jint JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1VerificaModulo1
(JNIEnv * env, jobject obj, jstring prod, jstring mod, jstring pi)
{
const char* prodotto = env->GetStringUTFChars(prod, JNI_FALSE);
if (prodotto == NULL) {
return 0;
}
const char* modulo = env->GetStringUTFChars(mod, JNI_FALSE);
if (modulo == NULL) {
return 0;
}
const char* piva = env->GetStringUTFChars(pi, JNI_FALSE);
if (piva == NULL) {
return 0;
}
return SSA_VerificaModulo1(prodotto, modulo, piva);
}
JNIEXPORT jint JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1Ping
(JNIEnv * env, jobject obj, jstring id)
{
const char *idClient;
idClient = env->GetStringUTFChars(id, JNI_FALSE);
if (idClient == NULL) {
return 0;
}
return SSA_Ping(idClient);
}

View File

@ -0,0 +1,85 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class it_sirio_sicurezza_SSAJni */
#ifndef _Included_it_sirio_sicurezza_SSAJni
#define _Included_it_sirio_sicurezza_SSAJni
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: it_sirio_sicurezza_SSAJni
* Method: SSA_Login
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1Login
(JNIEnv *, jobject, jstring, jstring);
/*
* Class: it_sirio_sicurezza_SSAJni
* Method: SSA_Login1
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1Login1
(JNIEnv *, jobject, jstring, jstring, jstring);
/*
* Class: it_sirio_sicurezza_SSAJni
* Method: SSA_Logout
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1Logout
(JNIEnv *, jobject, jstring, jstring);
/*
* Class: it_sirio_sicurezza_SSAJni
* Method: SSA_ApriModulo
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1ApriModulo
(JNIEnv *, jobject, jstring, jstring);
/*
* Class: it_sirio_sicurezza_SSAJni
* Method: SSA_ChiudiModulo
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1ChiudiModulo
(JNIEnv *, jobject, jstring, jstring);
/*
* Class: it_sirio_sicurezza_SSAJni
* Method: SSA_GetLastErrorString
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1GetLastErrorString
(JNIEnv *, jobject);
/*
* Class: it_sirio_sicurezza_SSAJni
* Method: SSA_VerificaModulo
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1VerificaModulo
(JNIEnv *, jobject, jstring, jstring);
/*
* Class: it_sirio_sicurezza_SSAJni
* Method: SSA_VerificaModulo1
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1VerificaModulo1
(JNIEnv *, jobject, jstring, jstring, jstring);
/*
* Class: it_sirio_sicurezza_SSAJni
* Method: SSA_Ping
* Signature: (Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_it_sirio_sicurezza_SSAJni_SSA_1Ping
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif

View File

@ -0,0 +1,67 @@
package it.sirio.sicurezza;
public class SSAJni
{
native public int SSA_Login(java.lang.String id, java.lang.String prodotto);
native public int SSA_Logout(java.lang.String id, java.lang.String prodotto);
native public int SSA_ApriModulo(java.lang.String id, java.lang.String modulo);
native public int SSA_ChiudiModulo(java.lang.String id, java.lang.String modulo);
native public String SSA_GetLastErrorString();
native public int SSA_VerificaModulo(java.lang.String prodotto, java.lang.String modulo);
native public int SSA_Ping(java.lang.String id);
static
{
String dllName="SSADll";
String plat = System.getProperty("sun.arch.data.model");
if(plat!=null && plat.compareTo("32")!=0)
dllName+=plat;
System.loadLibrary(dllName);
}
private static SSAJni m_inst;
private SSAJni() {}
public static SSAJni getInst()
{
if(m_inst==null)
createInst();
return m_inst;
}
private static void createInst() { m_inst = new SSAJni(); }
public static void main(String[] args)
{
java.lang.String clientId = "java_127.0.0.1";
java.lang.String prodotto = "PROVA";
java.lang.String modulo = "prova2";
int ret = SSAJni.getInst().SSA_Login(clientId, prodotto);
if(ret!=0)
{
System.out.println("ERRORE Login "+SSAJni.getInst().SSA_GetLastErrorString());
return;
}
ret = SSAJni.getInst().SSA_ApriModulo(clientId, modulo);
if(ret!=0)
{
System.out.println("ERRORE Apri Modulo "+SSAJni.getInst().SSA_GetLastErrorString());
return;
}
ret = SSAJni.getInst().SSA_VerificaModulo(prodotto, modulo);
if(ret!=0)
{
System.out.println("ERRORE Verifica Modulo "+SSAJni.getInst().SSA_GetLastErrorString());
return;
}
ret = SSAJni.getInst().SSA_VerificaModulo(prodotto, "axx");
if(ret!=0)
{
System.out.println("ERRORE Verifica Modulo "+SSAJni.getInst().SSA_GetLastErrorString());
return;
}
}
}

View File

@ -0,0 +1 @@
C:\tools\java\jdk1.6.0_04\bin\jar cf ssa.jar .\it\sirio\sicurezza\SSAJni.class

View File

@ -0,0 +1,7 @@
del SSAJni.class
del SSAJni.h
"C:\tools\java\jdk1.6.0_04\bin\javac" -d . SSAJni.java
"C:\tools\java\jdk1.6.0_04\bin\javah" -o SSAJni.h -jni it.sirio.sicurezza.SSAJni
copy SSAJni.h ..

View File

@ -0,0 +1,80 @@
#include <stdio.h>
#define SSA_EXPORT
#include "ssadll.h"
#include "ssalibman.h"
//TODO EP: deve essere multipthread?
const char * SSA_DecodificaUltimoErrore()
{
return SSALibMan::getInst()->DecodificaUltimoErrore();
}
int SSA_VerificaModulo(const char* prodotto, const char* modulo)
{
return SSALibMan::getInst()->VerificaModulo(prodotto, modulo);
}
int SSA_VerificaModulo1(const char* prodotto, const char* modulo, const char* piva)
{
return SSALibMan::getInst()->VerificaModulo(prodotto, modulo, piva);
}
int SSA_Login(const char* idClient, const char* prodotto)
{
return SSALibMan::getInst()->Login(idClient, prodotto);
}
int SSA_Login1(const char* idClient, const char* prodotto, const char* piva)
{
return SSALibMan::getInst()->Login(idClient, prodotto, piva);
}
int SSA_ApriModulo(const char* idClient, const char* modulo)
{
return SSALibMan::getInst()->ApriModulo(idClient, modulo);
}
int SSA_ChiudiModulo(const char* idClient, const char* modulo)
{
return SSALibMan::getInst()->ChiudiModulo(idClient, modulo);
}
int SSA_Logout(const char* idClient, const char* prodotto)
{
return SSALibMan::getInst()->Logout(idClient, prodotto);
}
int SSA_Ping(const char* idClient)
{
return SSALibMan::getInst()->Ping(idClient);
}
int SSA_XMLProdottiConfigurati(char* buf, int bufSize)
{
return SSALibMan::getInst()->XMLProdottiConfigurati(buf, bufSize);
}
int SSA_XMLUtentiCorrenti(char* buf, int bufSize)
{
return SSALibMan::getInst()->XMLUtentiCorrenti(buf, bufSize);
}
int SSA_Id(char* buf, int bufSize)
{
return SSALibMan::getInst()->Id(buf, bufSize);
}
int SSA_NumeroSerie(const char* prodotto)
{
return SSALibMan::getInst()->NumeroSerie(prodotto);
}
int SSA_DataScadenza(const char* prodotto, const char* modulo)
{
return SSALibMan::getInst()->DataScadenza(prodotto, modulo);
}
int SSA_NumMaxUtenti(const char* prodotto, const char* modulo)
{
return SSALibMan::getInst()->NumMaxUtenti(prodotto, modulo);
}

View File

@ -0,0 +1,30 @@
#ifndef SSADLL_H
#define SSADLL_H
#ifndef SSA_EXPORT
#define DECLSPEC __declspec(dllimport)
#else
#define DECLSPEC __declspec(dllexport)
#endif
extern "C"
{
DECLSPEC const char* SSA_DecodificaUltimoErrore();
DECLSPEC int SSA_VerificaModulo(const char* prodotto, const char* modulo);
DECLSPEC int SSA_VerificaModulo1(const char* prodotto, const char* modulo, const char* piva);
DECLSPEC int SSA_Login(const char* idClient, const char* prodotto);
DECLSPEC int SSA_Login1(const char* idClient, const char* prodotto, const char* piva);
DECLSPEC int SSA_ApriModulo(const char* idClient, const char* modulo);
DECLSPEC int SSA_ChiudiModulo(const char* idClient, const char* modulo);
DECLSPEC int SSA_Logout(const char* idClient, const char* prodotto);
DECLSPEC int SSA_Ping(const char* idClient);
DECLSPEC int SSA_XMLProdottiConfigurati(char* buf, int bufSize);
DECLSPEC int SSA_XMLUtentiCorrenti(char* buf, int bufSize);
DECLSPEC int SSA_Id(char* buf, int bufSize);
DECLSPEC int SSA_NumeroSerie(const char* prodotto);
DECLSPEC int SSA_DataScadenza(const char* prodotto, const char* modulo);
DECLSPEC int SSA_NumMaxUtenti(const char* prodotto, const char* modulo);
}
#endif

View File

@ -0,0 +1,33 @@
========================================================================
CONSOLE APPLICATION : SSAGetInfo Project Overview
========================================================================
AppWizard has created this SSAGetInfo application for you.
This file contains a summary of what you will find in each of the files that
make up your SSAGetInfo application.
SSAGetInfo.vcproj
This is the main project file for VC++ projects generated using an Application Wizard.
It contains information about the version of Visual C++ that generated the file, and
information about the platforms, configurations, and project features selected with the
Application Wizard.
SSAGetInfo.cpp
This is the main application source file.
/////////////////////////////////////////////////////////////////////////////
Other standard files:
StdAfx.h, StdAfx.cpp
These files are used to build a precompiled header (PCH) file
named SSAGetInfo.pch and a precompiled types file named StdAfx.obj.
/////////////////////////////////////////////////////////////////////////////
Other notes:
AppWizard uses "TODO:" comments to indicate parts of the source code you
should add to or customize.
/////////////////////////////////////////////////////////////////////////////

View File

@ -0,0 +1,31 @@
// SSAGetInfo.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "ssalib.h"
int main(int argc, char* argv[])
{
char* nome = NULL;
char* prodotto = NULL;
for(int i=1; i<argc; i++)
{
if(strcmp(argv[i], "-nome")==0)
{
nome = argv[i+1];
i++;
}
else if(strcmp(argv[i], "-prod")==0)
{
prodotto = argv[i+1];
i++;
}
}
generaFileClient(nome, prodotto);
return 0;
}

View File

@ -0,0 +1,400 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="SSAGetInfo"
ProjectGUID="{EB1AC636-C625-4DCD-857B-333A29F3CD3E}"
RootNamespace="SSAGetInfo"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\SSALib"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\SSALib"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\SSALib"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\SSALib"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\SSAGetInfo.cpp"
>
</File>
<File
RelativePath=".\stdafx.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\stdafx.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
<File
RelativePath=".\ReadMe.txt"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,188 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{EB1AC636-C625-4DCD-857B-333A29F3CD3E}</ProjectGuid>
<RootNamespace>SSAGetInfo</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>15.0.27130.2020</_ProjectFileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\SSALib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\SSALib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\SSALib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<AdditionalIncludeDirectories>..\SSALib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="SSAGetInfo.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="stdafx.h" />
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SSALib\SSALib.vcxproj">
<Project>{fec518fd-f211-4b43-bc8b-f93e74f6db62}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="SSAGetInfo.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="stdafx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="stdafx.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,6 @@
// stdafx.cpp : source file that includes just the standard includes
// SSAGetInfo.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"

View File

@ -0,0 +1,14 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
#endif
#include <stdio.h>
#include <tchar.h>

View File

@ -0,0 +1,30 @@
========================================================================
STATIC LIBRARY : SSALib Project Overview
========================================================================
AppWizard has created this SSALib library project for you.
This file contains a summary of what you will find in each of the files that
make up your SSALib application.
SSALib.vcproj
This is the main project file for VC++ projects generated using an Application Wizard.
It contains information about the version of Visual C++ that generated the file, and
information about the platforms, configurations, and project features selected with the
Application Wizard.
/////////////////////////////////////////////////////////////////////////////
StdAfx.h, StdAfx.cpp
These files are used to build a precompiled header (PCH) file
named SSALib.pch and a precompiled types file named StdAfx.obj.
/////////////////////////////////////////////////////////////////////////////
Other notes:
AppWizard uses "TODO:" comments to indicate parts of the source code you
should add to or customize.
/////////////////////////////////////////////////////////////////////////////

View File

@ -0,0 +1,452 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="SSALib"
ProjectGUID="{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}"
RootNamespace="SSALib"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\contrib\cryptopp561"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
AdditionalDependencies="..\contrib\cryptopp561\Win32\output\debug\cryptlib.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\contrib\cryptopp561"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
AdditionalDependencies="..\contrib\cryptopp561\Win32\output\release\cryptlib.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\contrib\cryptopp561"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
AdditionalDependencies="..\contrib\cryptopp561\x64\output\debug\cryptlib.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\contrib\cryptopp561"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
AdditionalDependencies="..\contrib\cryptopp561\x64\output\release\cryptlib.lib"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\auth.cpp"
>
</File>
<File
RelativePath=".\crypt.cpp"
>
</File>
<File
RelativePath=".\hwm.cpp"
>
</File>
<File
RelativePath=".\infoUtente.cpp"
>
</File>
<File
RelativePath=".\modulo.cpp"
>
</File>
<File
RelativePath=".\prodotto.cpp"
>
</File>
<File
RelativePath=".\socket.cpp"
>
</File>
<File
RelativePath=".\ssaini.cpp"
>
</File>
<File
RelativePath=".\ssalib.cpp"
>
</File>
<File
RelativePath=".\ssalibman.cpp"
>
</File>
<File
RelativePath=".\ssalibman_client.cpp"
>
</File>
<File
RelativePath=".\ssalibman_clientserver.cpp"
>
</File>
<File
RelativePath=".\ssalog.cpp"
>
</File>
<File
RelativePath=".\stdafx.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\auth.h"
>
</File>
<File
RelativePath=".\crypt.h"
>
</File>
<File
RelativePath=".\hwm.h"
>
</File>
<File
RelativePath=".\infoUtente.h"
>
</File>
<File
RelativePath=".\modulo.h"
>
</File>
<File
RelativePath=".\prodotto.h"
>
</File>
<File
RelativePath=".\socket.h"
>
</File>
<File
RelativePath=".\ssaerr.h"
>
</File>
<File
RelativePath=".\ssaini.h"
>
</File>
<File
RelativePath=".\ssalib.h"
>
</File>
<File
RelativePath=".\ssalibman.h"
>
</File>
<File
RelativePath=".\ssalibman_client.h"
>
</File>
<File
RelativePath=".\ssalibman_clientserver.h"
>
</File>
<File
RelativePath=".\ssalog.h"
>
</File>
<File
RelativePath=".\stdafx.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
<File
RelativePath=".\ReadMe.txt"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,198 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}</ProjectGuid>
<RootNamespace>SSALib</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>15.0.27130.2020</_ProjectFileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
<IntDir>$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(Platform)\$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\contrib\cryptopp561;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Lib>
<AdditionalDependencies>..\contrib\cryptopp561\Win32\output\debug\cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<AdditionalIncludeDirectories>..\contrib\cryptopp561;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Lib>
<AdditionalDependencies>..\contrib\cryptopp561\Win32\output\release\cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\contrib\cryptopp561;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Lib>
<AdditionalDependencies>..\contrib\cryptopp561\x64\output\debug\cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl>
<TargetEnvironment>X64</TargetEnvironment>
</Midl>
<ClCompile>
<AdditionalIncludeDirectories>..\contrib\cryptopp561;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>Use</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Lib>
<AdditionalDependencies>..\contrib\cryptopp561\x64\output\release\cryptlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Lib>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="auth.cpp" />
<ClCompile Include="crypt.cpp" />
<ClCompile Include="hwm.cpp" />
<ClCompile Include="infoUtente.cpp" />
<ClCompile Include="modulo.cpp" />
<ClCompile Include="prodotto.cpp" />
<ClCompile Include="socket.cpp" />
<ClCompile Include="ssaini.cpp" />
<ClCompile Include="ssalib.cpp" />
<ClCompile Include="ssalibman.cpp" />
<ClCompile Include="ssalibman_client.cpp" />
<ClCompile Include="ssalibman_clientserver.cpp" />
<ClCompile Include="ssalog.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="auth.h" />
<ClInclude Include="crypt.h" />
<ClInclude Include="hwm.h" />
<ClInclude Include="infoUtente.h" />
<ClInclude Include="modulo.h" />
<ClInclude Include="prodotto.h" />
<ClInclude Include="socket.h" />
<ClInclude Include="ssaerr.h" />
<ClInclude Include="ssaini.h" />
<ClInclude Include="ssalib.h" />
<ClInclude Include="ssalibman.h" />
<ClInclude Include="ssalibman_client.h" />
<ClInclude Include="ssalibman_clientserver.h" />
<ClInclude Include="ssalog.h" />
<ClInclude Include="stdafx.h" />
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\contrib\cryptopp561\cryptlib.vcxproj">
<Project>{3423ec9a-52e4-4a4d-9753-edebc38785ef}</Project>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,111 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="auth.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypt.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="hwm.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="infoUtente.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="modulo.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="prodotto.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="socket.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ssaini.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ssalib.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ssalibman.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ssalibman_client.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ssalibman_clientserver.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ssalog.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="stdafx.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="auth.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="crypt.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="hwm.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="infoUtente.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="modulo.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="prodotto.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="socket.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ssaerr.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ssaini.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ssalib.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ssalibman.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ssalibman_client.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ssalibman_clientserver.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ssalog.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="stdafx.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
</Project>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,89 @@
#ifndef AUTH_H
#define AUTH_H
#include "stdafx.h"
#include "prodotto.h"
#include "infoUtente.h"
#include "ssaerr.h"
#define SSA_REL "2.2"
#define TAG_SSA "<SSA"
#define ATTR_REL "rel"
#define TAG_CLIMAC "<CLIMAC"
#define TAG_MAC "<MAC"
#define ATTR_ADDR "addr"
#define ATTR_DESCRI "descri"
#define TAG_PRODOTTO "<PRODOTTO"
#define ATTR_NUM_SERIE "numero-serie"
#define ATTR_PIVA "piva"
#define TAG_MODULO "<MODULO"
#define ATTR_NOME "nome"
#define ATTR_DATA_SCAD "data-scad"
#define ATTR_NUM_ABIL "num-abilitazioni"
#define ATTR_CURR_USER "curr-users"
#define TAG_UTENTE "<UTENTE"
#define ATTR_LAST_PING "last-ping"
#define AUTH_EXT "ssa"
#define CLIENT_EXT "ssax"
class Auth
{
public:
static bool generaFileClient(const char* nome, const char* prodotto);
static bool generaLicenze();
static string decrypt(string fileName);
private:
static string getSSARelTAG();
static string generaMACAddressTAG();
static bool generaLicenza(string fileClient);
static string estraiAttr(const string& s, const char * attr);
static int estraiIntAttr(const string& s, const char * attr);
private:
bool m_loaded;
map<string, Prodotto*> m_prodotti; //[nome_prodotto, Prodotto] Prodotti configurati
map<string, InfoUtente*> m_utenti; //[idClient, InfoUtente] Utenti connessi
string m_id;
public:
Auth();
bool caricaFileLicenze();
bool isLoaded() { return m_loaded; }
int VerificaModulo(const char* prodotto, const char* modulo);
int VerificaModulo(const char* prodotto, const char* modulo, const char* piva);
int Login(const char* idClient, const char* prodotto);
int Login(const char* idClient, const char* prodotto, const char* piva);
int ApriModulo(const char* idClient, const char* modulo);
int ChiudiModulo(const char* idClient, const char* modulo);
int Logout(const char* idClient, const char* prodotto);
int Ping(const char* idClient);
int AttivaLicenza(const char* file);
int GetXMLProdottiConfigurati(char* buf, int bufSize);
int GetXMLUtentiCorrenti(char* buf, int bufSize);
int GetId(char* buf, int bufSize);
int GetNumeroSerie(const char* prodotto);
int DataScadenza(const char* prodotto, const char* modulo);
int NumMaxUtenti(const char* prodotto, const char* modulo);
private:
bool caricaFileLicenze(string fileName);
bool verificaRequisitiHW(string hwTag);
void addProdotto(Prodotto* p);
Prodotto* getProdottoDaNomeModulo(const char* modulo);
bool verificaExpDate(const char* date);
string dumpProdotti();
string dumpUtenti();
void logoutUtentiScaduti();
int ChiudiModulo(const char* idClient, const char* modulo, bool logout);
bool iequals(const string& a, const string& b);
map<string, Prodotto*>::iterator findProdottoIC(const char * strToFind);
};
#endif

View File

@ -0,0 +1,33 @@
#include "stdafx.h"
#include "crypt.h"
#include "default.h"
#include "hex.h"
using namespace CryptoPP;
static char* DEF_PASSWORD="@MarcinelleCinque4321";
string encryptString(const char *instr)
{
string outstr;
char* passPhrase = DEF_PASSWORD;
DefaultEncryptorWithMAC encryptor(passPhrase, new HexEncoder(new StringSink(outstr)));
encryptor.Put((byte *)instr, strlen(instr));
encryptor.MessageEnd();
return outstr;
}
string decryptString(const char *instr)
{
string outstr;
char* passPhrase = DEF_PASSWORD;
HexDecoder decryptor(new DefaultDecryptorWithMAC(passPhrase, new StringSink(outstr)));
decryptor.Put((byte *)instr, strlen(instr));
decryptor.MessageEnd();
return outstr;
}

View File

@ -0,0 +1,9 @@
#ifndef CRYPT_H
#define CRYPT_H
#include "stdafx.h"
string encryptString(const char *instr);
string decryptString(const char *instr);
#endif

View File

@ -0,0 +1,103 @@
#include "stdafx.h"
#include <winsock2.h>
#include <iphlpapi.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib, "IPHLPAPI.lib")
//#pragma comment(lib, "wsock32.lib")
vector<IP_ADAPTER_INFO> getAdapterInfos()
{
vector<IP_ADAPTER_INFO> ret;
IP_ADAPTER_INFO AdapterInfo[16]; // Allocate information for up to 16 NICs
DWORD dwBufLen = sizeof(AdapterInfo); // Save memory size of buffer
DWORD dwStatus = GetAdaptersInfo(AdapterInfo,&dwBufLen);
if(dwStatus!=ERROR_SUCCESS)
return ret;
PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;
do
{
ret.push_back(*pAdapterInfo);
pAdapterInfo = pAdapterInfo->Next;
}
while(pAdapterInfo);
return ret;
}
bool generaMACAddress(string& mac, string& descri)
{
vector<IP_ADAPTER_INFO> infos = getAdapterInfos();
if(infos.size()==0)
return false;
int bestPos = 0;
for(int i=0; i<infos.size(); i++)
{
IP_ADAPTER_INFO info = infos[i];
if(info.Type == IF_TYPE_IEEE80211)
{
//trovata interfaccia wireless!
bestPos = i;
break;
}
else if(info.Type == MIB_IF_TYPE_ETHERNET && strcmp(info.IpAddressList.IpAddress.String, "0.0.0.0")!=0 )
{
//trovata interfaccia di rete collegata!
bestPos = i;
break;
}
else if(info.Type == MIB_IF_TYPE_ETHERNET )
{
//trovata interfaccia di rete non collegata!
//me la segno ma continuo la ricerca
bestPos = i;
}
}
char buf[17];
for (int i = 0; i < infos[bestPos].AddressLength; i++)
{
sprintf (&buf[2*i], "%.2X", infos[bestPos].Address[i]);
}
buf[2*infos[bestPos].AddressLength]=0;
mac = string(buf);
descri = infos[bestPos].Description;
return true;
}
bool verificaMACAddress(const char * macAddr)
{
vector<IP_ADAPTER_INFO> infos = getAdapterInfos();
if(infos.size()==0)
return false;
for(int i=0; i<infos.size(); i++)
{
IP_ADAPTER_INFO info = infos[i];
char buf[17];
for (int i = 0; i < info.AddressLength; i++)
{
sprintf (&buf[2*i], "%.2X", info.Address[i]);
}
buf[2*info.AddressLength]=0;
if(strcmp(macAddr, buf)==0)
return true;
}
return false;
}
char* getNomeMacchina()
{
return getenv("COMPUTERNAME");
}

View File

@ -0,0 +1,10 @@
#ifndef HWM_H
#define HWM_H
#include "stdafx.h"
bool generaMACAddress(string& mac, string& descri);
bool verificaMACAddress(const char * macAddr);
char* getNomeMacchina();
#endif

View File

@ -0,0 +1,80 @@
#include "stdafx.h"
#include "infoUtente.h"
InfoUtente::InfoUtente(const char* idClient)
{
m_idClient=idClient;
ping();
}
void InfoUtente::ping()
{
time ( &m_lastPing );
}
Prodotto* InfoUtente::getProdotto(const char* prodotto)
{
map<string, Prodotto*>::iterator it = m_prodotti.find(prodotto);
if(it==m_prodotti.end())
return NULL;
return it->second;
}
void InfoUtente::addProdotto(const char* prodotto)
{
m_prodotti[prodotto]=new Prodotto(prodotto);
}
void InfoUtente::removeProdotto(const char* prodotto)
{
Prodotto* p = getProdotto(prodotto);
if(p!=NULL)
delete p;
m_prodotti.erase(prodotto);
}
Prodotto* InfoUtente::getProdottoDaNomeModulo(const char* modulo)
{
map<string, Prodotto*>::iterator it = m_prodotti.begin();
while(it != m_prodotti.end())
{
Prodotto* p = it->second;
Modulo* m = p->getModulo(modulo);
if(m!=NULL)
return p;
it++;
}
return NULL;
}
int InfoUtente::getNumProdotti()
{
return m_prodotti.size();
}
string InfoUtente::getIdClient()
{
return m_idClient;
}
vector<string> InfoUtente::getListaProdotti()
{
vector<string> ret;
map<string, Prodotto*>::iterator it = m_prodotti.begin();
while(it!=m_prodotti.end())
{
ret.push_back(it->first);
it++;
}
return ret;
}
const void InfoUtente::getLastPingAsString(char* bufTime)
{
struct tm * timeinfo;
timeinfo = localtime ( &m_lastPing );
strftime(bufTime, 50, "%Y-%m-%d.%H:%M:%S", timeinfo);
}

View File

@ -0,0 +1,33 @@
#ifndef INFOUTENTE_H
#define INFOUTENTE_H
#include "stdafx.h"
#include <time.h>
#include "prodotto.h"
class InfoUtente
{
private:
string m_idClient;
time_t m_lastPing;
map<string, Prodotto*> m_prodotti; //[nome_prodotto, Prodotto] Prodotti aperti da questo idClient
public:
InfoUtente(const char* idClient);
void ping();
string getIdClient();
Prodotto* getProdotto(const char* prodotto);
Prodotto* getProdottoDaNomeModulo(const char* modulo);
void addProdotto(const char* prodotto);
void removeProdotto(const char* prodotto);
int getNumProdotti();
vector<string> getListaProdotti();
time_t getLastPing() { return m_lastPing; }
const void getLastPingAsString(char* buf);
};
#endif

View File

@ -0,0 +1,25 @@
#include "stdafx.h"
#include "modulo.h"
Modulo::Modulo(string nome, int maxUsers, string expDate)
{
m_nome=nome;
m_maxUsers = maxUsers;
m_expDate = expDate;
m_currUsers = 0;
}
int Modulo::getExpDateAsInt()
{
string s;
string::iterator it = m_expDate.begin();
while(it!=m_expDate.end())
{
if( (*it) != '-')
s += (*it);
it++;
}
return atoi(s.c_str());
}

View File

@ -0,0 +1,30 @@
#ifndef MODULO_H
#define MODULO_H
#include "stdafx.h"
class Modulo
{
private:
string m_nome;
int m_maxUsers;
string m_expDate;
int m_currUsers;
public:
Modulo(string nome, int maxUsers, string expDate);
public:
string getNome() { return m_nome; }
int getMaxUsers() { return m_maxUsers; }
string getExpDate() { return m_expDate; }
int getExpDateAsInt();
int getCurrUsers() { return m_currUsers; }
void addUser() { m_currUsers++; }
void removeUser() { m_currUsers--; }
};
#endif

View File

@ -0,0 +1,114 @@
#include "stdafx.h"
#include "prodotto.h"
Prodotto::Prodotto(string nome)
{
m_nome=nome;
m_maxUsers = 1;
m_expDate = "";
m_numSerie = 0;
m_piva="";
m_currUsers = 0;
}
Prodotto::Prodotto(string nome, int maxUsers, string expDate, int numSerie, string piva)
{
m_nome=nome;
m_maxUsers = maxUsers;
m_expDate = expDate;
m_numSerie = numSerie;
m_piva=piva;
m_currUsers = 0;
}
void Prodotto::addModulo(Modulo* m)
{
m_moduli[m->getNome()] = m;
}
Modulo* Prodotto::getModulo(string modulo)
{
map<string, Modulo*>::iterator itMod = m_moduli.find(modulo);
if(itMod==m_moduli.end())
return NULL;
return itMod->second;
}
void Prodotto::removeModulo(const char* modulo)
{
m_moduli.erase(modulo);
}
vector<string> Prodotto::getListaModuli()
{
vector<string> moduli;
map<string, Modulo*>::iterator it = m_moduli.begin();
while(it!=m_moduli.end())
{
moduli.push_back(it->first);
it++;
}
return moduli;
}
int Prodotto::getExpDateAsInt()
{
string s;
string::iterator it = m_expDate.begin();
while(it!=m_expDate.end())
{
if( (*it) != '-')
s += (*it);
it++;
}
return atoi(s.c_str());
}
bool Prodotto::verificaPiva(const char* piva)
{
if(m_piva.length()==0)
//il prodotto non richiede partita iva, non faccio nessun controllo
return true;
if(piva==NULL || strlen(piva)==0)
//il prodotto richiede partita iva, ma la partita iva non c'è
return false;
const char* piva_sep = ":";
int da = 0;
int a = 0;
bool found = false;
while(a < strlen(m_piva.c_str()) )
{
if(strcmp(m_piva.substr(a,1).c_str(), piva_sep)==0)
{
if(da<a)
{
string xx = m_piva.substr(da,a-da);
//printf(" --> DEBUG (%s)\n", xx.c_str());
found = strcmp(xx.c_str(), piva) == 0;
if(found)
return true;
}
da = a+1;
}
a++;
}
if(da<a)
{
string xx = m_piva.substr(da,a-da);
// printf(" --> DEBUG (%s)\n", xx.c_str());
found = strcmp(xx.c_str(), piva) == 0;
if(found)
return true;
}
return false;
}

View File

@ -0,0 +1,44 @@
#ifndef PRODOTTO_H
#define PRODOTTO_H
#include "stdafx.h"
#include "modulo.h"
class Prodotto
{
private:
string m_nome;
int m_maxUsers;
string m_expDate;
int m_numSerie;
string m_piva;
int m_currUsers;
map<string, Modulo*> m_moduli; //[nome_modulo, Modulo]
public:
Prodotto(string nome);
Prodotto(string nome, int maxUsers, string expDate, int numSerie, string piva);
public:
string getNome() { return m_nome; }
int getMaxUsers() { return m_maxUsers; }
string getExpDate() { return m_expDate; }
int getExpDateAsInt();
int getNumSerie() { return m_numSerie; }
string getPiva() { return m_piva; }
int getCurrUsers() { return m_currUsers; }
void addUser() { m_currUsers++; }
void removeUser() { m_currUsers--; }
public:
void addModulo(Modulo* m);
void removeModulo(const char* modulo);
Modulo* getModulo(string modulo);
vector<string> getListaModuli();
bool verificaPiva(const char* piva);
};
#endif

View File

@ -0,0 +1,171 @@
#include "stdafx.h"
#include "socket.h"
#pragma comment(lib, "wsock32.lib")
int Socket::m_numOfSockets=0;
Socket::Socket() : m_socket(0)
{
Start();
// UDP: use SOCK_DGRAM instead of SOCK_STREAM
m_socket = socket(AF_INET,SOCK_STREAM,0);
if (m_socket == INVALID_SOCKET) {
throw "INVALID_SOCKET (1)";
}
m_refCounter = 1;
}
Socket::Socket(SOCKET s) : m_socket(s)
{
Start();
m_refCounter = 1;
};
Socket::~Socket() {
m_refCounter--;
if (m_refCounter==0) {
Close();
m_refCounter=0;
}
--m_numOfSockets;
if (m_numOfSockets==0) End();
}
void Socket::Close() {
closesocket(m_socket);
}
void Socket::Start()
{
if (m_numOfSockets==0)
{
WSADATA info;
if (WSAStartup(MAKEWORD(2,0), &info)) {
throw "Could not start WSA";
}
}
++m_numOfSockets;
}
void Socket::End()
{
WSACleanup();
}
SocketServer::SocketServer(int port, int connections, SocketType type)
{
sockaddr_in sa;
memset(&sa, 0, sizeof(sa));
sa.sin_family = PF_INET;
sa.sin_port = htons(port);
m_socket = socket(AF_INET, SOCK_STREAM, 0);
if (m_socket == INVALID_SOCKET) {
throw "INVALID_SOCKET (2)";
}
if(type==NonBlockingSocket) {
u_long arg = 1;
ioctlsocket(m_socket, FIONBIO, &arg);
}
/* bind the socket to the internet address */
if (bind(m_socket, (sockaddr *)&sa, sizeof(sockaddr_in)) == SOCKET_ERROR) {
closesocket(m_socket);
char buf[1024];
sprintf(buf, "bind non riuscito, porta occupata (%d)?", port);
throw buf;
}
listen(m_socket, connections);
}
Socket* SocketServer::Accept()
{
SOCKET new_sock = accept(m_socket, 0, 0);
if (new_sock == INVALID_SOCKET)
{
int rc = WSAGetLastError();
if(rc==WSAEWOULDBLOCK) {
return 0; // non-blocking call, no request pending
}
else {
throw "INVALID_SOCKET (4)";
}
}
Socket* r = new Socket(new_sock);
return r;
}
SocketClient::SocketClient(const string& host, int port) : Socket()
{
string error;
hostent *he;
if ((he = gethostbyname(host.c_str())) == 0)
{
error = strerror(errno);
throw error;
}
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr = *((in_addr *)he->h_addr);
memset(&(addr.sin_zero), 0, 8);
if (::connect(m_socket, (sockaddr *) &addr, sizeof(sockaddr)))
{
error = strerror(WSAGetLastError());
throw error;
}
}
string Socket::ReceiveLine()
{
string ret;
while (true)
{
char r;
switch(recv(m_socket, &r, 1, 0))
{
case 0: // not connected anymore;
// ... but last line sent
// might not end in \n,
// so return ret anyway.
return ret;
case -1:
return "";
}
if(r==-84)
{
recv(m_socket, &r, 1, 0);
recv(m_socket, &r, 1, 0);
recv(m_socket, &r, 1, 0);
recv(m_socket, &r, 1, 0);
recv(m_socket, &r, 1, 0);
recv(m_socket, &r, 1, 0);
}
if (r == '\n') return ret;
ret += r;
}
}
void Socket::SendLine(string s)
{
s += '\n';
send(m_socket,s.c_str(),s.length(),0);
}

View File

@ -0,0 +1,50 @@
#ifndef SOCKET_H
#define SOCKET_H
#include <WinSock2.h>
#include "stdafx.h"
enum SocketType {BlockingSocket, NonBlockingSocket};
class Socket
{
public:
virtual ~Socket();
void Close();
string ReceiveLine();
void SendLine (string l);
protected:
SOCKET m_socket;
int m_refCounter;
protected:
friend class SocketServer;
friend class SocketSelect;
Socket(SOCKET s);
Socket();
private:
static void Start();
static void End();
static int m_numOfSockets;
};
class SocketClient : public Socket {
public:
SocketClient(const string& host, int port);
};
class SocketServer : public Socket
{
public:
SocketServer(int port, int connections, SocketType type=BlockingSocket);
Socket* Accept();
};
#endif

View File

@ -0,0 +1,16 @@
#define SSA_OK 0 //ok
#define SSA_IDCLIENT_ERRATO -1 //idclient errato
#define SSA_NOTLOADED -100 //file di permessi non caricato (requisiti hw non verificati)
#define SSA_PROD_NOTFOUND -101 //prodotto non trovato
#define SSA_PROD_MAXUSERS -102 //raggiunto numero massimo di connessioni al prodotto
#define SSA_PROD_EXPDATE -103 //superata exp date prodotto
#define SSA_PROD_PIVA -104 //partita iva errata
#define SSA_MOD_NOTFOUND -201 //modulo non trovato
#define SSA_MOD_MAXUSERS -202 //raggiunto numero massimo di connessioni al modulo
#define SSA_MOD_EXPDATE -203 //superata exp date modulo
#define SSA_UTENTE_NON_LOGGATO -301 //utente non loggato
#define SSA_PROBLEMI_CONNESSIONE -400 //problemi di connessione

View File

@ -0,0 +1,70 @@
#include "stdafx.h"
#include<iostream>
#include<fstream>
#include "ssaini.h"
SSAIni* SSAIni::__inst=NULL;
SSAIni* SSAIni::getInst()
{
if(__inst==NULL)
createInst();
return __inst;
}
void SSAIni::createInst()
{
__inst = new SSAIni();
}
SSAIni::SSAIni()
{
loadDefaults();
ifstream infile1;
infile1.open("ssa.ini");
string s;
if(infile1.is_open())
{
while(!infile1.eof())
{
getline(infile1,s);
if(s.length()==0)
continue;
readLine(s);
}
infile1.close();
}
}
void SSAIni::readLine(string s)
{
if(s.size()==0)
return;
//salto i commenti
if(s[0]=='#')
return;
int p = s.find("=");
if(p==string::npos)
return;
m_props[s.substr(0,p)] = s.substr(p+1);
}
const char* SSAIni::getProp(const char* p)
{
map<string, string>::iterator it = m_props.find(p);
if(it==m_props.end()) return NULL;
return it->second.c_str();
}
void SSAIni::loadDefaults()
{
m_props[ENV_DEBUG] = "1";
m_props[ENV_PORT] = "";
m_props[ENV_PING_MAXTIME] = "300";
m_props[ENV_PING_DELAY] = "60";
}

View File

@ -0,0 +1,34 @@
#ifndef SSAINI_H
#define SSAINI_H
#include "stdafx.h"
#include <stdio.h>
#define ENV_DEBUG "SSA-DEBUG" //abilitazione livello di debug
#define ENV_PORT "SSA-PORT" //ip:porta di ssaagent.exe
#define ENV_PING_MAXTIME "PING-MAXTIME" //tempo in secondi dopo il quale un utente puo' essere dichiarato scaduto
#define ENV_PING_DELAY "PING-DELAY" //tempo in secondi ogni quanto pingare
class SSAIni
{
private:
static SSAIni* __inst;
static void createInst();
public:
static SSAIni* getInst();
private:
map<string, string> m_props;
private:
SSAIni();
void readLine(string s);
void loadDefaults();
public:
const char* getProp(const char* p);
};
#endif

View File

@ -0,0 +1,20 @@
#include "stdafx.h"
#include "ssalib.h"
#include "auth.h"
bool generaFileClient(const char* nome, const char* prodotto)
{
return Auth::generaFileClient(nome, prodotto);
}
bool generaLicenze()
{
return Auth::generaLicenze();
}
string decrypt(string fileName)
{
return Auth::decrypt(fileName);
}

View File

@ -0,0 +1,16 @@
#ifndef SSABLIB_H
#define SSABLIB_H
#include <string>
using namespace std;
//generazione del file client con i requisiti hw
bool generaFileClient(const char* nome, const char* prodotto);
//generazione del file di licenze (file_client + file_moduli)
bool generaLicenze();
//utility per vedere in chiaro un file di licenze
string decrypt(string fileName);
#endif

View File

@ -0,0 +1,79 @@
#include "stdafx.h"
#include "ssalibman.h"
#include "ssaini.h"
#include "ssalibman_client.h"
#include "ssalibman_clientserver.h"
SSALibMan* SSALibMan::__inst=NULL;
SSALibMan* SSALibMan::getInstClient()
{
if(__inst==NULL)
createInstClient();
return __inst;
}
SSALibMan* SSALibMan::getInst()
{
if(__inst==NULL)
createInst();
return __inst;
}
void SSALibMan::createInst()
{
const char* ssaport = SSAIni::getInst()->getProp(ENV_PORT);
if(ssaport!=NULL && strlen(ssaport)>0)
{
string s(ssaport);
int p=s.find(":");
if(p==string::npos)
throw "ParametroErrato!";
__inst = new SSALibMan_ClientServer(s.substr(0,p), atoi(s.substr(p+1).c_str() ));
}
else
{
createInstClient();
}
}
void SSALibMan::createInstClient()
{
__inst = new SSALibMan_Client();
}
const char* SSALibMan::DecodificaUltimoErrore()
{
switch(m_lastError)
{
case SSA_OK:
return "OK";
case SSA_IDCLIENT_ERRATO:
return "IdClient errato...";
case SSA_NOTLOADED:
return "File di configurazione non caricato...";
case SSA_PROD_NOTFOUND:
return "Prodotto non trovato";
case SSA_PROD_MAXUSERS:
return "Superato numero utenti massimo prodotto";
case SSA_PROD_PIVA:
return "Partita IVA errata";
case SSA_PROD_EXPDATE:
return "Superata data scadenza prodotto";
case SSA_MOD_NOTFOUND:
return "Modulo non trovato";
case SSA_MOD_MAXUSERS:
return "Superato numero utenti massimo modulo";
case SSA_MOD_EXPDATE:
return "Superata data scadenza modulo";
case SSA_UTENTE_NON_LOGGATO:
return "Utente non loggato";
case SSA_PROBLEMI_CONNESSIONE:
return "Impossibile contattare il server delle licenze";
default:
return "ERRORE NON CODIFICATO";
}
}

View File

@ -0,0 +1,55 @@
#ifndef SSALIBMAN_H
#define SSALIBMAN_H
#include "auth.h"
#define IFF_SEP "|"
#define IFF_VERIFICAMODULO "VM"
#define IFF_LOGIN "LI"
#define IFF_APRIMODULO "AM"
#define IFF_CHIUDIMODULO "CM"
#define IFF_LOGOUT "LO"
#define IFF_PING "PG"
#define IFF_GETXMLPRODOTTI "XMLP"
#define IFF_GETXMLUTENTI "XMLU"
#define IFF_GETID "ID"
#define IFF_GETNUMSERIE "NS"
#define IFF_DATASCADENZA "DS"
#define IFF_NUMMAXUTE "NU"
class SSALibMan
{
private:
static SSALibMan* __inst;
protected:
int m_lastError;
public:
static SSALibMan* getInst();
static SSALibMan* getInstClient();
public:
const char* DecodificaUltimoErrore();
virtual int VerificaModulo(const char* prodotto, const char* modulo) = 0;
virtual int VerificaModulo(const char* prodotto, const char* modulo, const char* piva) = 0;
virtual int Login(const char* idClient, const char* prodotto) = 0;
virtual int Login(const char* idClient, const char* prodotto, const char* piva) = 0;
virtual int ApriModulo(const char* idClient, const char* modulo) = 0;
virtual int ChiudiModulo(const char* idClient, const char* modulo) = 0;
virtual int Logout(const char* idClient, const char* prodotto) = 0;
virtual int Ping(const char* idClient) = 0;
virtual int XMLProdottiConfigurati(char* buf, int bufSize) =0;
virtual int XMLUtentiCorrenti(char* buf, int bufSize) =0;
virtual int Id(char* buf, int bufSize) =0;
virtual int NumeroSerie(const char* prodotto) =0;
virtual int DataScadenza(const char* prodotto, const char* modulo) =0;
virtual int NumMaxUtenti(const char* prodotto, const char* modulo) =0;
private:
static void createInst();
static void createInstClient();
};
#endif

View File

@ -0,0 +1,81 @@
#include "stdafx.h"
#include "ssalibman_client.h"
SSALibMan_Client::SSALibMan_Client()
{
m_lastError = SSA_NOTLOADED;
m_auth.caricaFileLicenze();
}
int SSALibMan_Client::VerificaModulo(const char* prodotto, const char* modulo)
{
m_lastError = m_auth.VerificaModulo(prodotto, modulo);
return m_lastError;
}
int SSALibMan_Client::VerificaModulo(const char* prodotto, const char* modulo, const char* piva)
{
m_lastError = m_auth.VerificaModulo(prodotto, modulo, piva);
return m_lastError;
}
int SSALibMan_Client::Login(const char* idClient, const char* prodotto)
{
m_lastError = m_auth.Login(idClient, prodotto);
return m_lastError;
}
int SSALibMan_Client::Login(const char* idClient, const char* prodotto, const char* piva)
{
m_lastError = m_auth.Login(idClient, prodotto, piva);
return m_lastError;
}
int SSALibMan_Client::ApriModulo(const char* idClient, const char* modulo)
{
m_lastError = m_auth.ApriModulo(idClient, modulo);
return m_lastError;
}
int SSALibMan_Client::ChiudiModulo(const char* idClient, const char* modulo)
{
m_lastError = m_auth.ChiudiModulo(idClient, modulo);
return m_lastError;
}
int SSALibMan_Client::Logout(const char* idClient, const char* prodotto)
{
m_lastError = m_auth.Logout(idClient, prodotto);
return m_lastError;
}
int SSALibMan_Client::Ping(const char* idClient)
{
m_lastError = m_auth.Ping(idClient);
return m_lastError;
}
int SSALibMan_Client::XMLProdottiConfigurati(char* buf, int bufSize)
{
return m_auth.GetXMLProdottiConfigurati(buf, bufSize);
}
int SSALibMan_Client::XMLUtentiCorrenti(char* buf, int bufSize)
{
return m_auth.GetXMLUtentiCorrenti(buf, bufSize);
}
int SSALibMan_Client::Id(char* buf, int bufSize)
{
return m_auth.GetId(buf, bufSize);
}
int SSALibMan_Client::NumeroSerie(const char* prodotto)
{
return m_auth.GetNumeroSerie(prodotto);
}
int SSALibMan_Client::DataScadenza(const char* prodotto, const char* modulo)
{
return m_auth.DataScadenza(prodotto, modulo);
}
int SSALibMan_Client::NumMaxUtenti(const char* prodotto, const char* modulo)
{
return m_auth.NumMaxUtenti(prodotto, modulo);
}

View File

@ -0,0 +1,33 @@
#ifndef SSALIBMAN_CLIENT_H
#define SSALIBMAN_CLIENT_H
#include "stdafx.h"
#include "ssalibman.h"
class SSALibMan_Client : public SSALibMan
{
private:
Auth m_auth;
public:
SSALibMan_Client();
public:
virtual int VerificaModulo(const char* prodotto, const char* modulo);
virtual int VerificaModulo(const char* prodotto, const char* modulo, const char* piva);
virtual int Login(const char* idClient, const char* prodotto);
virtual int Login(const char* idClient, const char* prodotto, const char* piva);
virtual int ApriModulo(const char* idClient, const char* modulo);
virtual int ChiudiModulo(const char* idClient, const char* modulo);
virtual int Logout(const char* idClient, const char* prodotto);
virtual int Ping(const char* idClient);
virtual int XMLProdottiConfigurati(char* buf, int bufSize);
virtual int XMLUtentiCorrenti(char* buf, int bufSize);
virtual int Id(char* buf, int bufSize);
virtual int NumeroSerie(const char* prodotto);
virtual int DataScadenza(const char* prodotto, const char* modulo);
virtual int NumMaxUtenti(const char* prodotto, const char* modulo);
};
#endif

View File

@ -0,0 +1,549 @@
#include "stdafx.h"
#include <windows.h>
#include <process.h>
#include "ssaini.h"
#include "ssalibman_clientserver.h"
//TODO EP: usare un accesso multipthread?
static CRITICAL_SECTION cs;
static vector<string> loggedUsers;
static string m_host;
static int m_port;
unsigned __stdcall Answer1(void* a)
{
int pingDelay = atoi(SSAIni::getInst()->getProp(ENV_PING_DELAY));
if(pingDelay>0)
{
bool goSleep=true;
while(true)
{
EnterCriticalSection(&cs);
try
{
goSleep=true;
vector<string>::iterator it = loggedUsers.begin();
while(it!=loggedUsers.end())
{
int ret = SSALibMan::getInstClient()->Ping((*it).c_str());
if(ret==SSA_UTENTE_NON_LOGGATO)
{
goSleep=false;
loggedUsers.erase(it);
break;
}
else
it++;
}
}
catch(...) {}
LeaveCriticalSection(&cs);
if(goSleep)
Sleep(pingDelay*1000);
}
}
_endthreadex(0);
return 0;
}
SSALibMan_ClientServer::SSALibMan_ClientServer(const string& host, int port)
{
m_lastError = SSA_NOTLOADED;
try
{
InitializeCriticalSection(&cs);
//m_socket = new SocketClient(m_host, m_port);
m_host = host;
m_port = port;
unsigned ret;
_beginthreadex(0,0,Answer1, NULL,0,&ret);
}
catch(...) { /*m_socket=NULL;*/ }
}
SSALibMan_ClientServer::~SSALibMan_ClientServer()
{
/*if(m_socket!=NULL)
{
m_socket->Close();
delete m_socket;
}*/
}
int SSALibMan_ClientServer::VerificaModulo(const char* prodotto, const char* modulo)
{
return VerificaModulo(prodotto, modulo, "");
}
int SSALibMan_ClientServer::VerificaModulo(const char* prodotto, const char* modulo, const char* piva)
{
m_lastError = SSA_NOTLOADED;
SocketClient* m_socket = NULL;
try
{
m_socket = new SocketClient(m_host, m_port);
}
catch ( ... )
{
m_lastError = SSA_PROBLEMI_CONNESSIONE;
}
if(m_socket==NULL)
return m_lastError;
string l = IFF_VERIFICAMODULO;
l+=IFF_SEP;
l+=prodotto;
l+=IFF_SEP;
l+=modulo;
l+=IFF_SEP;
l+=piva;
l+=IFF_SEP;
m_socket->SendLine(l);
string ret = m_socket->ReceiveLine();
if(ret.size()>0)
m_lastError = atoi(ret.c_str());
m_socket->Close();
return m_lastError;
}
int SSALibMan_ClientServer::Login(const char* idClient, const char* prodotto)
{
return Login(idClient, prodotto, "");
}
int SSALibMan_ClientServer::Login(const char* idClient, const char* prodotto, const char* piva)
{
m_lastError = SSA_NOTLOADED;
SocketClient* m_socket = NULL;
try
{
m_socket = new SocketClient(m_host, m_port);
}
catch ( ... )
{
m_lastError = SSA_PROBLEMI_CONNESSIONE;
}
if(m_socket==NULL)
return m_lastError;
string l = IFF_LOGIN;
l+=IFF_SEP;
l+=idClient==NULL?"":idClient;
l+=IFF_SEP;
l+=prodotto;
l+=IFF_SEP;
l+=piva;
l+=IFF_SEP;
m_socket->SendLine(l);
string ret = m_socket->ReceiveLine();
if(ret.size()>0)
m_lastError = atoi(ret.c_str());
EnterCriticalSection(&cs);
string clientName;
if(idClient!=NULL)
clientName=string(idClient);
bool found=false;
vector<string>::iterator it = loggedUsers.begin();
while(it!=loggedUsers.end())
{
if((*it).compare(clientName.c_str())==0)
{
found=true;
break;
}
it++;
}
if(!found)
loggedUsers.push_back(clientName);
LeaveCriticalSection(&cs);
m_socket->Close();
return m_lastError;
}
int SSALibMan_ClientServer::ApriModulo(const char* idClient, const char* modulo)
{
m_lastError = SSA_NOTLOADED;
SocketClient* m_socket = NULL;
try
{
m_socket = new SocketClient(m_host, m_port);
}
catch ( ... )
{
m_lastError = SSA_PROBLEMI_CONNESSIONE;
}
if(m_socket==NULL)
return m_lastError;
string l = IFF_APRIMODULO;
l+=IFF_SEP;
l+=idClient==NULL?"":idClient;
l+=IFF_SEP;
l+=modulo;
l+=IFF_SEP;
m_socket->SendLine(l);
string ret = m_socket->ReceiveLine();
if(ret.size()>0)
m_lastError = atoi(ret.c_str());
m_socket->Close();
return m_lastError;
}
int SSALibMan_ClientServer::ChiudiModulo(const char* idClient, const char* modulo)
{
m_lastError = SSA_NOTLOADED;
SocketClient* m_socket = NULL;
try
{
m_socket = new SocketClient(m_host, m_port);
}
catch ( ... )
{
m_lastError = SSA_PROBLEMI_CONNESSIONE;
}
if(m_socket==NULL)
return m_lastError;
string l = IFF_CHIUDIMODULO;
l+=IFF_SEP;
l+=idClient==NULL?"":idClient;
l+=IFF_SEP;
l+=modulo;
l+=IFF_SEP;
m_socket->SendLine(l);
string ret = m_socket->ReceiveLine();
if(ret.size()>0)
m_lastError = atoi(ret.c_str());
m_socket->Close();
return m_lastError;
}
int SSALibMan_ClientServer::Logout(const char* idClient, const char* prodotto)
{
m_lastError = SSA_NOTLOADED;
SocketClient* m_socket = NULL;
try
{
m_socket = new SocketClient(m_host, m_port);
}
catch ( ... )
{
m_lastError = SSA_PROBLEMI_CONNESSIONE;
}
if(m_socket==NULL)
return m_lastError;
string l = IFF_LOGOUT;
l+=IFF_SEP;
l+=idClient==NULL?"":idClient;
l+=IFF_SEP;
l+=prodotto;
l+=IFF_SEP;
m_socket->SendLine(l);
string ret = m_socket->ReceiveLine();
if(ret.size()>0)
m_lastError = atoi(ret.c_str());
EnterCriticalSection(&cs);
string clientName;
if(idClient!=NULL)
clientName=string(idClient);
vector<string>::iterator it = loggedUsers.begin();
while(it!=loggedUsers.end())
{
if((*it).compare(clientName.c_str())==0)
{
loggedUsers.erase(it);
break;
}
it++;
}
LeaveCriticalSection(&cs);
m_socket->Close();
return m_lastError;
}
int SSALibMan_ClientServer::Ping(const char* idClient)
{
m_lastError = SSA_NOTLOADED;
SocketClient* m_socket = NULL;
try
{
m_socket = new SocketClient(m_host, m_port);
}
catch ( ... )
{
m_lastError = SSA_PROBLEMI_CONNESSIONE;
}
if(m_socket==NULL)
return m_lastError;
string l = IFF_PING;
l+=IFF_SEP;
l+=idClient==NULL?"":idClient;
l+=IFF_SEP;
m_socket->SendLine(l);
string ret = m_socket->ReceiveLine();
if(ret.size()>0)
m_lastError = atoi(ret.c_str());
m_socket->Close();
return m_lastError;
}
int SSALibMan_ClientServer::XMLProdottiConfigurati(char* buf, int bufSize)
{
m_lastError = SSA_NOTLOADED;
SocketClient* m_socket = NULL;
try
{
m_socket = new SocketClient(m_host, m_port);
}
catch ( ... )
{
m_lastError = SSA_PROBLEMI_CONNESSIONE;
}
if(m_socket==NULL)
return m_lastError;
string l = IFF_GETXMLPRODOTTI;
l+=IFF_SEP;
m_socket->SendLine(l);
string ret = m_socket->ReceiveLine();
if(ret.size()>0)
{
strcpy(buf, ret.size()>bufSize? ret.substr(0, bufSize).c_str() : ret.c_str());
m_lastError = ret.size();
}
m_socket->Close();
return m_lastError;
}
int SSALibMan_ClientServer::XMLUtentiCorrenti(char* buf, int bufSize)
{
m_lastError = SSA_NOTLOADED;
SocketClient* m_socket = NULL;
try
{
m_socket = new SocketClient(m_host, m_port);
}
catch ( ... )
{
m_lastError = SSA_PROBLEMI_CONNESSIONE;
}
if(m_socket==NULL)
return m_lastError;
string l = IFF_GETXMLUTENTI;
l+=IFF_SEP;
m_socket->SendLine(l);
string ret = m_socket->ReceiveLine();
if(ret.size()>0)
{
strcpy(buf, ret.size()>bufSize? ret.substr(0, bufSize).c_str() : ret.c_str());
m_lastError = ret.size();
}
m_socket->Close();
return m_lastError;
}
int SSALibMan_ClientServer::Id(char* buf, int bufSize)
{
m_lastError = SSA_NOTLOADED;
SocketClient* m_socket = NULL;
try
{
m_socket = new SocketClient(m_host, m_port);
}
catch ( ... )
{
m_lastError = SSA_PROBLEMI_CONNESSIONE;
}
if(m_socket==NULL)
return m_lastError;
string l = IFF_GETID;
l+=IFF_SEP;
m_socket->SendLine(l);
string ret = m_socket->ReceiveLine();
if(ret.size()>0)
{
strcpy(buf, ret.size()>bufSize? ret.substr(0, bufSize).c_str() : ret.c_str());
m_lastError = ret.size();
}
m_socket->Close();
return m_lastError;
}
int SSALibMan_ClientServer::NumeroSerie(const char* prodotto)
{
m_lastError = SSA_NOTLOADED;
SocketClient* m_socket = NULL;
try
{
m_socket = new SocketClient(m_host, m_port);
}
catch ( ... )
{
m_lastError = SSA_PROBLEMI_CONNESSIONE;
}
if(m_socket==NULL)
return m_lastError;
string l = IFF_GETNUMSERIE;
l+=IFF_SEP;
l+=prodotto;
l+=IFF_SEP;
m_socket->SendLine(l);
string ret = m_socket->ReceiveLine();
if(ret.size()>0)
{
m_lastError=SSA_OK;
return atoi(ret.c_str());
}
m_socket->Close();
return m_lastError;
}
int SSALibMan_ClientServer::DataScadenza(const char* prodotto, const char* modulo)
{
m_lastError = SSA_NOTLOADED;
SocketClient* m_socket = NULL;
try
{
m_socket = new SocketClient(m_host, m_port);
}
catch ( ... )
{
m_lastError = SSA_PROBLEMI_CONNESSIONE;
}
if(m_socket==NULL)
return m_lastError;
string l = IFF_DATASCADENZA;
l+=IFF_SEP;
l+=prodotto;
l+=IFF_SEP;
l+=modulo==NULL?"" : modulo;
l+=IFF_SEP;
m_socket->SendLine(l);
string ret = m_socket->ReceiveLine();
m_socket->Close();
if(ret.size()>0)
{
m_lastError=SSA_OK;
return atoi(ret.c_str());
}
return m_lastError;
}
int SSALibMan_ClientServer::NumMaxUtenti(const char* prodotto, const char* modulo)
{
m_lastError = SSA_NOTLOADED;
SocketClient* m_socket = NULL;
try
{
m_socket = new SocketClient(m_host, m_port);
}
catch ( ... )
{
m_lastError = SSA_PROBLEMI_CONNESSIONE;
}
if(m_socket==NULL)
return m_lastError;
string l = IFF_NUMMAXUTE;
l+=IFF_SEP;
l+=prodotto;
l+=IFF_SEP;
l+=modulo==NULL?"" : modulo;
l+=IFF_SEP;
m_socket->SendLine(l);
string ret = m_socket->ReceiveLine();
m_socket->Close();
if(ret.size()>0)
{
m_lastError=SSA_OK;
return atoi(ret.c_str());
}
return m_lastError;
}

View File

@ -0,0 +1,36 @@
#ifndef SSALIBMAN_CLIENTSERVER_H
#define SSALIBMAN_CLIENTSERVER_H
#include "stdafx.h"
#include "socket.h"
#include "ssalibman.h"
class SSALibMan_ClientServer : public SSALibMan
{
private:
//SocketClient* m_socket;
public:
SSALibMan_ClientServer(const string& host, int port);
virtual ~SSALibMan_ClientServer();
public:
virtual int VerificaModulo(const char* prodotto, const char* modulo);
virtual int VerificaModulo(const char* prodotto, const char* modulo, const char* piva);
virtual int Login(const char* idClient, const char* prodotto);
virtual int Login(const char* idClient, const char* prodotto, const char* piva);
virtual int ApriModulo(const char* idClient, const char* modulo);
virtual int ChiudiModulo(const char* idClient, const char* modulo);
virtual int Logout(const char* idClient, const char* prodotto);
virtual int Ping(const char* idClient);
virtual int XMLProdottiConfigurati(char* buf, int bufSize);
virtual int XMLUtentiCorrenti(char* buf, int bufSize);
virtual int Id(char* buf, int bufSize);
virtual int NumeroSerie(const char* prodotto);
virtual int DataScadenza(const char* prodotto, const char* modulo);
virtual int NumMaxUtenti(const char* prodotto, const char* modulo);
};
#endif

View File

@ -0,0 +1,90 @@
#include "stdafx.h"
#include <time.h>
#include <sys/timeb.h>
#include "ssalog.h"
#include "ssaini.h"
#include "auth.h"
SSALog* SSALog::__inst=NULL;
SSALog* SSALog::getInst()
{
if(__inst==NULL)
createInst();
return __inst;
}
void SSALog::createInst()
{
__inst = new SSALog();
}
SSALog::SSALog()
{
m_dbgLev = 0;
const char* env = SSAIni::getInst()->getProp(ENV_DEBUG);
if(env!=NULL && strlen(env)>0)
m_dbgLev = atoi(env);
if(m_dbgLev>=DBGLEV_ERROR)
{
m_file = fopen ("ssa.log","w");
char buf[1024];
sprintf(buf, "SSARel=%s", SSA_REL);
info(buf);
}
}
SSALog::~SSALog()
{
if(m_file!=NULL)
{
fflush(m_file);
fclose(m_file);
}
}
void SSALog::write(const char* t, const char* s)
{
if(m_file!=NULL)
{
char buf[1024];
time_t rawtime;
struct tm * timeinfo;
char bufTime[50];
time ( &rawtime );
timeinfo = localtime ( &rawtime );
struct _timeb tstruct;
_ftime( &tstruct );
strftime(bufTime, sizeof(bufTime), "%Y-%m-%d.%H:%M:%S", timeinfo);
sprintf(buf, "%s,%u %s %s\n", bufTime, tstruct.millitm, t, s);
fputs(buf,m_file);
fflush(m_file);
}
}
void SSALog::error(const char* s)
{
if(m_dbgLev<DBGLEV_ERROR)
return;
write("ERROR", s);
}
void SSALog::info(const char* s)
{
if(m_dbgLev<DBGLEV_INFO)
return;
write("INFO", s);
}
void SSALog::debug(const char* s)
{
if(m_dbgLev<DBGLEV_DEBUG)
return;
write("DEBUG", s);
}

View File

@ -0,0 +1,38 @@
#ifndef SSALOG_H
#define SSALOG_H
#include "stdafx.h"
#include <stdio.h>
#define DBGLEV_ERROR 1
#define DBGLEV_INFO 2
#define DBGLEV_DEBUG 3
class SSALog
{
private:
static SSALog* __inst;
static void createInst();
public:
static SSALog* getInst();
private:
int m_dbgLev;
FILE* m_file;
private:
SSALog();
public:
virtual ~SSALog();
void error(const char* s);
void info(const char* s);
void debug(const char* s);
private:
void write(const char* t, const char* s);
};
#endif

View File

@ -0,0 +1,36 @@
// stdafx.cpp : source file that includes just the standard includes
// SSALib.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
#include <iostream>
#include <sstream>
bool EndsWith(const string &str, const string& key)
{
size_t keylen = key.length();
size_t strlen = str.length();
if(keylen <= strlen)
return string::npos != str.rfind(key.c_str(),strlen - keylen, keylen);
else return false;
}
string narrow( const wstring& str )
{
ostringstream stm;
const ctype<char>& ctfacet = use_facet< ctype<char> >( stm.getloc() ) ;
for( size_t i=0 ; i<str.size() ; ++i )
stm << ctfacet.narrow( str[i], 0 ) ;
return stm.str() ;
}
wstring widen( const string& str )
{
wostringstream wstm ;
const ctype<wchar_t>& ctfacet = use_facet< ctype<wchar_t> >( wstm.getloc() ) ;
for( size_t i=0 ; i<str.size() ; ++i )
wstm << ctfacet.widen( str[i] ) ;
return wstm.str() ;
}

View File

@ -0,0 +1,23 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
#endif
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
//STL
#include <string>
#include <Vector>
#include <map>
using namespace std;
bool EndsWith(const string &str, const string& key);
string narrow( const wstring& str );
wstring widen( const string& str );

View File

@ -0,0 +1,157 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27130.2027
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SSALib", "SSALib\SSALib.vcxproj", "{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SSAGetInfo", "SSAGetInfo\SSAGetInfo.vcxproj", "{EB1AC636-C625-4DCD-857B-333A29F3CD3E}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SSACreaLicenza", "SSACreaLicenza\SSACreaLicenza.vcproj", "{CFB99818-88B6-45B9-A2BA-09785781CFB6}"
ProjectSection(ProjectDependencies) = postProject
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62} = {FEC518FD-F211-4B43-BC8B-F93E74F6DB62}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SSADll", "SSADll\SSADll.vcxproj", "{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestDll", "TestDll\TestDll.vcproj", "{BBB86999-65EA-4F83-A1FD-917B0A38381A}"
ProjectSection(ProjectDependencies) = postProject
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C} = {7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SSAAgent", "SSAAgent\SSAAgent.vcxproj", "{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cryptlib", "contrib\cryptopp561\cryptlib.vcxproj", "{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
DLL-Import Debug|Win32 = DLL-Import Debug|Win32
DLL-Import Debug|x64 = DLL-Import Debug|x64
DLL-Import Release|Win32 = DLL-Import Release|Win32
DLL-Import Release|x64 = DLL-Import Release|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.Debug|Win32.ActiveCfg = Debug|Win32
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.Debug|Win32.Build.0 = Debug|Win32
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.Debug|x64.ActiveCfg = Debug|x64
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.Debug|x64.Build.0 = Debug|x64
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.DLL-Import Debug|x64.Build.0 = Debug|x64
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.DLL-Import Release|Win32.Build.0 = Release|Win32
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.DLL-Import Release|x64.ActiveCfg = Release|x64
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.DLL-Import Release|x64.Build.0 = Release|x64
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.Release|Win32.ActiveCfg = Release|Win32
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.Release|Win32.Build.0 = Release|Win32
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.Release|x64.ActiveCfg = Release|x64
{FEC518FD-F211-4B43-BC8B-F93E74F6DB62}.Release|x64.Build.0 = Release|x64
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.Debug|Win32.ActiveCfg = Debug|Win32
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.Debug|Win32.Build.0 = Debug|Win32
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.Debug|x64.ActiveCfg = Debug|x64
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.Debug|x64.Build.0 = Debug|x64
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.DLL-Import Debug|x64.Build.0 = Debug|x64
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.DLL-Import Release|Win32.Build.0 = Release|Win32
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.DLL-Import Release|x64.ActiveCfg = Release|x64
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.DLL-Import Release|x64.Build.0 = Release|x64
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.Release|Win32.ActiveCfg = Release|Win32
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.Release|Win32.Build.0 = Release|Win32
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.Release|x64.ActiveCfg = Release|x64
{EB1AC636-C625-4DCD-857B-333A29F3CD3E}.Release|x64.Build.0 = Release|x64
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.Debug|Win32.ActiveCfg = Debug|Win32
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.Debug|Win32.Build.0 = Debug|Win32
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.Debug|x64.ActiveCfg = Debug|x64
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.Debug|x64.Build.0 = Debug|x64
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.DLL-Import Debug|x64.Build.0 = Debug|x64
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.DLL-Import Release|Win32.Build.0 = Release|Win32
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.DLL-Import Release|x64.ActiveCfg = Release|x64
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.DLL-Import Release|x64.Build.0 = Release|x64
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.Release|Win32.ActiveCfg = Release|Win32
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.Release|Win32.Build.0 = Release|Win32
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.Release|x64.ActiveCfg = Release|x64
{CFB99818-88B6-45B9-A2BA-09785781CFB6}.Release|x64.Build.0 = Release|x64
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.Debug|Win32.ActiveCfg = Debug|Win32
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.Debug|Win32.Build.0 = Debug|Win32
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.Debug|x64.ActiveCfg = Debug|x64
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.Debug|x64.Build.0 = Debug|x64
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.DLL-Import Debug|x64.Build.0 = Debug|x64
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.DLL-Import Release|Win32.Build.0 = Release|Win32
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.DLL-Import Release|x64.ActiveCfg = Release|x64
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.DLL-Import Release|x64.Build.0 = Release|x64
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.Release|Win32.ActiveCfg = Release|Win32
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.Release|Win32.Build.0 = Release|Win32
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.Release|x64.ActiveCfg = Release|x64
{7AA6DB69-5DD2-4BF5-B49B-2CC604F7790C}.Release|x64.Build.0 = Release|x64
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.Debug|Win32.ActiveCfg = Debug|Win32
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.Debug|Win32.Build.0 = Debug|Win32
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.Debug|x64.ActiveCfg = Debug|x64
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.Debug|x64.Build.0 = Debug|x64
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.DLL-Import Debug|x64.Build.0 = Debug|x64
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.DLL-Import Release|Win32.Build.0 = Release|Win32
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.DLL-Import Release|x64.ActiveCfg = Release|x64
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.DLL-Import Release|x64.Build.0 = Release|x64
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.Release|Win32.ActiveCfg = Release|Win32
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.Release|Win32.Build.0 = Release|Win32
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.Release|x64.ActiveCfg = Release|x64
{BBB86999-65EA-4F83-A1FD-917B0A38381A}.Release|x64.Build.0 = Release|x64
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.Debug|Win32.ActiveCfg = Debug|Win32
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.Debug|Win32.Build.0 = Debug|Win32
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.Debug|x64.ActiveCfg = Debug|x64
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.Debug|x64.Build.0 = Debug|x64
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.DLL-Import Debug|Win32.ActiveCfg = Debug|Win32
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.DLL-Import Debug|Win32.Build.0 = Debug|Win32
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.DLL-Import Debug|x64.ActiveCfg = Debug|x64
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.DLL-Import Debug|x64.Build.0 = Debug|x64
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.DLL-Import Release|Win32.ActiveCfg = Release|Win32
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.DLL-Import Release|Win32.Build.0 = Release|Win32
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.DLL-Import Release|x64.ActiveCfg = Release|x64
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.DLL-Import Release|x64.Build.0 = Release|x64
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.Release|Win32.ActiveCfg = Release|Win32
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.Release|Win32.Build.0 = Release|Win32
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.Release|x64.ActiveCfg = Release|x64
{2E6C788E-FB15-4DB4-A4F4-D385AE44B29D}.Release|x64.Build.0 = Release|x64
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|Win32.ActiveCfg = Debug|Win32
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|Win32.Build.0 = Debug|Win32
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|x64.ActiveCfg = Debug|x64
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|x64.Build.0 = Debug|x64
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Debug|Win32.ActiveCfg = DLL-Import Debug|Win32
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Debug|Win32.Build.0 = DLL-Import Debug|Win32
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Debug|x64.ActiveCfg = DLL-Import Debug|x64
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Debug|x64.Build.0 = DLL-Import Debug|x64
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Release|Win32.ActiveCfg = DLL-Import Release|Win32
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Release|Win32.Build.0 = DLL-Import Release|Win32
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Release|x64.ActiveCfg = DLL-Import Release|x64
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.DLL-Import Release|x64.Build.0 = DLL-Import Release|x64
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|Win32.ActiveCfg = Release|Win32
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|Win32.Build.0 = Release|Win32
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|x64.ActiveCfg = Release|x64
{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {46DEB11C-18B9-4842-ADE5-D7D016CFB9C5}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,33 @@
========================================================================
CONSOLE APPLICATION : TestDll Project Overview
========================================================================
AppWizard has created this TestDll application for you.
This file contains a summary of what you will find in each of the files that
make up your TestDll application.
TestDll.vcproj
This is the main project file for VC++ projects generated using an Application Wizard.
It contains information about the version of Visual C++ that generated the file, and
information about the platforms, configurations, and project features selected with the
Application Wizard.
TestDll.cpp
This is the main application source file.
/////////////////////////////////////////////////////////////////////////////
Other standard files:
StdAfx.h, StdAfx.cpp
These files are used to build a precompiled header (PCH) file
named TestDll.pch and a precompiled types file named StdAfx.obj.
/////////////////////////////////////////////////////////////////////////////
Other notes:
AppWizard uses "TODO:" comments to indicate parts of the source code you
should add to or customize.
/////////////////////////////////////////////////////////////////////////////

View File

@ -0,0 +1,846 @@
// TestDll.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <windows.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ssadll.h"
//TODO EP: scrivere un test per verificare che un file di licenza prodotto sulla macchina "A" non sia
//utilizzabile dalla macchina "B"
//TODO EP: scrivere un test che verifica il logout forzato di un client che non sento da tempo
//TODO EP: scrivere test per verificare accessi contemporanei
//quelli che devono andare MALE
void testNegativi()
{
int ret = 0;
printf("TEST CHE DEVONO ANDARE MALE: \n");
printf("% 50s", "Verifica prodotto NON esistente....");
ret = SSA_VerificaModulo("xxPROVAxx", "xxprova1xx");
if(ret != 0)
{
printf("OK (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("ERRORE");
printf("\n");
printf("% 50s", "Verifica modulo NON esistente....");
ret = SSA_VerificaModulo("PROVA", "xxprova1xx");
if(ret != 0)
{
printf("OK (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("ERRORE");
printf("\n");
printf("% 50s", "Verifica prodotto scaduto....");
ret = SSA_VerificaModulo("SCADUTO", "");
if(ret != 0)
{
printf("OK (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("ERRORE");
printf("\n");
printf("% 50s", "Verifica modulo scaduto....");
ret = SSA_VerificaModulo("PROVA", "scaduto1");
if(ret != 0)
{
printf("OK (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("ERRORE");
printf("\n");
printf("% 50s", "Login a modulo NON esistente....");
ret = SSA_Login(NULL, "xxPROVAxx");
if(ret != 0)
{
printf("OK (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("ERRORE");
printf("\n");
printf("% 50s", "ApriModulo modulo esistente (ma non loggato)....");
ret = SSA_ApriModulo(NULL, "prova1");
if(ret != 0)
{
printf("OK (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("ERRORE");
printf("\n");
printf("% 50s", "ApriModulo modulo NON esistente....");
ret = SSA_Login(NULL, "PROVA");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
ret = SSA_ApriModulo(NULL, "xxprova1xx");
if(ret != 0)
{
printf("OK (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("ERRORE");
printf("\n");
printf("% 50s", "Ping utente non loggato....");
ret = SSA_Ping("Cipolla");
if(ret != 0)
{
printf("OK (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("ERRORE");
printf("\n");
}
//quelli che devono andare BENE
void testPositivi()
{
int ret = 0;
printf("\nQUELLI CHE DEVONO ANDARE BENE: \n");
printf("% 50s", "Verifica modulo esistente (PROVA)....");
ret = SSA_VerificaModulo("PROVA", "prova1");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "Verifica modulo esistente (PrOvA)....");
ret = SSA_VerificaModulo("PrOvA", "prova1");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "Login a prodotto esistente....");
ret = SSA_Login(NULL, "PROVA");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "Verifica numero serie....");
int iret = SSA_NumeroSerie("PROVA");
if(iret!=1234)
{
printf("ERRORE (%s ret=%d)", SSA_DecodificaUltimoErrore(), iret);
}
else
printf("OK");
printf("\n");
printf("% 50s", "ApriModulo a modulo esistente....");
ret = SSA_ApriModulo(NULL, "prova1");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "Ping....");
ret = SSA_Ping(NULL);
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "ChiudiModulo a modulo esistente....");
ret = SSA_ChiudiModulo(NULL, "prova1");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "Logout da prodotto esistente....");
ret = SSA_Logout(NULL, "PROVA");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "Richiesta data scadenza prodotto....");
ret = SSA_DataScadenza("PROVA", NULL);
if(ret!=29991231)
{
printf("ERRORE (%s) - %d", SSA_DecodificaUltimoErrore(), ret);
}
else
printf("OK");
printf("\n");
printf("% 50s", "Richiesta data scadenza modulo....");
ret = SSA_DataScadenza("PROVA", "prova1");
if(ret!=29991231)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "Richiesta num max utenti prodotto....");
ret = SSA_NumMaxUtenti("PROVA", NULL);
if(ret!=3)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "Richiesta num max utenti modulo....");
ret = SSA_NumMaxUtenti("PROVA", "prova1");
if(ret!=1)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
}
void generaFileModuli()
{
FILE* f = fopen("moduli.txt", "w");
if(f==NULL)
return;
fputs("<PRODOTTO nome=\"PROVA\" data-scad=\"2999-12-31\" num-abilitazioni=\"3\" numero-serie=\"1234\" >\n", f);
fputs("<MODULO nome=\"prova1\" data-scad=\"2999-12-31\" num-abilitazioni=\"1\" />\n", f);
fputs("<MODULO nome=\"prova2\" data-scad=\"2999-12-31\" num-abilitazioni=\"2\" />\n", f);
fputs("<MODULO nome=\"scaduto1\" data-scad=\"2011-08-12\" num-abilitazioni=\"2\" />\n", f);
fputs("</PRODOTTO>\n", f);
fputs("<PRODOTTO nome=\"SCADUTO\" data-scad=\"2011-08-12\" num-abilitazioni=\"-1\" numero-serie=\"ABCD\" >\n", f);
fputs("</PRODOTTO>\n", f);
fputs("<PRODOTTO nome=\"PIVA\" data-scad=\"2999-12-31\" num-abilitazioni=\"-1\" numero-serie=\"ABCD\" piva=\"994455\">\n", f);
fputs("<MODULO nome=\"MP1\" data-scad=\"2999-12-31\" num-abilitazioni=\"1\" />\n", f);
fputs("</PRODOTTO>\n", f);
fputs("<PRODOTTO nome=\"PIVA2\" data-scad=\"2999-12-31\" num-abilitazioni=\"-1\" numero-serie=\"ABCD\" piva=\"12399945:44556689\">\n", f);
fputs("<MODULO nome=\"MP2\" data-scad=\"2999-12-31\" num-abilitazioni=\"1\" />\n", f);
fputs("</PRODOTTO>\n", f);
fflush(f);
fclose(f);
}
void testMaxUteProdotto()
{
int ret = 0;
printf("\nTEST MAX UTE PRODOTTO: \n");
printf("% 50s", "Login 1....");
ret = SSA_Login("utente1", "PROVA");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "Login 2....");
ret = SSA_Login("utente2", "PROVA");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "Login 3....");
ret = SSA_Login("utente3", "PROVA");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
//questo deve andare male
printf("% 50s", "Login 4....");
ret = SSA_Login("utente4", "PROVA");
if(ret == 0)
{
printf("ERRORE");
}
else
printf("OK (%s)", SSA_DecodificaUltimoErrore());
printf("\n");
//questo deve andare bene perche' gia' loggato
printf("% 50s", "Login 3....");
ret = SSA_Login("utente3", "PROVA");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "Logout 2....");
ret = SSA_Logout("utente2", "PROVA");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
//adesso devo potermi loggare
printf("% 50s", "Login 4....");
ret = SSA_Login("utente4", "PROVA");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
ret = SSA_Logout("utente1", "PROVA");
ret = SSA_Logout("utente3", "PROVA");
ret = SSA_Logout("utente4", "PROVA");
printf("\n");
}
void testMaxUteModulo()
{
int ret = 0;
printf("\nTEST MAX UTE MODULO: \n");
printf("% 50s", "Login 1....");
ret = SSA_Login("utente1", "PROVA");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "ApriModulo utente1....");
ret = SSA_ApriModulo("utente1", "prova1");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "Login 2....");
ret = SSA_Login("utente2", "PROVA");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
//deve darmi errore
printf("% 50s", "ApriModulo utente2....");
ret = SSA_ApriModulo("utente2", "prova1");
if(ret == 0)
{
printf("ERRORE");
}
else
printf("OK (%s)", SSA_DecodificaUltimoErrore());
printf("\n");
printf("% 50s", "ChiudiModulo utente1....");
ret = SSA_ChiudiModulo("utente1", "prova1");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "ApriModulo utente2....");
ret = SSA_ApriModulo("utente2", "prova1");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
ret = SSA_Logout("utente2", "PROVA");
printf("% 50s", "ApriModulo utente1....");
ret = SSA_ApriModulo("utente1", "prova1");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
ret = SSA_Logout("utente1", "PROVA");
printf("\n");
}
void testForceLogout()
{
int ret = 0;
printf("\nTEST FORCE LOGOUT: \n");
printf("% 50s", "Login 1....");
ret = SSA_Login("utente1", "PROVA");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "ApriModulo utente1....");
ret = SSA_ApriModulo("utente1", "prova1");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
printf("% 50s", "Login 2....");
ret = SSA_Login("utente2", "PROVA");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
//deve darmi errore
printf("% 50s", "ApriModulo utente2....");
ret = SSA_ApriModulo("utente2", "prova1");
if(ret == 0)
{
printf("ERRORE");
}
else
printf("OK (%s)", SSA_DecodificaUltimoErrore());
printf("\n");
//aspetto un minuto
time_t rawtime;
struct tm * timeinfo;
char bufTime[50];
time ( &rawtime );
timeinfo = localtime ( &rawtime );
strftime(bufTime, sizeof(bufTime), "%H:%M:%S", timeinfo);
printf("% 40s (%s)\n", "Aspetto 1 minuto....", bufTime);
Sleep(60000);
//deve darmi ancora errore
printf("% 50s", "ApriModulo utente2....");
ret = SSA_ApriModulo("utente2", "prova1");
if(ret == 0)
{
printf("ERRORE");
}
else
printf("OK (%s)", SSA_DecodificaUltimoErrore());
printf("\n");
//aspetto 5 minuti
time ( &rawtime );
timeinfo = localtime ( &rawtime );
strftime(bufTime, sizeof(bufTime), "%H:%M:%S", timeinfo);
printf("% 40s (%s)\n", "Aspetto 5 minuti....", bufTime);
Sleep(300000);
//deve non deve + darmi errore (perche' faccio logout di utente1)
printf("% 50s", "ApriModulo utente2....");
ret = SSA_ApriModulo("utente2", "prova1");
if(ret == 0)
{
printf("OK");
}
else
printf("ERRORE (%s) -- OK perche' c'e' il ping automatico", SSA_DecodificaUltimoErrore());
printf("\n");
//questo deve darmi errore perche' utente sloggato
printf("% 50s", "ApriModulo utente1....");
ret = SSA_ApriModulo("utente1", "prova1");
if(ret == 0)
{
printf("ERRORE -- OK perche' c'e' il ping automatico");
}
else
printf("OK (%s)", SSA_DecodificaUltimoErrore());
printf("\n");
ret = SSA_Logout("utente1", "PROVA");
ret = SSA_Logout("utente2", "PROVA");
printf("\n");
}
void generaLicenzaDaZero()
{
//genero il file ssax
system("SSAGetInfo.exe");
//genero il file moduli.txt
generaFileModuli();
//genero il file ssa
system("SSACreaLicenza");
}
void test(int loop, bool pause, int sleep)
{
int loopCount = 0;
while(loopCount<loop)
{
loopCount++;
printf("loop #%d\n", loopCount);
testNegativi();
if(pause)
system("pause");
testPositivi();
if(pause)
system("pause");
testMaxUteProdotto();
if(pause)
system("pause");
testMaxUteModulo();
if(loop==1)
testForceLogout();
if(sleep>0)
{
printf("Sleep: %d sec\n", sleep);
Sleep(sleep*1000);
}
}
}
void testPingTimeout()
{
int ret = 0;
//Login utente 1 (deve andare bene)
printf("% 50s", "Login 1....");
ret = SSA_Login("utente1", "PROVA");
if(ret == 0)
{
printf("OK (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("ERRORE");
printf("\n");
//Login utente 2 (deve andare bene)
printf("% 50s", "Login 2....");
ret = SSA_Login("utente2", "PROVA");
if(ret == 0)
{
printf("OK (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("ERRORE");
printf("\n");
//Apri modulo prova1 utente 1 (deve andare bene)
printf("% 50s", "ApriModulo utente1....");
ret = SSA_ApriModulo("utente1", "prova1");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
//Apri modulo prova1 utente 1 (deve andare bene ANCORA)
printf("% 50s", "ApriModulo utente1....");
ret = SSA_ApriModulo("utente1", "prova1");
ret = SSA_ApriModulo("utente1", "prova1");
ret = SSA_ApriModulo("utente1", "prova1");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
//Logout utente 1
printf("% 50s", "Logout utente1....");
ret = SSA_Logout("utente1", "PROVA");
ret = SSA_Logout("utente2", "PROVA");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
/*
//Apri modulo prova2 utente2 (deve andare bene)
printf("% 50s", "ApriModulo utente2....");
ret = SSA_ApriModulo("utente2", "prova2");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
while(true)
{
//Apri modulo prova1 utente2 (deve andare male, fino al timeout ping utente 1)
printf("% 50s", "ApriModulo utente2....(deve andare male, fino al timeout ping utente 1)");
ret = SSA_ApriModulo("utente2", "prova1");
if(ret != 0)
{
printf("ERRORE (%s)", SSA_DecodificaUltimoErrore());
}
else
printf("OK");
printf("\n");
Sleep(10000);
}
*/
}
void testPiva()
{
printf("TEST PARTITA IVA! \n");
int ret = 0;
//Login utente 1 (deve andare bene)
printf("%s\n", "Login Prodotto senza PIVA (deve andare bene)");
ret = SSA_Login("utente1", "PROVA");
if(ret == 0)
{
printf("OK (%d - %s)", ret, SSA_DecodificaUltimoErrore());
}
else
printf("ERRORE (%d - %s)", ret, SSA_DecodificaUltimoErrore());
printf("\n\n");
//Login utente 1 (deve andare male)
printf("%s\n", "Login prodotto con PIVA sbagliata P_IVA 999 (deve andare male)");
ret = SSA_Login1("utente1", "P_IVA", "999");
if(ret == 0)
{
printf("ERRORE (%d - %s)", ret, SSA_DecodificaUltimoErrore());
}
else
printf("OK (%d - %s)", ret, SSA_DecodificaUltimoErrore());
printf("\n\n");
//Login utente 1 (deve andare bene)
printf("%s\n", "Login prodotto con PIVA gista P_IVA 12399945 (deve andare bene)");
ret = SSA_Login1("utente2", "P_IVA", "12399945");
if(ret == 0)
{
printf("OK (%d - %s)", ret, SSA_DecodificaUltimoErrore());
}
else
printf("ERRORE (%d - %s)", ret, SSA_DecodificaUltimoErrore());
printf("\n\n");
//Logout utente 1
printf("%s\n", "Logout utente1....");
ret = SSA_Logout("utente1", "PROVA");
ret = SSA_Logout("utente2", "PROVA");
if(ret != 0)
{
printf("ERRORE (%d - %s)", ret, SSA_DecodificaUltimoErrore());
}
else
printf("OK (%d - %s)", ret, SSA_DecodificaUltimoErrore());
printf("\n\n");
//Verifica modulo (deve andare male)
printf("%s\n", "Verifica modulo con PIVA errata P_IVA 999 (deve andare male)");
ret = SSA_VerificaModulo1("P_IVA", "MP1", "999");
if(ret == 0)
{
printf("ERRORE (%d - %s)", ret, SSA_DecodificaUltimoErrore());
}
else
printf("OK (%d - %s)", ret, SSA_DecodificaUltimoErrore());
printf("\n\n");
//Verifica modulo (deve andare bene)
printf("%s\n", "Verifica modulo con PIVA giusta P_IVA 12399945 (deve andare bene)");
ret = SSA_VerificaModulo1("P_IVA", "MP1", "12399945");
if(ret == 0)
{
printf("OK (%d - %s)", ret, SSA_DecodificaUltimoErrore());
}
else
printf("ERRORE (%d - %s)", ret, SSA_DecodificaUltimoErrore());
printf("\n\n");
//Verifica modulo (deve andare male)
printf("%s\n", "Verifica modulo con PIVA errata P_IVA2 999 (deve andare male)");
ret = SSA_VerificaModulo1("P_IVA2", "MP2", "999");
if(ret == 0)
{
printf("ERRORE (%d - %s)", ret, SSA_DecodificaUltimoErrore());
}
else
printf("OK (%d - %s)", ret, SSA_DecodificaUltimoErrore());
printf("\n\n");
//Verifica modulo (deve andare bene)
printf("%s\n", "Verifica modulo con PIVA giusta P_IVA2 12399945 (deve andare bene)");
ret = SSA_VerificaModulo1("P_IVA2", "MP2", "12399945");
if(ret == 0)
{
printf("OK (%d - %s)", ret, SSA_DecodificaUltimoErrore());
}
else
printf("ERRORE (%d - %s)", ret, SSA_DecodificaUltimoErrore());
printf("\n\n");
//Verifica modulo (deve andare bene)
printf("%s\n", "Verifica modulo con PIVA giusta P_IVA2 44556689 (deve andare bene)");
ret = SSA_VerificaModulo1("P_IVA2", "MP2", "44556689");
if(ret == 0)
{
printf("OK (%d - %s)", ret, SSA_DecodificaUltimoErrore());
}
else
printf("ERRORE (%d - %s)", ret, SSA_DecodificaUltimoErrore());
printf("\n\n");
//Verifica modulo (deve andare bene)
printf("%s\n", "Verifica modulo con PIVA giusta P_IVA2 987654321 (deve andare bene)");
ret = SSA_VerificaModulo1("P_IVA2", "MP2", "987654321");
if(ret == 0)
{
printf("OK (%d - %s)", ret, SSA_DecodificaUltimoErrore());
}
else
printf("ERRORE (%d - %s)", ret, SSA_DecodificaUltimoErrore());
printf("\n\n");
}
int main(int argc, char* argv[])
{
bool pause = false;
bool generaLicenza = false;
int loop = 1;
int sleep=0;
for(int i=1; i<argc; i++)
{
if(strcmp(argv[i], "-pause")==0)
pause=true;
else if(strcmp(argv[i], "-generalicenza")==0)
generaLicenza=true;
else if(strcmp(argv[i], "-loop")==0)
loop=atoi(argv[++i]);
else if(strcmp(argv[i], "-sleep")==0)
sleep=atoi(argv[++i]);
}
if(generaLicenza)
generaLicenzaDaZero();
//test(loop, pause, sleep);
//testPingTimeout();
testPiva();
if(pause)
system("pause");
}

View File

@ -0,0 +1,400 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="TestDll"
ProjectGUID="{BBB86999-65EA-4F83-A1FD-917B0A38381A}"
RootNamespace="TestDll"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\SSADll"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\SSADll"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\SSADll"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\SSADll"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="0"
UsePrecompiledHeader="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="1"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\stdafx.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
UsePrecompiledHeader="1"
/>
</FileConfiguration>
</File>
<File
RelativePath=".\TestDll.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\stdafx.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
<File
RelativePath=".\ReadMe.txt"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Template|Win32">
<Configuration>Template</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v141</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup></ItemDefinitionGroup>
<ItemGroup></ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

View File

@ -0,0 +1,5 @@
// stdafx.cpp : source file that includes just the standard includes
// TestDll.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"

View File

@ -0,0 +1,15 @@
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
#endif
#include <stdio.h>
#include <tchar.h>

Binary file not shown.

View File

@ -0,0 +1,139 @@
// 3way.cpp - modifed by Wei Dai from Joan Daemen's 3way.c
// The original code and all modifications are in the public domain.
#include "pch.h"
#include "3way.h"
#include "misc.h"
NAMESPACE_BEGIN(CryptoPP)
void ThreeWay_TestInstantiations()
{
ThreeWay::Encryption x1;
ThreeWay::Decryption x2;
}
static const word32 START_E = 0x0b0b; // round constant of first encryption round
static const word32 START_D = 0xb1b1; // round constant of first decryption round
static const word32 RC_MODULUS = 0x11011;
static inline word32 reverseBits(word32 a)
{
a = ((a & 0xAAAAAAAA) >> 1) | ((a & 0x55555555) << 1);
a = ((a & 0xCCCCCCCC) >> 2) | ((a & 0x33333333) << 2);
return ((a & 0xF0F0F0F0) >> 4) | ((a & 0x0F0F0F0F) << 4);
}
#define mu(a0, a1, a2) \
{ \
a1 = reverseBits(a1); \
word32 t = reverseBits(a0); \
a0 = reverseBits(a2); \
a2 = t; \
}
#define pi_gamma_pi(a0, a1, a2) \
{ \
word32 b0, b2; \
b2 = rotlFixed(a2, 1U); \
b0 = rotlFixed(a0, 22U); \
a0 = rotlFixed(b0 ^ (a1|(~b2)), 1U); \
a2 = rotlFixed(b2 ^ (b0|(~a1)), 22U);\
a1 ^= (b2|(~b0)); \
}
// thanks to Paulo Barreto for this optimized theta()
#define theta(a0, a1, a2) \
{ \
word32 b0, b1, c; \
c = a0 ^ a1 ^ a2; \
c = rotlFixed(c, 16U) ^ rotlFixed(c, 8U); \
b0 = (a0 << 24) ^ (a2 >> 8) ^ (a1 << 8) ^ (a0 >> 24); \
b1 = (a1 << 24) ^ (a0 >> 8) ^ (a2 << 8) ^ (a1 >> 24); \
a0 ^= c ^ b0; \
a1 ^= c ^ b1; \
a2 ^= c ^ (b0 >> 16) ^ (b1 << 16); \
}
#define rho(a0, a1, a2) \
{ \
theta(a0, a1, a2); \
pi_gamma_pi(a0, a1, a2); \
}
void ThreeWay::Base::UncheckedSetKey(const byte *uk, unsigned int length, const NameValuePairs &params)
{
AssertValidKeyLength(length);
m_rounds = GetRoundsAndThrowIfInvalid(params, this);
for (unsigned int i=0; i<3; i++)
m_k[i] = (word32)uk[4*i+3] | ((word32)uk[4*i+2]<<8) | ((word32)uk[4*i+1]<<16) | ((word32)uk[4*i]<<24);
if (!IsForwardTransformation())
{
theta(m_k[0], m_k[1], m_k[2]);
mu(m_k[0], m_k[1], m_k[2]);
m_k[0] = ByteReverse(m_k[0]);
m_k[1] = ByteReverse(m_k[1]);
m_k[2] = ByteReverse(m_k[2]);
}
}
void ThreeWay::Enc::ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const
{
typedef BlockGetAndPut<word32, BigEndian> Block;
word32 a0, a1, a2;
Block::Get(inBlock)(a0)(a1)(a2);
word32 rc = START_E;
for(unsigned i=0; i<m_rounds; i++)
{
a0 ^= m_k[0] ^ (rc<<16);
a1 ^= m_k[1];
a2 ^= m_k[2] ^ rc;
rho(a0, a1, a2);
rc <<= 1;
if (rc&0x10000) rc ^= 0x11011;
}
a0 ^= m_k[0] ^ (rc<<16);
a1 ^= m_k[1];
a2 ^= m_k[2] ^ rc;
theta(a0, a1, a2);
Block::Put(xorBlock, outBlock)(a0)(a1)(a2);
}
void ThreeWay::Dec::ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const
{
typedef BlockGetAndPut<word32, LittleEndian> Block;
word32 a0, a1, a2;
Block::Get(inBlock)(a0)(a1)(a2);
word32 rc = START_D;
mu(a0, a1, a2);
for(unsigned i=0; i<m_rounds; i++)
{
a0 ^= m_k[0] ^ (rc<<16);
a1 ^= m_k[1];
a2 ^= m_k[2] ^ rc;
rho(a0, a1, a2);
rc <<= 1;
if (rc&0x10000) rc ^= 0x11011;
}
a0 ^= m_k[0] ^ (rc<<16);
a1 ^= m_k[1];
a2 ^= m_k[2] ^ rc;
theta(a0, a1, a2);
mu(a0, a1, a2);
Block::Put(xorBlock, outBlock)(a0)(a1)(a2);
}
NAMESPACE_END

View File

@ -0,0 +1,53 @@
#ifndef CRYPTOPP_THREEWAY_H
#define CRYPTOPP_THREEWAY_H
/** \file
*/
#include "seckey.h"
#include "secblock.h"
NAMESPACE_BEGIN(CryptoPP)
//! _
struct ThreeWay_Info : public FixedBlockSize<12>, public FixedKeyLength<12>, public VariableRounds<11>
{
static const char *StaticAlgorithmName() {return "3-Way";}
};
/// <a href="http://www.weidai.com/scan-mirror/cs.html#3-Way">3-Way</a>
class ThreeWay : public ThreeWay_Info, public BlockCipherDocumentation
{
class CRYPTOPP_NO_VTABLE Base : public BlockCipherImpl<ThreeWay_Info>
{
public:
void UncheckedSetKey(const byte *key, unsigned int length, const NameValuePairs &params);
protected:
unsigned int m_rounds;
FixedSizeSecBlock<word32, 3> m_k;
};
class CRYPTOPP_NO_VTABLE Enc : public Base
{
public:
void ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const;
};
class CRYPTOPP_NO_VTABLE Dec : public Base
{
public:
void ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const;
};
public:
typedef BlockCipherFinal<ENCRYPTION, Enc> Encryption;
typedef BlockCipherFinal<DECRYPTION, Dec> Decryption;
};
typedef ThreeWay::Encryption ThreeWayEncryption;
typedef ThreeWay::Decryption ThreeWayDecryption;
NAMESPACE_END
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,194 @@
CXXFLAGS = -DNDEBUG -g -O2
#CXXFLAGS = -g
# -fPIC is supported. Please report any breakage of -fPIC as a bug.
# CXXFLAGS += -fPIC
# the following options reduce code size, but breaks link or makes link very slow on some systems
# CXXFLAGS += -ffunction-sections -fdata-sections
# LDFLAGS += -Wl,--gc-sections
ARFLAGS = -cr # ar needs the dash on OpenBSD
RANLIB = ranlib
CP = cp
MKDIR = mkdir
EGREP = egrep
UNAME = $(shell uname)
ISX86 = $(shell uname -m | $(EGREP) -c "i.86|x86|i86|amd64")
# Default prefix for make install
ifeq ($(PREFIX),)
PREFIX = /usr
endif
ifeq ($(CXX),gcc) # for some reason CXX is gcc on cygwin 1.1.4
CXX = g++
endif
ifeq ($(ISX86),1)
GCC42_OR_LATER = $(shell $(CXX) -v 2>&1 | $(EGREP) -c "^gcc version (4.[2-9]|[5-9])")
INTEL_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "\(ICC\)")
ICC111_OR_LATER = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "\(ICC\) ([2-9][0-9]|1[2-9]|11\.[1-9])")
IS_SUN_CC = $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: Sun")
GAS210_OR_LATER = $(shell echo "" | $(AS) -v 2>&1 | $(EGREP) -c "GNU assembler version (2\.[1-9][0-9]|[3-9])")
GAS217_OR_LATER = $(shell echo "" | $(AS) -v 2>&1 | $(EGREP) -c "GNU assembler version (2\.1[7-9]|2\.[2-9]|[3-9])")
GAS219_OR_LATER = $(shell echo "" | $(AS) -v 2>&1 | $(EGREP) -c "GNU assembler version (2\.19|2\.[2-9]|[3-9])")
ISMINGW = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "mingw")
ifneq ($(GCC42_OR_LATER),0)
ifeq ($(UNAME),Darwin)
CXXFLAGS += -arch x86_64 -arch i386
else
CXXFLAGS += -march=native
endif
endif
ifneq ($(INTEL_COMPILER),0)
CXXFLAGS += -wd68 -wd186 -wd279 -wd327
ifeq ($(ICC111_OR_LATER),0)
# "internal error: backend signals" occurs on some x86 inline assembly with ICC 9 and some x64 inline assembly with ICC 11.0
# if you want to use Crypto++'s assembly code with ICC, try enabling it on individual files
CXXFLAGS += -DCRYPTOPP_DISABLE_ASM
endif
endif
ifeq ($(GAS210_OR_LATER),0) # .intel_syntax wasn't supported until GNU assembler 2.10
CXXFLAGS += -DCRYPTOPP_DISABLE_ASM
else
ifeq ($(GAS217_OR_LATER),0)
CXXFLAGS += -DCRYPTOPP_DISABLE_SSSE3
else
ifeq ($(GAS219_OR_LATER),0)
CXXFLAGS += -DCRYPTOPP_DISABLE_AESNI
endif
endif
ifeq ($(UNAME),SunOS)
CXXFLAGS += -Wa,--divide # allow use of "/" operator
endif
endif
ifeq ($(ISMINGW),1)
LDLIBS += -lws2_32
endif
endif # ISX86
ifeq ($(UNAME),) # for DJGPP, where uname doesn't exist
CXXFLAGS += -mbnu210
else
CXXFLAGS += -pipe
endif
ifeq ($(UNAME),Linux)
LDFLAGS += -pthread
ifneq ($(shell uname -i | $(EGREP) -c "(_64|d64)"),0)
M32OR64 = -m64
endif
endif
ifeq ($(UNAME),Darwin)
AR = libtool
ARFLAGS = -static -o
CXX = c++
IS_GCC2 = $(shell $(CXX) -v 2>&1 | $(EGREP) -c gcc-932)
ifeq ($(IS_GCC2),1)
CXXFLAGS += -fno-coalesce-templates -fno-coalesce-static-vtables
LDLIBS += -lstdc++
LDFLAGS += -flat_namespace -undefined suppress -m
endif
endif
ifeq ($(UNAME),SunOS)
LDLIBS += -lnsl -lsocket
M32OR64 = -m$(shell isainfo -b)
endif
ifneq ($(IS_SUN_CC),0) # override flags for CC Sun C++ compiler
CXXFLAGS = -DNDEBUG -O -g0 -native -template=no%extdef $(M32OR64)
LDFLAGS =
AR = $(CXX)
ARFLAGS = -xar -o
RANLIB = true
SUN_CC10_BUGGY = $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: Sun .* 5\.10 .* (2009|2010/0[1-4])")
ifneq ($(SUN_CC10_BUGGY),0)
# -DCRYPTOPP_INCLUDE_VECTOR_CC is needed for Sun Studio 12u1 Sun C++ 5.10 SunOS_i386 128229-02 2009/09/21 and was fixed in May 2010
# remove it if you get "already had a body defined" errors in vector.cc
CXXFLAGS += -DCRYPTOPP_INCLUDE_VECTOR_CC
endif
endif
SRCS = $(wildcard *.cpp)
ifeq ($(SRCS),) # workaround wildcard function bug in GNU Make 3.77
SRCS = $(shell echo *.cpp)
endif
OBJS = $(SRCS:.cpp=.o)
# test.o needs to be after bench.o for cygwin 1.1.4 (possible ld bug?)
TESTOBJS = bench.o bench2.o test.o validat1.o validat2.o validat3.o adhoc.o datatest.o regtest.o fipsalgt.o dlltest.o
LIBOBJS = $(filter-out $(TESTOBJS),$(OBJS))
DLLSRCS = algebra.cpp algparam.cpp asn.cpp basecode.cpp cbcmac.cpp channels.cpp cryptlib.cpp des.cpp dessp.cpp dh.cpp dll.cpp dsa.cpp ec2n.cpp eccrypto.cpp ecp.cpp eprecomp.cpp files.cpp filters.cpp fips140.cpp fipstest.cpp gf2n.cpp gfpcrypt.cpp hex.cpp hmac.cpp integer.cpp iterhash.cpp misc.cpp modes.cpp modexppc.cpp mqueue.cpp nbtheory.cpp oaep.cpp osrng.cpp pch.cpp pkcspad.cpp pubkey.cpp queue.cpp randpool.cpp rdtables.cpp rijndael.cpp rng.cpp rsa.cpp sha.cpp simple.cpp skipjack.cpp strciphr.cpp trdlocal.cpp
DLLOBJS = $(DLLSRCS:.cpp=.export.o)
LIBIMPORTOBJS = $(LIBOBJS:.o=.import.o)
TESTIMPORTOBJS = $(TESTOBJS:.o=.import.o)
DLLTESTOBJS = dlltest.dllonly.o
all: cryptest.exe
test: cryptest.exe
./cryptest.exe v
clean:
$(RM) cryptest.exe libcryptopp.a $(LIBOBJS) $(TESTOBJS) cryptopp.dll libcryptopp.dll.a libcryptopp.import.a cryptest.import.exe dlltest.exe $(DLLOBJS) $(LIBIMPORTOBJS) $(TESTIMPORTOBJS) $(DLLTESTOBJS)
install:
$(MKDIR) -p $(PREFIX)/include/cryptopp $(PREFIX)/lib $(PREFIX)/bin
$(CP) *.h $(PREFIX)/include/cryptopp
$(CP) *.a $(PREFIX)/lib
$(CP) *.so $(PREFIX)/lib
$(CP) *.exe $(PREFIX)/bin
libcryptopp.a: $(LIBOBJS)
$(AR) $(ARFLAGS) $@ $(LIBOBJS)
$(RANLIB) $@
libcryptopp.so: $(LIBOBJS)
$(CXX) -shared -o $@ $(LIBOBJS)
cryptest.exe: libcryptopp.a $(TESTOBJS)
$(CXX) -o $@ $(CXXFLAGS) $(TESTOBJS) -L. -lcryptopp $(LDFLAGS) $(LDLIBS)
nolib: $(OBJS) # makes it faster to test changes
$(CXX) -o ct $(CXXFLAGS) $(OBJS) $(LDFLAGS) $(LDLIBS)
dll: cryptest.import.exe dlltest.exe
cryptopp.dll: $(DLLOBJS)
$(CXX) -shared -o $@ $(CXXFLAGS) $(DLLOBJS) $(LDFLAGS) $(LDLIBS) -Wl,--out-implib=libcryptopp.dll.a
libcryptopp.import.a: $(LIBIMPORTOBJS)
$(AR) $(ARFLAGS) $@ $(LIBIMPORTOBJS)
$(RANLIB) $@
cryptest.import.exe: cryptopp.dll libcryptopp.import.a $(TESTIMPORTOBJS)
$(CXX) -o $@ $(CXXFLAGS) $(TESTIMPORTOBJS) -L. -lcryptopp.dll -lcryptopp.import $(LDFLAGS) $(LDLIBS)
dlltest.exe: cryptopp.dll $(DLLTESTOBJS)
$(CXX) -o $@ $(CXXFLAGS) $(DLLTESTOBJS) -L. -lcryptopp.dll $(LDFLAGS) $(LDLIBS)
adhoc.cpp: adhoc.cpp.proto
ifeq ($(wildcard adhoc.cpp),)
cp adhoc.cpp.proto adhoc.cpp
else
touch adhoc.cpp
endif
%.dllonly.o : %.cpp
$(CXX) $(CXXFLAGS) -DCRYPTOPP_DLL_ONLY -c $< -o $@
%.import.o : %.cpp
$(CXX) $(CXXFLAGS) -DCRYPTOPP_IMPORTS -c $< -o $@
%.export.o : %.cpp
$(CXX) $(CXXFLAGS) -DCRYPTOPP_EXPORTS -c $< -o $@
%.o : %.cpp
$(CXX) $(CXXFLAGS) -c $<

View File

@ -0,0 +1,62 @@
Compilation Copyright (c) 1995-2010 by Wei Dai. All rights reserved.
This copyright applies only to this software distribution package
as a compilation, and does not imply a copyright on any particular
file in the package.
All individual files in this compilation are placed in the public domain by
Wei Dai and other contributors.
I would like to thank the following authors for placing their works into
the public domain:
Joan Daemen - 3way.cpp
Leonard Janke - cast.cpp, seal.cpp
Steve Reid - cast.cpp
Phil Karn - des.cpp
Andrew M. Kuchling - md2.cpp, md4.cpp
Colin Plumb - md5.cpp
Seal Woods - rc6.cpp
Chris Morgan - rijndael.cpp
Paulo Baretto - rijndael.cpp, skipjack.cpp, square.cpp
Richard De Moliner - safer.cpp
Matthew Skala - twofish.cpp
Kevin Springle - camellia.cpp, shacal2.cpp, ttmac.cpp, whrlpool.cpp, ripemd.cpp
Permission to use, copy, modify, and distribute this compilation for
any purpose, including commercial applications, is hereby granted
without fee, subject to the following restrictions:
1. Any copy or modification of this compilation in any form, except
in object code form as part of an application software, must include
the above copyright notice and this license.
2. Users of this software agree that any modification or extension
they provide to Wei Dai will be considered public domain and not
copyrighted unless it includes an explicit copyright notice.
3. Wei Dai makes no warranty or representation that the operation of the
software in this compilation will be error-free, and Wei Dai is under no
obligation to provide any services, by way of maintenance, update, or
otherwise. THE SOFTWARE AND ANY DOCUMENTATION ARE PROVIDED "AS IS"
WITHOUT EXPRESS OR IMPLIED WARRANTY INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. IN NO EVENT WILL WEI DAI OR ANY OTHER CONTRIBUTOR BE LIABLE FOR
DIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
4. Users will not use Wei Dai or any other contributor's name in any
publicity or advertising, without prior written consent in each case.
5. Export of this software from the United States may require a
specific license from the United States Government. It is the
responsibility of any person or organization contemplating export
to obtain such a license before exporting.
6. Certain parts of this software may be protected by patents. It
is the users' responsibility to obtain the appropriate
licenses before using those parts.
If this compilation is used in object code form in an application
software, acknowledgement of the author is not required but would be
appreciated. The contribution of any useful modifications or extensions
to Wei Dai is not required but would also be appreciated.

View File

@ -0,0 +1,444 @@
Crypto++: a C++ Class Library of Cryptographic Schemes
Version 5.6.1 (8/9/2010, SVN r520)
Crypto++ Library is a free C++ class library of cryptographic schemes.
Currently the library contains the following algorithms:
algorithm type name
authenticated encryption schemes GCM, CCM, EAX
high speed stream ciphers Panama, Sosemanuk, Salsa20, XSalsa20
AES and AES candidates AES (Rijndael), RC6, MARS, Twofish, Serpent,
CAST-256
IDEA, Triple-DES (DES-EDE2 and DES-EDE3),
other block ciphers Camellia, SEED, RC5, Blowfish, TEA, XTEA,
Skipjack, SHACAL-2
block cipher modes of operation ECB, CBC, CBC ciphertext stealing (CTS),
CFB, OFB, counter mode (CTR)
message authentication codes VMAC, HMAC, GMAC, CMAC, CBC-MAC, DMAC,
Two-Track-MAC
SHA-1, SHA-2 (SHA-224, SHA-256, SHA-384, and
hash functions SHA-512), Tiger, WHIRLPOOL, RIPEMD-128,
RIPEMD-256, RIPEMD-160, RIPEMD-320
RSA, DSA, ElGamal, Nyberg-Rueppel (NR),
public-key cryptography Rabin-Williams (RW), LUC, LUCELG,
DLIES (variants of DHAES), ESIGN
padding schemes for public-key PKCS#1 v2.0, OAEP, PSS, PSSR, IEEE P1363
systems EMSA2 and EMSA5
Diffie-Hellman (DH), Unified Diffie-Hellman
key agreement schemes (DH2), Menezes-Qu-Vanstone (MQV), LUCDIF,
XTR-DH
elliptic curve cryptography ECDSA, ECNR, ECIES, ECDH, ECMQV
insecure or obsolescent MD2, MD4, MD5, Panama Hash, DES, ARC4, SEAL
algorithms retained for backwards 3.0, WAKE, WAKE-OFB, DESX (DES-XEX3), RC2,
compatibility and historical SAFER, 3-WAY, GOST, SHARK, CAST-128, Square
value
Other features include:
* pseudo random number generators (PRNG): ANSI X9.17 appendix C, RandomPool
* password based key derivation functions: PBKDF1 and PBKDF2 from PKCS #5,
PBKDF from PKCS #12 appendix B
* Shamir's secret sharing scheme and Rabin's information dispersal algorithm
(IDA)
* fast multi-precision integer (bignum) and polynomial operations
* finite field arithmetics, including GF(p) and GF(2^n)
* prime number generation and verification
* useful non-cryptographic algorithms
+ DEFLATE (RFC 1951) compression/decompression with gzip (RFC 1952) and
zlib (RFC 1950) format support
+ hex, base-32, and base-64 coding/decoding
+ 32-bit CRC and Adler32 checksum
* class wrappers for these operating system features (optional):
+ high resolution timers on Windows, Unix, and Mac OS
+ Berkeley and Windows style sockets
+ Windows named pipes
+ /dev/random, /dev/urandom, /dev/srandom
+ Microsoft's CryptGenRandom on Windows
* A high level interface for most of the above, using a filter/pipeline
metaphor
* benchmarks and validation testing
* x86, x86-64 (x64), MMX, and SSE2 assembly code for the most commonly used
algorithms, with run-time CPU feature detection and code selection
* some versions are available in FIPS 140-2 validated form
You are welcome to use it for any purpose without paying me, but see
License.txt for the fine print.
The following compilers are supported for this release. Please visit
http://www.cryptopp.com the most up to date build instructions and porting notes.
* MSVC 6.0 - 2010
* GCC 3.3 - 4.5
* C++Builder 2010
* Intel C++ Compiler 9 - 11.1
* Sun Studio 12u1, Express 11/08, Express 06/10
*** Important Usage Notes ***
1. If a constructor for A takes a pointer to an object B (except primitive
types such as int and char), then A owns B and will delete B at A's
destruction. If a constructor for A takes a reference to an object B,
then the caller retains ownership of B and should not destroy it until
A no longer needs it.
2. Crypto++ is thread safe at the class level. This means you can use
Crypto++ safely in a multithreaded application, but you must provide
synchronization when multiple threads access a common Crypto++ object.
*** MSVC-Specific Information ***
On Windows, Crypto++ can be compiled into 3 forms: a static library
including all algorithms, a DLL with only FIPS Approved algorithms, and
a static library with only algorithms not in the DLL.
(FIPS Approved means Approved according to the FIPS 140-2 standard.)
The DLL may be used by itself, or it may be used together with the second
form of the static library. MSVC project files are included to build
all three forms, and sample applications using each of the three forms
are also included.
To compile Crypto++ with MSVC, open the "cryptest.dsw" (for MSVC 6 and MSVC .NET
2003) or "cryptest.sln" (for MSVC 2005 - 2010) workspace file and build one or
more of the following projects:
cryptopp - This builds the DLL. Please note that if you wish to use Crypto++
as a FIPS validated module, you must use a pre-built DLL that has undergone
the FIPS validation process instead of building your own.
dlltest - This builds a sample application that only uses the DLL.
cryptest Non-DLL-Import Configuration - This builds the full static library
along with a full test driver.
cryptest DLL-Import Configuration - This builds a static library containing
only algorithms not in the DLL, along with a full test driver that uses
both the DLL and the static library.
To use the Crypto++ DLL in your application, #include "dll.h" before including
any other Crypto++ header files, and place the DLL in the same directory as
your .exe file. dll.h includes the line #pragma comment(lib, "cryptopp")
so you don't have to explicitly list the import library in your project
settings. To use a static library form of Crypto++, make the "cryptlib"
project a dependency of your application project, or specify it as
an additional library to link with in your project settings.
In either case you should check the compiler options to
make sure that the library and your application are using the same C++
run-time libraries and calling conventions.
*** DLL Memory Management ***
Because it's possible for the Crypto++ DLL to delete objects allocated
by the calling application, they must use the same C++ memory heap. Three
methods are provided to achieve this.
1. The calling application can tell Crypto++ what heap to use. This method
is required when the calling application uses a non-standard heap.
2. Crypto++ can tell the calling application what heap to use. This method
is required when the calling application uses a statically linked C++ Run
Time Library. (Method 1 does not work in this case because the Crypto++ DLL
is initialized before the calling application's heap is initialized.)
3. Crypto++ can automatically use the heap provided by the calling application's
dynamically linked C++ Run Time Library. The calling application must
make sure that the dynamically linked C++ Run Time Library is initialized
before Crypto++ is loaded. (At this time it is not clear if it is possible
to control the order in which DLLs are initialized on Windows 9x machines,
so it might be best to avoid using this method.)
When Crypto++ attaches to a new process, it searches all modules loaded
into the process space for exported functions "GetNewAndDeleteForCryptoPP"
and "SetNewAndDeleteFromCryptoPP". If one of these functions is found,
Crypto++ uses methods 1 or 2, respectively, by calling the function.
Otherwise, method 3 is used.
*** GCC-Specific Information ***
A makefile is included for you to compile Crypto++ with GCC. Make sure
you are using GNU Make and GNU ld. The make process will produce two files,
libcryptopp.a and cryptest.exe. Run "cryptest.exe v" for the validation
suite.
*** Documentation and Support ***
Crypto++ is documented through inline comments in header files, which are
processed through Doxygen to produce an HTML reference manual. You can find
a link to the manual from http://www.cryptopp.com. Also at that site is
the Crypto++ FAQ, which you should browse through before attempting to
use this library, because it will likely answer many of questions that
may come up.
If you run into any problems, please try the Crypto++ mailing list.
The subscription information and the list archive are available on
http://www.cryptopp.com. You can also email me directly by visiting
http://www.weidai.com, but you will probably get a faster response through
the mailing list.
*** History ***
1.0 - First public release. Withdrawn at the request of RSA DSI.
- included Blowfish, BBS, DES, DH, Diamond, DSA, ElGamal, IDEA,
MD5, RC4, RC5, RSA, SHA, WAKE, secret sharing, DEFLATE compression
- had a serious bug in the RSA key generation code.
1.1 - Removed RSA, RC4, RC5
- Disabled calls to RSAREF's non-public functions
- Minor bugs fixed
2.0 - a completely new, faster multiprecision integer class
- added MD5-MAC, HAVAL, 3-WAY, TEA, SAFER, LUC, Rabin, BlumGoldwasser,
elliptic curve algorithms
- added the Lucas strong probable primality test
- ElGamal encryption and signature schemes modified to avoid weaknesses
- Diamond changed to Diamond2 because of key schedule weakness
- fixed bug in WAKE key setup
- SHS class renamed to SHA
- lots of miscellaneous optimizations
2.1 - added Tiger, HMAC, GOST, RIPE-MD160, LUCELG, LUCDIF, XOR-MAC,
OAEP, PSSR, SHARK
- added precomputation to DH, ElGamal, DSA, and elliptic curve algorithms
- added back RC5 and a new RSA
- optimizations in elliptic curves over GF(p)
- changed Rabin to use OAEP and PSSR
- changed many classes to allow copy constructors to work correctly
- improved exception generation and handling
2.2 - added SEAL, CAST-128, Square
- fixed bug in HAVAL (padding problem)
- fixed bug in triple-DES (decryption order was reversed)
- fixed bug in RC5 (couldn't handle key length not a multiple of 4)
- changed HMAC to conform to RFC-2104 (which is not compatible
with the original HMAC)
- changed secret sharing and information dispersal to use GF(2^32)
instead of GF(65521)
- removed zero knowledge prover/verifier for graph isomorphism
- removed several utility classes in favor of the C++ standard library
2.3 - ported to EGCS
- fixed incomplete workaround of min/max conflict in MSVC
3.0 - placed all names into the "CryptoPP" namespace
- added MD2, RC2, RC6, MARS, RW, DH2, MQV, ECDHC, CBC-CTS
- added abstract base classes PK_SimpleKeyAgreementDomain and
PK_AuthenticatedKeyAgreementDomain
- changed DH and LUCDIF to implement the PK_SimpleKeyAgreementDomain
interface and to perform domain parameter and key validation
- changed interfaces of PK_Signer and PK_Verifier to sign and verify
messages instead of message digests
- changed OAEP to conform to PKCS#1 v2.0
- changed benchmark code to produce HTML tables as output
- changed PSSR to track IEEE P1363a
- renamed ElGamalSignature to NR and changed it to track IEEE P1363
- renamed ECKEP to ECMQVC and changed it to track IEEE P1363
- renamed several other classes for clarity
- removed support for calling RSAREF
- removed option to compile old SHA (SHA-0)
- removed option not to throw exceptions
3.1 - added ARC4, Rijndael, Twofish, Serpent, CBC-MAC, DMAC
- added interface for querying supported key lengths of symmetric ciphers
and MACs
- added sample code for RSA signature and verification
- changed CBC-CTS to be compatible with RFC 2040
- updated SEAL to version 3.0 of the cipher specification
- optimized multiprecision squaring and elliptic curves over GF(p)
- fixed bug in MARS key setup
- fixed bug with attaching objects to Deflator
3.2 - added DES-XEX3, ECDSA, DefaultEncryptorWithMAC
- renamed DES-EDE to DES-EDE2 and TripleDES to DES-EDE3
- optimized ARC4
- generalized DSA to allow keys longer than 1024 bits
- fixed bugs in GF2N and ModularArithmetic that can cause calculation errors
- fixed crashing bug in Inflator when given invalid inputs
- fixed endian bug in Serpent
- fixed padding bug in Tiger
4.0 - added Skipjack, CAST-256, Panama, SHA-2 (SHA-256, SHA-384, and SHA-512),
and XTR-DH
- added a faster variant of Rabin's Information Dispersal Algorithm (IDA)
- added class wrappers for these operating system features:
- high resolution timers on Windows, Unix, and MacOS
- Berkeley and Windows style sockets
- Windows named pipes
- /dev/random and /dev/urandom on Linux and FreeBSD
- Microsoft's CryptGenRandom on Windows
- added support for SEC 1 elliptic curve key format and compressed points
- added support for X.509 public key format (subjectPublicKeyInfo) for
RSA, DSA, and elliptic curve schemes
- added support for DER and OpenPGP signature format for DSA
- added support for ZLIB compressed data format (RFC 1950)
- changed elliptic curve encryption to use ECIES (as defined in SEC 1)
- changed MARS key schedule to reflect the latest specification
- changed BufferedTransformation interface to support multiple channels
and messages
- changed CAST and SHA-1 implementations to use public domain source code
- fixed bug in StringSource
- optmized multi-precision integer code for better performance
4.1 - added more support for the recommended elliptic curve parameters in SEC 2
- added Panama MAC, MARC4
- added IV stealing feature to CTS mode
- added support for PKCS #8 private key format for RSA, DSA, and elliptic
curve schemes
- changed Deflate, MD5, Rijndael, and Twofish to use public domain code
- fixed a bug with flushing compressed streams
- fixed a bug with decompressing stored blocks
- fixed a bug with EC point decompression using non-trinomial basis
- fixed a bug in NetworkSource::GeneralPump()
- fixed a performance issue with EC over GF(p) decryption
- fixed syntax to allow GCC to compile without -fpermissive
- relaxed some restrictions in the license
4.2 - added support for longer HMAC keys
- added MD4 (which is not secure so use for compatibility purposes only)
- added compatibility fixes/workarounds for STLport 4.5, GCC 3.0.2,
and MSVC 7.0
- changed MD2 to use public domain code
- fixed a bug with decompressing multiple messages with the same object
- fixed a bug in CBC-MAC with MACing multiple messages with the same object
- fixed a bug in RC5 and RC6 with zero-length keys
- fixed a bug in Adler32 where incorrect checksum may be generated
5.0 - added ESIGN, DLIES, WAKE-OFB, PBKDF1 and PBKDF2 from PKCS #5
- added key validation for encryption and signature public/private keys
- renamed StreamCipher interface to SymmetricCipher, which is now implemented
by both stream ciphers and block cipher modes including ECB and CBC
- added keying interfaces to support resetting of keys and IVs without
having to destroy and recreate objects
- changed filter interface to support non-blocking input/output
- changed SocketSource and SocketSink to use overlapped I/O on Microsoft Windows
- grouped related classes inside structs to help templates, for example
AESEncryption and AESDecryption are now AES::Encryption and AES::Decryption
- where possible, typedefs have been added to improve backwards
compatibility when the CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY macro is defined
- changed Serpent, HAVAL and IDEA to use public domain code
- implemented SSE2 optimizations for Integer operations
- fixed a bug in HMAC::TruncatedFinal()
- fixed SKIPJACK byte ordering following NIST clarification dated 5/9/02
5.01 - added known answer test for X9.17 RNG in FIPS 140 power-up self test
- submitted to NIST/CSE, but not publicly released
5.02 - changed EDC test to MAC integrity check using HMAC/SHA1
- improved performance of integrity check
- added blinding to defend against RSA timing attack
5.03 - created DLL version of Crypto++ for FIPS 140-2 validation
- fixed vulnerabilities in GetNextIV for CTR and OFB modes
5.0.4 - Removed DES, SHA-256, SHA-384, SHA-512 from DLL
5.1 - added PSS padding and changed PSSR to track IEEE P1363a draft standard
- added blinding for RSA and Rabin to defend against timing attacks
on decryption operations
- changed signing and decryption APIs to support the above
- changed WaitObjectContainer to allow waiting for more than 64
objects at a time on Win32 platforms
- fixed a bug in CBC and ECB modes with processing non-aligned data
- fixed standard conformance bugs in DLIES (DHAES mode) and RW/EMSA2
signature scheme (these fixes are not backwards compatible)
- fixed a number of compiler warnings, minor bugs, and portability problems
- removed Sapphire
5.2 - merged in changes for 5.01 - 5.0.4
- added support for using encoding parameters and key derivation parameters
with public key encryption (implemented by OAEP and DL/ECIES)
- added Camellia, SHACAL-2, Two-Track-MAC, Whirlpool, RIPEMD-320,
RIPEMD-128, RIPEMD-256, Base-32 coding, FIPS variant of CFB mode
- added ThreadUserTimer for timing thread CPU usage
- added option for password-based key derivation functions
to iterate until a mimimum elapsed thread CPU time is reached
- added option (on by default) for DEFLATE compression to detect
uncompressible files and process them more quickly
- improved compatibility and performance on 64-bit platforms,
including Alpha, IA-64, x86-64, PPC64, Sparc64, and MIPS64
- fixed ONE_AND_ZEROS_PADDING to use 0x80 instead 0x01 as padding.
- fixed encoding/decoding of PKCS #8 privateKeyInfo to properly
handle optional attributes
5.2.1 - fixed bug in the "dlltest" DLL testing program
- fixed compiling with STLport using VC .NET
- fixed compiling with -fPIC using GCC
- fixed compiling with -msse2 on systems without memalign()
- fixed inability to instantiate PanamaMAC
- fixed problems with inline documentation
5.2.2 - added SHA-224
- put SHA-256, SHA-384, SHA-512, RSASSA-PSS into DLL
5.2.3 - fixed issues with FIPS algorithm test vectors
- put RSASSA-ISO into DLL
5.3 - ported to MSVC 2005 with support for x86-64
- added defense against AES timing attacks, and more AES test vectors
- changed StaticAlgorithmName() of Rijndael to "AES", CTR to "CTR"
5.4 - added Salsa20
- updated Whirlpool to version 3.0
- ported to GCC 4.1, Sun C++ 5.8, and Borland C++Builder 2006
5.5 - added VMAC and Sosemanuk (with x86-64 and SSE2 assembly)
- improved speed of integer arithmetic, AES, SHA-512, Tiger, Salsa20,
Whirlpool, and PANAMA cipher using assembly (x86-64, MMX, SSE2)
- optimized Camellia and added defense against timing attacks
- updated benchmarks code to show cycles per byte and to time key/IV setup
- started using OpenMP for increased multi-core speed
- enabled GCC optimization flags by default in GNUmakefile
- added blinding and computational error checking for RW signing
- changed RandomPool, X917RNG, GetNextIV, DSA/NR/ECDSA/ECNR to reduce
the risk of reusing random numbers and IVs after virtual machine state
rollback
- changed default FIPS mode RNG from AutoSeededX917RNG<DES_EDE3> to
AutoSeededX917RNG<AES>
- fixed PANAMA cipher interface to accept 256-bit key and 256-bit IV
- moved MD2, MD4, MD5, PanamaHash, ARC4, WAKE_CFB into the namespace "Weak"
- removed HAVAL, MD5-MAC, XMAC
5.5.1 - fixed VMAC validation failure on 32-bit big-endian machines
5.5.2 - ported x64 assembly language code for AES, Salsa20, Sosemanuk, and Panama
to MSVC 2005 (using MASM since MSVC doesn't support inline assembly on x64)
- fixed Salsa20 initialization crash on non-SSE2 machines
- fixed Whirlpool crash on Pentium 2 machines
- fixed possible branch prediction analysis (BPA) vulnerability in
MontgomeryReduce(), which may affect security of RSA, RW, LUC
- fixed link error with MSVC 2003 when using "debug DLL" form of runtime library
- fixed crash in SSE2_Add on P4 machines when compiled with
MSVC 6.0 SP5 with Processor Pack
- ported to MSVC 2008, GCC 4.2, Sun CC 5.9, Intel C++ Compiler 10.0,
and Borland C++Builder 2007
5.6.0 - added AuthenticatedSymmetricCipher interface class and Filter wrappers
- added CCM, GCM (with SSE2 assembly), EAX, CMAC, XSalsa20, and SEED
- added support for variable length IVs
- added OIDs for Brainpool elliptic curve parameters
- improved AES and SHA-256 speed on x86 and x64
- changed BlockTransformation interface to no longer assume data alignment
- fixed incorrect VMAC computation on message lengths
that are >64 mod 128 (x86 assembly version is not affected)
- fixed compiler error in vmac.cpp on x86 with GCC -fPIC
- fixed run-time validation error on x86-64 with GCC 4.3.2 -O2
- fixed HashFilter bug when putMessage=true
- fixed AES-CTR data alignment bug that causes incorrect encryption on ARM
- removed WORD64_AVAILABLE; compiler support for 64-bit int is now required
- ported to GCC 4.3, C++Builder 2009, Sun CC 5.10, Intel C++ Compiler 11
5.6.1 - added support for AES-NI and CLMUL instruction sets in AES and GMAC/GCM
- removed WAKE-CFB
- fixed several bugs in the SHA-256 x86/x64 assembly code:
* incorrect hash on non-SSE2 x86 machines on non-aligned input
* incorrect hash on x86 machines when input crosses 0x80000000
* incorrect hash on x64 when compiled with GCC with optimizations enabled
- fixed bugs in AES x86 and x64 assembly causing crashes in some MSVC build configurations
- switched to a public domain implementation of MARS
- ported to MSVC 2010, GCC 4.5.1, Sun Studio 12u1, C++Builder 2010, Intel C++ Compiler 11.1
- renamed the MSVC DLL project to "cryptopp" for compatibility with MSVC 2010
Written by Wei Dai

View File

@ -0,0 +1,3 @@
0123456789abcdeffedcba9876543210 0123456789abcde7 7f1d0a77826b8aff
0123456789abcdeffedcba987654321089abcdef01234567 0123456789abcde7 de0b7c06ae5e0ed5
0123456789ABCDEF01010101010101011011121314151617 94DBE082549A14EF 9011121314151617

View File

@ -0,0 +1,5 @@
000000000000000000000000 000000010000000100000001 4059c76e83ae9dc4ad21ecf7
000000060000000500000004 000000030000000200000001 d2f05b5ed6144138cab920cd
def01234456789abbcdef012 234567899abcdef001234567 0aa55dbb9cdddb6d7cdb76b2
d2f05b5ed6144138cab920cd 4059c76e83ae9dc4ad21ecf7 478ea8716b13f17c15b155ed

View File

@ -0,0 +1,45 @@
0123456789ABCDEFFEDCBA9876543210 0123456789ABCDEFFEDCBA9876543210 67673138549669730857065648EABE43
80000000000000000000000000000000 00000000000000000000000000000000 6C227F749319A3AA7DA235A9BBA05A2C
00000000000000000000000000000001 00000000000000000000000000000000 41E0E6DC2DDEC65D8B8120E60977B82D
00000000000000000000000000000000 80000000000000000000000000000000 07923A39EB0A817D1C4D87BDB82D1F1C
00000000000000000000000000000000 00000000000000000000000000000001 F5574ACC3148DFCB9015200631024DF9
00000000000000000000000000000000 00000000000000000000000000000000 3D028025B156327C17F762C1F2CBCA71
01010101010101010101010101010101 01010101010101010101010101010101 637084CB1120D6F25DB618893040AA27
02020202020202020202020202020202 02020202020202020202020202020202 612834AAC9EF906BAEAA076E1C75179D
04040404040404040404040404040404 04040404040404040404040404040404 B24FAF8A579E4EFE986571FB2F68B5B4
08080808080808080808080808080808 08080808080808080808080808080808 3E5CAFBB70545AABB1109293A1C44C14
10101010101010101010101010101010 10101010101010101010101010101010 E1FA5FD3F40B766BBE3DF469AF41B420
20202020202020202020202020202020 20202020202020202020202020202020 7E724027BB2F591C63254D936FCC4B43
40404040404040404040404040404040 40404040404040404040404040404040 538ADCBE104A3483B3C2A3D8CE72FBD6
80808080808080808080808080808080 80808080808080808080808080808080 AA7627F70F6B54C217C3EF232D362459
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 25DD9EB9DD67FBC6E8431F56F4FBE651
0123456789ABCDEFFEDCBA98765432100011223344556677 0123456789ABCDEFFEDCBA9876543210 B4993401B3E996F84EE5CEE7D79B09B9
800000000000000000000000000000000000000000000000 00000000000000000000000000000000 1B6220D365C2176C1D41A5826520FCA1
000000000000000000000000000000000000000000000001 00000000000000000000000000000000 E37577F71E0E643C4D3F55219ABA1394
000000000000000000000000000000000000000000000000 80000000000000000000000000000000 3EB6CC5618EFC98455B5992050D474E7
000000000000000000000000000000000000000000000000 00000000000000000000000000000001 BA9AE89FDDCE4B51131E17C4D65CE587
000000000000000000000000000000000000000000000000 00000000000000000000000000000000 56E1E129CA5C02C7F9AC6AFDEF86ADC3
010101010101010101010101010101010101010101010101 01010101010101010101010101010101 8F764397C10BE84BA876CEEFA4225BFF
020202020202020202020202020202020202020202020202 02020202020202020202020202020202 60B00674BFD444D07B5A19851E6151CD
040404040404040404040404040404040404040404040404 04040404040404040404040404040404 81B26FF4F6B4377CC555873504B3A38B
080808080808080808080808080808080808080808080808 08080808080808080808080808080808 A2AA1C6693DC2B70D75C9B39B9B214D0
101010101010101010101010101010101010101010101010 10101010101010101010101010101010 A907BFDAEEF8C81D05855235E8D3BE08
202020202020202020202020202020202020202020202020 20202020202020202020202020202020 87F8EA30332036F17CEAC0097CE33BC1
404040404040404040404040404040404040404040404040 40404040404040404040404040404040 A2C32EA499E41A248565253BACC11E3B
808080808080808080808080808080808080808080808080 80808080808080808080808080808080 F602BA7F515B082983B8F7A27F92408F
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 3F8D5676F51CE23DC3BDB627F8B3883E
0123456789ABCDEFFEDCBA987654321000112233445566778899AABBCCDDEEFF 0123456789ABCDEFFEDCBA9876543210 9ACC237DFF16D76C20EF7C919E3A7509
8000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 2136FABDA091DFB5171B94B8EFBB5D08
0000000000000000000000000000000000000000000000000000000000000001 00000000000000000000000000000000 AFCD38B195E0A736304E89B9AE3019D3
0000000000000000000000000000000000000000000000000000000000000000 80000000000000000000000000000000 B0C6B88AEA518AB09E847248E91B1B9D
0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000001 9CDB269B5D293BC5DB9C55B057D9B591
0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000 396154111ADEFC500CF6E5C99038BC17
0101010101010101010101010101010101010101010101010101010101010101 01010101010101010101010101010101 438D0C2E7E86869B56EBA23B66086A01
0202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020202020202 D4F553BFA794F55EF3B7A578629F6DEA
0404040404040404040404040404040404040404040404040404040404040404 04040404040404040404040404040404 5E858730ABC9823A93CA4CAB67F0B423
0808080808080808080808080808080808080808080808080808080808080808 08080808080808080808080808080808 F9A9C1540AE1B314DBEDF9A49054DC9D
1010101010101010101010101010101010101010101010101010101010101010 10101010101010101010101010101010 6693FC130669F194F81E8D175194DDA2
2020202020202020202020202020202020202020202020202020202020202020 20202020202020202020202020202020 F3E1FDA6B9C8314799F4654C29F1C690
4040404040404040404040404040404040404040404040404040404040404040 40404040404040404040404040404040 4A30476F1141FBF303ED63FCD3CB0536
8080808080808080808080808080808080808080808080808080808080808080 80808080808080808080808080808080 0C765AA494E048FC8BB23139F2124CB6
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 4F05F28CA23EEAE205B67B1C95CD5280

View File

@ -0,0 +1,11 @@
01 23 45 67 12 34 56 78 23 45 67 89 34 56 78 9A
01 23 45 67 89 AB CD EF
23 8B 4F E5 84 7E 44 B2
01 23 45 67 12 34 56 78 23 45
01 23 45 67 89 AB CD EF
EB 6A 71 1A 2C 02 27 1B
01 23 45 67 12
01 23 45 67 89 AB CD EF
7A C8 16 D1 6E 9B 30 2E

View File

@ -0,0 +1,11 @@
2342bb9efa38542c0af75647f29f615d
00000000000000000000000000000000
c842a08972b43d20836c91d1b7530f6b
2342bb9efa38542cbed0ac83940ac298bac77a7717942863
00000000000000000000000000000000
1b386c0210dcadcbdd0e41aa08a7a7e8
2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604
00000000000000000000000000000000
4f6a2038286897b9c9870136553317fa

View File

@ -0,0 +1,171 @@
0101010101010101 95F8A5E5DD31D900 8000000000000000
0101010101010101 DD7F121CA5015619 4000000000000000
0101010101010101 2E8653104F3834EA 2000000000000000
0101010101010101 4BD388FF6CD81D4F 1000000000000000
0101010101010101 20B9E767B2FB1456 0800000000000000
0101010101010101 55579380D77138EF 0400000000000000
0101010101010101 6CC5DEFAAF04512F 0200000000000000
0101010101010101 0D9F279BA5D87260 0100000000000000
0101010101010101 D9031B0271BD5A0A 0080000000000000
0101010101010101 424250B37C3DD951 0040000000000000
0101010101010101 B8061B7ECD9A21E5 0020000000000000
0101010101010101 F15D0F286B65BD28 0010000000000000
0101010101010101 ADD0CC8D6E5DEBA1 0008000000000000
0101010101010101 E6D5F82752AD63D1 0004000000000000
0101010101010101 ECBFE3BD3F591A5E 0002000000000000
0101010101010101 F356834379D165CD 0001000000000000
0101010101010101 2B9F982F20037FA9 0000800000000000
0101010101010101 889DE068A16F0BE6 0000400000000000
0101010101010101 E19E275D846A1298 0000200000000000
0101010101010101 329A8ED523D71AEC 0000100000000000
0101010101010101 E7FCE22557D23C97 0000080000000000
0101010101010101 12A9F5817FF2D65D 0000040000000000
0101010101010101 A484C3AD38DC9C19 0000020000000000
0101010101010101 FBE00A8A1EF8AD72 0000010000000000
0101010101010101 750D079407521363 0000008000000000
0101010101010101 64FEED9C724C2FAF 0000004000000000
0101010101010101 F02B263B328E2B60 0000002000000000
0101010101010101 9D64555A9A10B852 0000001000000000
0101010101010101 D106FF0BED5255D7 0000000800000000
0101010101010101 E1652C6B138C64A5 0000000400000000
0101010101010101 E428581186EC8F46 0000000200000000
0101010101010101 AEB5F5EDE22D1A36 0000000100000000
0101010101010101 E943D7568AEC0C5C 0000000080000000
0101010101010101 DF98C8276F54B04B 0000000040000000
0101010101010101 B160E4680F6C696F 0000000020000000
0101010101010101 FA0752B07D9C4AB8 0000000010000000
0101010101010101 CA3A2B036DBC8502 0000000008000000
0101010101010101 5E0905517BB59BCF 0000000004000000
0101010101010101 814EEB3B91D90726 0000000002000000
0101010101010101 4D49DB1532919C9F 0000000001000000
0101010101010101 25EB5FC3F8CF0621 0000000000800000
0101010101010101 AB6A20C0620D1C6F 0000000000400000
0101010101010101 79E90DBC98F92CCA 0000000000200000
0101010101010101 866ECEDD8072BB0E 0000000000100000
0101010101010101 8B54536F2F3E64A8 0000000000080000
0101010101010101 EA51D3975595B86B 0000000000040000
0101010101010101 CAFFC6AC4542DE31 0000000000020000
0101010101010101 8DD45A2DDF90796C 0000000000010000
0101010101010101 1029D55E880EC2D0 0000000000008000
0101010101010101 5D86CB23639DBEA9 0000000000004000
0101010101010101 1D1CA853AE7C0C5F 0000000000002000
0101010101010101 CE332329248F3228 0000000000001000
0101010101010101 8405D1ABE24FB942 0000000000000800
0101010101010101 E643D78090CA4207 0000000000000400
0101010101010101 48221B9937748A23 0000000000000200
0101010101010101 DD7C0BBD61FAFD54 0000000000000100
0101010101010101 2FBC291A570DB5C4 0000000000000080
0101010101010101 E07C30D7E4E26E12 0000000000000040
0101010101010101 0953E2258E8E90A1 0000000000000020
0101010101010101 5B711BC4CEEBF2EE 0000000000000010
0101010101010101 CC083F1E6D9E85F6 0000000000000008
0101010101010101 D2FD8867D50D2DFE 0000000000000004
0101010101010101 06E7EA22CE92708F 0000000000000002
0101010101010101 166B40B44ABA4BD6 0000000000000001
8001010101010101 0000000000000000 95A8D72813DAA94D
4001010101010101 0000000000000000 0EEC1487DD8C26D5
2001010101010101 0000000000000000 7AD16FFB79C45926
1001010101010101 0000000000000000 D3746294CA6A6CF3
0801010101010101 0000000000000000 809F5F873C1FD761
0401010101010101 0000000000000000 C02FAFFEC989D1FC
0201010101010101 0000000000000000 4615AA1D33E72F10
0180010101010101 0000000000000000 2055123350C00858
0140010101010101 0000000000000000 DF3B99D6577397C8
0120010101010101 0000000000000000 31FE17369B5288C9
0110010101010101 0000000000000000 DFDD3CC64DAE1642
0108010101010101 0000000000000000 178C83CE2B399D94
0104010101010101 0000000000000000 50F636324A9B7F80
0102010101010101 0000000000000000 A8468EE3BC18F06D
0101800101010101 0000000000000000 A2DC9E92FD3CDE92
0101400101010101 0000000000000000 CAC09F797D031287
0101200101010101 0000000000000000 90BA680B22AEB525
0101100101010101 0000000000000000 CE7A24F350E280B6
0101080101010101 0000000000000000 882BFF0AA01A0B87
0101040101010101 0000000000000000 25610288924511C2
0101020101010101 0000000000000000 C71516C29C75D170
0101018001010101 0000000000000000 5199C29A52C9F059
0101014001010101 0000000000000000 C22F0A294A71F29F
0101012001010101 0000000000000000 EE371483714C02EA
0101011001010101 0000000000000000 A81FBD448F9E522F
0101010801010101 0000000000000000 4F644C92E192DFED
0101010401010101 0000000000000000 1AFA9A66A6DF92AE
0101010201010101 0000000000000000 B3C1CC715CB879D8
0101010180010101 0000000000000000 19D032E64AB0BD8B
0101010140010101 0000000000000000 3CFAA7A7DC8720DC
0101010120010101 0000000000000000 B7265F7F447AC6F3
0101010110010101 0000000000000000 9DB73B3C0D163F54
0101010108010101 0000000000000000 8181B65BABF4A975
0101010104010101 0000000000000000 93C9B64042EAA240
0101010102010101 0000000000000000 5570530829705592
0101010101800101 0000000000000000 8638809E878787A0
0101010101400101 0000000000000000 41B9A79AF79AC208
0101010101200101 0000000000000000 7A9BE42F2009A892
0101010101100101 0000000000000000 29038D56BA6D2745
0101010101080101 0000000000000000 5495C6ABF1E5DF51
0101010101040101 0000000000000000 AE13DBD561488933
0101010101020101 0000000000000000 024D1FFA8904E389
0101010101018001 0000000000000000 D1399712F99BF02E
0101010101014001 0000000000000000 14C1D7C1CFFEC79E
0101010101012001 0000000000000000 1DE5279DAE3BED6F
0101010101011001 0000000000000000 E941A33F85501303
0101010101010801 0000000000000000 DA99DBBC9A03F379
0101010101010401 0000000000000000 B7FC92F91D8E92E9
0101010101010201 0000000000000000 AE8E5CAA3CA04E85
0101010101010180 0000000000000000 9CC62DF43B6EED74
0101010101010140 0000000000000000 D863DBB5C59A91A0
0101010101010120 0000000000000000 A1AB2190545B91D7
0101010101010110 0000000000000000 0875041E64C570F7
0101010101010108 0000000000000000 5A594528BEBEF1CC
0101010101010104 0000000000000000 FCDB3291DE21F0C0
0101010101010102 0000000000000000 869EFD7F9F265A09
1046913489980131 0000000000000000 88D55E54F54C97B4
1007103489988020 0000000000000000 0C0CC00C83EA48FD
10071034C8980120 0000000000000000 83BC8EF3A6570183
1046103489988020 0000000000000000 DF725DCAD94EA2E9
1086911519190101 0000000000000000 E652B53B550BE8B0
1086911519580101 0000000000000000 AF527120C485CBB0
5107B01519580101 0000000000000000 0F04CE393DB926D5
1007B01519190101 0000000000000000 C9F00FFC74079067
3107915498080101 0000000000000000 7CFD82A593252B4E
3107919498080101 0000000000000000 CB49A2F9E91363E3
10079115B9080140 0000000000000000 00B588BE70D23F56
3107911598090140 0000000000000000 406A9A6AB43399AE
1007D01589980101 0000000000000000 6CB773611DCA9ADA
9107911589980101 0000000000000000 67FD21C17DBB5D70
9107D01589190101 0000000000000000 9592CB4110430787
1007D01598980120 0000000000000000 A6B7FF68A318DDD3
1007940498190101 0000000000000000 4D102196C914CA16
0107910491190401 0000000000000000 2DFA9F4573594965
0107910491190101 0000000000000000 B46604816C0E0774
0107940491190401 0000000000000000 6E7E6221A4F34E87
19079210981A0101 0000000000000000 AA85E74643233199
1007911998190801 0000000000000000 2E5A19DB4D1962D6
10079119981A0801 0000000000000000 23A866A809D30894
1007921098190101 0000000000000000 D812D961F017D320
100791159819010B 0000000000000000 055605816E58608F
1004801598190101 0000000000000000 ABD88E8B1B7716F1
1004801598190102 0000000000000000 537AC95BE69DA1E1
1004801598190108 0000000000000000 AED0F6AE3C25CDD8
1002911598100104 0000000000000000 B3E35A5EE53E7B8D
1002911598190104 0000000000000000 61C79C71921A2EF8
1002911598100201 0000000000000000 E2F5728F0995013C
1002911698100101 0000000000000000 1AEAC39A61F0A464
7CA110454A1A6E57 01A1D6D039776742 690F5B0D9A26939B
0131D9619DC1376E 5CD54CA83DEF57DA 7A389D10354BD271
07A1133E4A0B2686 0248D43806F67172 868EBB51CAB4599A
3849674C2602319E 51454B582DDF440A 7178876E01F19B2A
04B915BA43FEB5B6 42FD443059577FA2 AF37FB421F8C4095
0113B970FD34F2CE 059B5E0851CF143A 86A560F10EC6D85B
0170F175468FB5E6 0756D8E0774761D2 0CD3DA020021DC09
43297FAD38E373FE 762514B829BF486A EA676B2CB7DB2B7A
07A7137045DA2A16 3BDD119049372802 DFD64A815CAF1A0F
04689104C2FD3B2F 26955F6835AF609A 5C513C9C4886C088
37D06BB516CB7546 164D5E404F275232 0A2AEEAE3FF4AB77
1F08260D1AC2465E 6B056E18759F5CCA EF1BF03E5DFA575A
584023641ABA6176 004BD6EF09176062 88BF0DB6D70DEE56
025816164629B007 480D39006EE762F2 A1F9915541020B56
49793EBC79B3258F 437540C8698F3CFA 6FBF1CAFCFFD0556
4FB05E1515AB73A7 072D43A077075292 2F22E49BAB7CA1AC
49E95D6D4CA229BF 02FE55778117F12A 5A6B612CC26CCE4A
018310DC409B26D6 1D9D5C5018F728C2 5F4C038ED12B2E41
1C587F1C13924FEF 305532286D6F295A 63FAC0D034D9F793

View File

@ -0,0 +1 @@
30818702818100DA9A18547FF03B385CC16508C173A7EF4EB61CB40EF8FEF3B31F145051676166BCDC3FE6B799FC394D08C26385F9413F896E09117E46209D6923602683CEA100924A6EE695281775C619DAA94EA8CB3691B4275B0183F1D39639EBC92995FE645D6C1BC28D409E585549BBD2C5DCDD6C208B04EADD8B7A6D997F72CBAD88390F020102

View File

@ -0,0 +1 @@
308201080282010100EB60DBD494AAFBCD2EAC6A36DB8E7DD4A2A64512A5BBB15B9BFB581C7C1CAFB647D4612973C3770C2166D75EEA695F67EA8261557591DB78BCF5A886AA5294F3AEE4D25B57C8EE8C7FE8DBF70C132CD7FFCB6F89426F807F552C5DAE2FB1F329E340094E4B30D8EF6265AB4D350E9837B151C86AC524DE4E1FC04746C668BE318275E420D51AEDDFBDF887D435CDEEF6AC81293DB45287132F8236A43AD8F4D6642D7CA6732DA06A1DE008259008C9D74403B68ADAC788CF8AB5BEFFC310DCCCD32901D1F290E5B7A993D2CF6A652AF81B6DA0FD2E70678D1AE086150E41444522F20621195AD2A1F0975652B4AF7DE5261A9FD46B9EA8B443641F3BBA695B9B020103

View File

@ -0,0 +1 @@
308201370201003082011706072A8648CE3804013082010A02818100D4EC6B7A18416519C76766726B3D2D5F054D107B30E97691B15EB0DCDF452B77F10E12C14450AB107BE349C2DF3A2DBD9D844A24ABA21B328D568E8EC6B959E70BADE5C49879AE4447F643360523469B55AFDC459B45634F657AA79918772F2BA9508ACD43C95C16650A1251B8173EBA1B9B59FE8C57F6240EA49A4FE8855CEF0281806A7635BD0C20B28CE3B3B339359E96AF82A6883D9874BB48D8AF586E6FA295BBF8870960A22855883DF1A4E16F9D16DECEC2251255D10D9946AB4747635CACF385D6F2E24C3CD72223FB219B0291A34DAAD7EE22CDA2B1A7B2BD53CC8C3B9795D4A84566A1E4AE0B32850928DC0B9F5D0DCDACFF462BFB1207524D27F442AE77020102041702150C9C14EEFA749DCE9A2A4B7065768767BA48BBB62F

View File

@ -0,0 +1 @@
308202410201003082021906072A8648CE3804013082020C0282010100A8E87254E7F56CB5857786364ACC39F2A0F79FFF8ED6C62C64EE45FC1C775CDDBFD9CBCEF8262DBD2CECE4E5AFECA239B9B4B7D3CBA228366500F5B2203CA6C0CB0AB6698F73921B4831BA598DFA8268A07368A64774C77808AB7CB7978F839304B10567F8C9C34F8DBDB66BB928EDE6327773AA6C20A8F4E9C2AE0C66A0516E057BBC87760CF39270726F1863260CD5ADDAF366318E7029851A6F85B2349DF29629319A3662354DBCAD0789D02AC6BD804C06523900166501041963BD7EFFE0069694A54F4542172A29B1F09D26E3F052AE5274A898058BE549650BC2066DDFDB84D582E6503AF42BCB2B674F2A2A77C54678FD622FFCA2D9718BF8B0525AEF028201005474392A73FAB65AC2BBC31B25661CF9507BCFFFC76B6316327722FE0E3BAE6EDFECE5E77C1316DE96767272D7F6511CDCDA5BE9E5D1141B32807AD9101E536065855B34C7B9C90DA418DD2CC6FD41345039B45323BA63BC0455BE5BCBC7C1C9825882B3FC64E1A7C6DEDB35DC9476F3193BB9D53610547A74E15706335028B702BDDE43BB0679C93839378C3193066AD6ED79B318C73814C28D37C2D91A4EF94B1498CD1B311AA6DE5683C4E815635EC02603291C800B3280820CB1DEBF7FF0034B4A52A7A2A10B9514D8F84E9371F82957293A544C02C5F2A4B285E10336EFEDC26AC173281D7A15E595B3A795153BE2A33C7EB117FE516CB8C5FC58292D77020102041F021D031D7EC405D3E11D031B7B66DF9EFFCC5173B9B1639E4EC920731484EE

Some files were not shown because too many files have changed in this diff Show More