Les fonctions CryptVerifyMessageSignature et CryptDecryptMessage me permettent de vérifier si une signature S/MIME est valide (ou de déchiffrer des données cryptées dans CryptDecryptMessage) et également de renvoyer le certificat utilisé pour la signature (ou le cryptage). Cependant, il n'y a pas d'informations sur les algorithmes réellement utilisés pour la signature et le chiffrement. Comment puis-je obtenir cette information? J'utilise C# mais tout échantillon ou indice C/C++ est également le bienvenu.Comment déterminer l'algorithme de hachage et de chiffrement du message S/MIME avec Win32 CryptoAPI?
Edit: extrait de code de vérification de signature (tout le code est très grand pour l'inclure ici) ajouté sur demande
IntPtr pbDetachedSignBlob = IntPtr.Zero;
uint cbDetachedSignBlob = (uint)signatureBytes.Length;
IntPtr pbContent = IntPtr.Zero;
uint cbContent = (uint)data.Length;
pbDetachedSignBlob = Marshal.AllocHGlobal((int)cbDetachedSignBlob);
Marshal.Copy(signatureBytes, 0, pbDetachedSignBlob, (int)cbDetachedSignBlob);
pbContent = Marshal.AllocHGlobal((int)cbContent);
Marshal.Copy(data, 0, pbContent, (int)cbContent);
IntPtr[] messageArray = { pbContent };
uint[] messageSizeArray = { cbContent };
GCHandle messageArrayHandle = GCHandle.Alloc(messageArray, GCHandleType.Pinned);
IntPtr messageArrayPtr = (IntPtr)messageArrayHandle.AddrOfPinnedObject();
int ret = CryptoApiFuncs.MessageFuncs.CryptVerifyDetachedMessageSignature(pVerifyPara, 0, pbDetachedSignBlob, cbDetachedSignBlob, 1, messageArrayPtr, ref messageSizeArray[0], ref pSignerCert);
peut vous partager le code que vous utilisez pour? –
@CiroCorvino J'ai ajouté le code bien que je ne sois pas sûr de savoir comment cela aide. Je n'ai aucun problème avec ce code, ça fonctionne très bien. Ça fait juste une chose différente. – Alex