SourceCodeSafer 4.7 alpha , qui il codice : aggiunta la possibilità di chiudere automaticamente l'applicazione che fornisce la password dopo aver fornito la password una sola volta , in pratica dopo che viene fornita la password se il checkbox dell'applicazione PasswordSupplier è selezionato , viene chiamato Application.Exit() contenuto dal metodo StopApplication ,di default il checkBox è selezionato :
public void StopApplication()
{
Form1 f = (Form1)Application.OpenForms["Form1"];
CheckBox cb = (CheckBox)f.Controls.Find("checkBox1", true)[0];
if (cb.Checked) {
Application.Exit(); //questo chiude l'applicazione PasswordSupplier
}
}
segue il metodo GetPasswordFromRemoteAddress di WindowsFormsProtector che chiama
il metodo ,tramite WCF , StopApplication di PasswordSupplier dopo aver recuperato
la password
private void GetPasswordFromRemoteAddress(object sender, EventArgs e)
{
try
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
string publicKey = rsa.ToXmlString(false); // false to get the public key
string address = this.textBox5.Text;
ChannelFactory<IService> cf =
new ChannelFactory<IService>(new WebHttpBinding(), address);
//WebHttpBehavior abilita il modello di programmazione Web per un
//servizio Windows Communication Foundation (WCF).
cf.Endpoint.Behaviors.Add(new WebHttpBehavior());
//crea il canale di comunicazione
IService channel = cf.CreateChannel();
//viene invocato il metodo GetPassword sul channel il cui indirizzo è address
byte[] encryptedData = channel.GetPassword(publicKey);
//viene valorizzato decryptedData con l'array di bytes ritornati
//dal metodo RSADecrypt
byte[] decryptedData =
RSADecrypt(encryptedData, rsa.ExportParameters(true), true);
UnicodeEncoding convertToString = new UnicodeEncoding();
string str = "";
str = convertToString.GetString(decryptedData);
this.textBox2.Text = str;
channel.StopApplication();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
Lo scopo di questa modifica è rendere non richiamabile da altre applicazioni o dalla stessa PasswordSupplier , dalla quale potrebbero ottenere la password .In fase di test interno potrebbe essere utile poter eseguire più volte PasswordSupplier senza doverlo rieseguire ed inserire i dati ogni volta (l'url di dove viene reso disponibile il servizio ,la password da passare ) ,per questo possiamo deselezionare il checkBox di PasswordSupplier,
spero possiate lasciare un commento o scrivere un email a gianmarco.castagna@gmail.com per segnalare errori o malfunzionamenti o dare suggerimenti o se qualcosa non è chiaro

Nessun commento:
Posta un commento