public static string DecriptazioneSequenza( string sequenza, // crypted string kkey_str, char mode ) { // ramoRitorno della criptazione CryptoEngine cs = new CryptoEngine(); CryptoEngine.GenericAlgoPointer specificaFunzione = null; // puntatore al servizio di criptazione /* * La BPL chiamante fornisce {sequenza, kkey, mode}. * Il par 'mode' prende valori in {'s', 'm', 'o'}, che significano rispettivamente {simple, multi, off}. * Il default e' 'multi'. * Qualora fosse mal configurato il campo 'mode', l'adozione del default 'multi' provochera' un'eccezione * in Common.CryptoStore.Micro.Multi. */ switch (mode) { case 's': { specificaFunzione = new CryptoEngine.GenericAlgoPointer( CryptoStore.Micro.SimpleXor.xorCrypto_ritorno ); break; } default: case 'm': { specificaFunzione = new CryptoEngine.GenericAlgoPointer( CryptoStore.Micro.MultiXor.xorMultiCrypto_ritorno ); break; } case 'o': { specificaFunzione = null; break; } } // la chiave l'ho letta sul db (kkey_str) CryptoEngine.theReturnType loginResult = cs.Decriptazione( sequenza, kkey_str, specificaFunzione ); // ready return(loginResult.cryptedSequence); } // end
/// <summary> /// La BPL chiamante fornisce {sequenza, out mode}. /// Il par 'mode' prende valori in {'s', 'm', 'o'}, che significano rispettivamente {simple, multi, off}. /// Il default e' 'multi'. /// </summary> /// <param name="sequenza"></param> /// <param name="mode"></param> /// <returns></returns> public static CryptoEngine.theReturnType CriptazioneSequenza( string sequenza, // in chiaro out char mode ) { // Criptazione // ramoAndata della criptazione CryptoStore.Macro.CryptoEngine cs = new CryptoStore.Macro.CryptoEngine(); CryptoStore.Macro.CryptoEngine.GenericAlgoPointer specificaFunzione = null; // puntatore al servizio di criptazione /* per decidere come valorizzare il puntatore a funzione, * vado in web.config a leggere allo xpath "Criptazione/CryptoService" * per vedere se la chiave "interruttore" e' su "acceso" o "spento" * e se la chiave "specificaFunzione" punta a un algoritmo esistente o * a un nome invalido. */ ConfigurationLayer.ConfigurationService myConfig = new ConfigurationLayer.ConfigurationService( "Criptazione/CryptoService"); string AlgorithmSwitch = myConfig.GetStringValue("switch"); // NB. <!-- switch: {"simple", "multi", "off"} --> switch (AlgorithmSwitch) { case "simple": { specificaFunzione = new CryptoEngine.GenericAlgoPointer( CryptoStore.Micro.SimpleXor.xorCrypto_andata ); mode = 's'; // simple break; } default: //NB. Error in web.config: key "switch" in {"simple", "multi", "off"}. case "multi": { specificaFunzione = new CryptoEngine.GenericAlgoPointer( CryptoStore.Micro.MultiXor.xorMultiCrypto_andata ); mode = 'm'; //multi break; } case "off": { specificaFunzione = null; // no crypto. mode = 'o'; // off break; } } // end switch( AlgorithmSwitch) // CryptoStore.Macro.CryptoEngine.theReturnType cryptedValues = cs.Criptazione( sequenza, specificaFunzione ); // ready return(cryptedValues); } //