Private Sub Validate_cmd_Click()
' Visualizza la clessidra
Clessidra.Visible = True
' Disabilita temporaneamente le funzioni del programma (previene la convalida con parametri corretti
' e l'uso con altri errati).
CPT_Open_Source_cmd.Enabled = False
DPT_Open_Source_cmd.Enabled = False
ProfSave_Cmd.Enabled = False
P = Q = E = N = D = -1
vparams = False
' Verifica i dati immessi nella finestra "Impostazioni"
' 1 - Controlla che i tre campi non siano vuoti
If (PrimeP_txt.Text = "" Or PrimeQ_txt.Text = "" Or NumE_txt.Text = "") Then
MsgBox ("Attenzione! Riempire tutti i campi, prego.")
GoTo USCITA
End If
' 2 - Controlla che i numeri P e Q immessi siano primi e maggiori di 100.000
' 2.1 - Controllo Cifre
If (CDbl(PrimeP_txt.Text) < 100000 Or CDbl(PrimeQ_txt.Text) < 100000) Then
MsgBox ("Attenzione! I numeri P e Q devono avere almeno 6 cifre.")
GoTo USCITA
End If
' 2.2 - Primalità
If isPrime(CDbl(PrimeP_txt.Text)) <> True Then
MsgBox ("Attenzione! Il numero P inserito, non è primo.")
GoTo USCITA
End If
If isPrime(CDbl(PrimeQ_txt.Text)) <> True Then
MsgBox ("Attenzione! Il numero Q inserito, non è primo.")
GoTo USCITA
End If
' 3 - Controlla che (P - 1) e (Q - 1) siano coprimi con E e che E sia > 1
If CDbl(NumE_txt.Text) <= 1 Then
MsgBox ("Attenzione! Il numero E deve essere maggiore di 1.")
GoTo USCITA
End If
If (MCD(CDbl(PrimeP_txt.Text) - 1, CDbl(NumE_txt.Text)) <> 1) Or (MCD(CDbl(PrimeQ_txt.Text) - 1, CDbl(NumE_txt.Text)) <> 1) Then
MsgBox ("Attenzione! Il numero E inserito non è coprimo con (P - 1) e/o (Q - 1).")
GoTo USCITA
End If
' 4 - Verifica che non esista già un altro utente in rubrica con gli stessi parametri
MsgBox ("verificare che non esiste già qualcuno con questi parametri")
' Informa l'utente dell'esito positivo del test
MsgBox ("Parametri convalidati. È ora possibile salvare questo profilo ed utilizzare il programma.")
' Imposta i valori immessi come quelli correnti
Dim i As Double
i = 1
P = CDbl(PrimeP_txt.Text)
Q = CDbl(PrimeQ_txt.Text)
E = CDbl(NumE_txt.Text)
N = P * Q
'While (SecureMod(N * i + 1, SecureMod(E, N)) <> 0)
' i = i + 1
'Wend
'D = (N * i + 1) / SecureMod(E, N)
' Abilita le operazioni di Criptaggio, Decriptaggio e salvataggio del profilo
CPT_Open_Source_cmd.Enabled = True
DPT_Open_Source_cmd.Enabled = True
ProfSave_Cmd.Enabled = True
vparams = True
USCITA:
' Nasconde la clessidra
Clessidra.Visible = False
End Sub