FR/ EN
La version 10.2.2 de RAD Studio est sortie !

La version 10.2.2 de RAD Studio est sortie !

Sarina Dupont a annoncé la sortie de RAD Studio 10.2.2 le 12 décembre.  C’est la mise à jour 2 de la version 10.2 Tokyo. Vous pouvez télécharger les versions pour les différents langages ici : Delphi : http://cc.embarcadero.com/reg/delphi C++ Builder : http://cc.embarcadero.com/reg/c_builder RAD Studio : http://cc.embarcadero.com/reg/rad_studio J’ai testé ce matin les nouveautés annoncées. Tout d’abord, le premier changement visible, c’est la possibilité de changer le thème de l’IDE, au départ, on a le choix entre le thème light ou dark. Mais en fait, on a bien plus de choix que ça ! Dans Outils -> Options -> Theme Manager on peut choisir Clair, Foncé ou Personnalisé. Le thème Dark, ça donne ça : Vous constaterez dans la palette d’outils que les icônes des composants ont subi un joli relooking. Du côté des fonctionnalités maintenant, il y a le support des FireMonkey Quick Edit (image ci-dessous), de nouveaux contrôles VCL, une licence de déploiement pour RAD Server dans les éditions Entreprise et Architecte et la correction de plus de 150 bugs. Vous pouvez voir toutes les nouveautés en action dans cette vidéo :...

Importer des clés RSA OpenSSL avec Delphi et Indy

OpenSSL est une bibliothèque de chiffrement open-source implémentant TLS et son prédécesseur SSL. Elle est massivement utilisée par les sites web en HTTPS. Certains composants Indy utilisent OpenSSL comme TIdServerIOHandlerSSLOpenSSL ou TIdSSLIOHandlerSocketOpenSSL. Attention, Indy utilise la version 1.0.2 d’OpenSSL qui n’est pas la dernière version. Dans cet article, on va utiliser les fichiers IdSSLOpenSSLHeaders et IdSSLOpenSSL d’Indy. Pour iOS, on aura aussi besoin de IdSSLOpenSSLHeaders_Static. Le but est d’importer les clés RSA contenues dans un fichier au format PEM afin de pouvoir les lire ou les utiliser par la suite. On va traiter trois cas : Une clé publique Un certificat Une clé privée (chiffrée ou non) Charger OpenSSL Pour utiliser la bibliothèque OpenSSL sous Windows, OSX ou iOS, il faut qu’elle soit installée sur votre machine. Embarcadero explique comment faire ici : http://docwiki.embarcadero.com/RADStudio/Tokyo/fr/OpenSSL Pour Android, il y a deux cas : – si vous avez une version < 6.0 alors vous n’avez rien à faire, OpenSSL est inclus par défaut. – si vous avez une version >= 6.0 alors il vous faut des fichiers libcrypto.so* et libssl.so* (par exemple, libcrypto.so.1.0.0). Il faut les déployer dans ./assets/internal pour qu’ils soient accessibles via GetDocumentsPath. Vous pouvez en trouver des versions ici : https://indy.fulgan.com/SSL/ Ensuite, il faut charger la bibliothèque dans votre programme. Les fonctions dont on va avoir besoin sont dans la partie crypto d’OpenSSL. On n’a pas besoin de charger la bibliothèque sous iOS car elle est liée statiquement au programme. function TFromOpenSSL.LoadSSLCryptoLibrary: HMODULE; begin {$IFDEF MSWINDOWS} Result := SafeLoadLibrary('libeay32.dll'); {$ELSE} {$IFDEF ANDROID} Result := LoadLibrary('libcrypto.so'); {$ELSE} {$IFNDEF IOS} Result := LoadLibrary('libcrypto.dylib'); {$ENDIF} {$ENDIF} {$ENDIF} end; Cette fonction est utilisée...

TMS Cryptography Pack 2.5.0.0 : Chiffrer un message en utilisant une clé dérivée d’un mot de passe

Cet exemple utilise les algorithmes Argon2d, ed25519 et AES avec les composants TArgon2KeyDerivation, TECCEncSign et TAESEncryption. Alice veut envoyer un message à Bob, donc elle possède sa clé privée (il utilise l’algorithme ed25519). Le mot de passe peut être demandé à Alice en utilisant une boîte de dialogue. Alice utilise la fonction suivante pour chiffrer un message à Bob : function EncryptMessageToBob(password: string; input: string; BobPublicKey: string): string; var aesKey: string; eccCipher, aesCipher : string; begin Argon2.StringSalt := '0123456789012345'; Argon2.outputFormat := raw; aesKey := Argon2.GenerateKey(password); ECC.PublicKey := BobPublicKey; eccCipher := ecc.Encrypt(aesKey); aes.Key := aesKey; aesCipher := aes.Encrypt(input); Result := eccCipher + '+' + aesCipher; end; Pour déchiffrer le message d’Alice, Bob utilise la fonction suivante : function DecryptMessageFromAlice(input: string; BobPrivateKey: string): string; var eccCipher, aesCipher: string; aesKey: string; begin eccCipher := input.subString(0, Pos('+', input) - 1); aesCipher := input.subString(Pos('+', input), input.Length); ECC.PrivateKey := BobPrivateKey; aesKey := ecc.Decrypt(eccCipher); aes.Key := aesKey; Result := aes.Decrypt(aesCipher); end; Pour les messages suivants, Alice et Bob peuvent enregistrer la clé aesKey et ne pas envoyer la chaîne eccCipher. Syntaxe du code grâce à...