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 chiamabile da altre applicazioni 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