Partager via


MsiGetFileSignatureInformationA, fonction (msi.h)

La fonction MsiGetFileSignatureInformation prend le chemin d’accès à un fichier qui a été signé numériquement et retourne le certificat de signataire et le hachage du fichier. MsiGetFileSignatureInformation peut être appelé pour obtenir le certificat de signataire et le hachage nécessaires pour remplir les tables MsiDigitalCertificate, MsiPatchCertificate et MsiDigitalSignature .

Windows Installer 3.0 et versions ultérieures : À compter de Windows Installer 3.0, Windows Installer peut vérifier les signatures numériques des correctifs (fichiers .msp) à l’aide des tables MsiPatchCertificate et MsiDigitalCertificate . Pour plus d’informations, consultez Recommandations pour la création d’installations sécurisées et la mise à jour corrective du contrôle de compte d’utilisateur (UAC).

Windows Installer 2.0 : Les signatures numériques des correctifs ne sont pas prises en charge. Windows Installer 2.0 utilise les signatures numériques comme moyen de détecter les ressources endommagées et ne peut vérifier les signatures numériques des armoires externes que par l’utilisation des tables MsiDigitalSignature et MsiDigitalCertificate .

Syntaxe

HRESULT MsiGetFileSignatureInformationA(
  [in]      LPCSTR         szSignedObjectPath,
  [in]      DWORD          dwFlags,
  [out]     PCCERT_CONTEXT *ppcCertContext,
  [out]     LPBYTE         pbHashData,
  [in, out] LPDWORD        pcbHashData
);

Paramètres

[in] szSignedObjectPath

Pointeur vers une chaîne terminée par un caractère Null spécifiant le chemin d’accès complet au fichier qui contient la signature numérique.

[in] dwFlags

Indicateurs de cas d’erreur spéciaux.

Indicateur Signification
MSI_INVALID_HASH_IS_FATAL
0x1
Sans cet indicateur défini et lors de la demande uniquement du contexte de certificat, un hachage non valide dans la signature numérique n’entraîne pas msiGetFileSignatureInformation à retourner une erreur irrécupérable.

Pour retourner une erreur irrécupérable pour un hachage non valide, définissez l’indicateur MSI_INVALID_HASH_IS_FATAL.

[out] ppcCertContext

Contexte du certificat de signataire retourné

[out] pbHashData

Mémoire tampon de hachage retournée. Ce paramètre peut être NULL si les données de hachage ne sont pas demandées.

[in, out] pcbHashData

Pointeur vers une variable qui spécifie la taille, en octets, de la mémoire tampon vers laquelle pointe le paramètre pbHashData . Ce paramètre ne peut pas être NULL si pbHashData n’est pas NULL. Si ERROR_MORE_DATA est retourné, pbHashData indique la taille de la mémoire tampon nécessaire pour contenir les données de hachage. Si ERROR_SUCCESS est retourné, il indique le nombre d’octets écrits dans la mémoire tampon de hachage. Le paramètre pcbHashData est ignoré si pbHashData a la valeur NULL.

Valeur retournée

Valeur Signification
ERROR_SUCCESS/S_OK
Opération terminée correctement.
ERROR_INVALID_PARAMETER
Un paramètre non valide a été spécifié.
ERROR_FUNCTION_FAILED

WinVerifyTrust n’est pas disponible sur le système. MsiGetFileSignatureInformation nécessite la présence du fichier Wintrust.dll sur le système.

ERROR_MORE_DATA
Une mémoire tampon est trop petite pour contenir les données demandées. Si ERROR_MORE_DATA est retourné, pcbHashData indique la taille de la mémoire tampon nécessaire pour contenir les données de hachage.
TRUST_E_NOSIGNATURE
Le fichier n’est pas signé
TRUST_E_BAD_DIGEST
Le hachage actuel du fichier n’est pas valide en fonction du hachage stocké dans la signature numérique du fichier.
CERT_E_REVOKED
Le certificat de signataire du fichier a été révoqué. La signature numérique du fichier est compromise.
TRUST_E_SUBJECT_NOT_TRUSTED
L’objet a échoué à l’action de vérification spécifiée. La plupart des fournisseurs d’approbation retournent un code d’erreur plus détaillé qui décrit la raison de l’échec.
TRUST_E_PROVIDER_UNKNOWN
Le fournisseur d’approbation n’est pas reconnu sur ce système.
TRUST_E_ACTION_UNKNOWN
Le fournisseur d’approbation ne prend pas en charge l’action spécifiée.
TRUST_E_SUBJECT_FORM_UNKNOWN
Le fournisseur d’approbation ne prend pas en charge le formulaire spécifié pour l’objet.
 
 

MsiGetFileSignatureInformation retourne également toutes les valeurs d’erreur Win32 mappées à leur type de données HRESULT équivalent par HRESULT_FROM_WIN32.

Remarques

Lorsque vous demandez uniquement le contexte du certificat, un hachage non valide dans la signature numérique n’entraîne pas le retour d’une erreur irrécupérable par MsiGetFileSignatureInformation . Pour retourner une erreur irrécupérable pour un hachage non valide, définissez l’indicateur MSI_INVALID_HASH_IS_FATAL dans le paramètre dwFlags .

Le contexte de certificat et les informations de hachage sont extraits du fichier par un appel à WinVerifyTrust. Le paramètre ppcCertContext est un doublon du contexte de certificat de signataire de la signature. Il incombe à l’appelant d’appeler CertFreeCertificateContext pour libérer le contexte du certificat lorsque vous avez terminé.

Notez que MsiGetFileSignatureInformation nécessite la présence du fichier Wintrust.dll sur le système.

Notes

L’en-tête msi.h définit MsiGetFileSignatureInformation en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. La combinaison de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Installer 5.0 sur Windows Server 2012, Windows 8, Windows Server 2008 R2 ou Windows 7. Windows Installer 4.0 ou Windows Installer 4.5 sur Windows Server 2008 ou Windows Vista. Windows Installer sur Windows Server 2003 ou Windows XP. Pour plus d’informations sur le Service Pack Windows requis par une version de Windows Installer, consultez Configuration requise pour le runtime Windows.
Plateforme cible Windows
En-tête msi.h
Bibliothèque Msi.lib
DLL Msi.dll

Voir aussi

Signatures numériques et Windows Installer

Table MsiDigitalCertificate

Table MsiDigitalSignature