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ée pour obtenir le certificat de signataire et le hachage nécessaire pour remplir les tables MsiDigitalCertificate, MsiPatchCertificateet 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 msiPatchCertificate et msiDigitalCertificate tables. Pour plus d’informations, consultez Recommandations en matière de création d’installations sécurisées et de contrôle de compte d’utilisateur (UAC).

Windows Installer 2.0 : signatures numériques des correctifs n’est pas pris en charge. Windows Installer 2.0 utilise des signatures numériques comme moyen de détecter les ressources endommagées et ne peut vérifier que les signatures numériques des armoires externes, et uniquement à l’aide 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 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.

Drapeau 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 renvoyer une erreur irrécupérable pour un hachage non valide, définissez l’indicateur MSI_INVALID_HASH_IS_FATAL.

[out] ppcCertContext

Contexte du certificat du 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 pointée par le paramètre pbHashData. Ce paramètre ne peut pas être NULL si pbHashData n’est pasNULL. Si ERROR_MORE_DATA est retourné, pbHashData donne la taille de la mémoire tampon requise pour contenir les données de hachage. Si ERROR_SUCCESS est retourné, il donne le nombre d’octets écrits dans la mémoire tampon de hachage. Le paramètre pbHashData est ignoré si pbHashData est NULL.

Valeur de retour

Valeur Signification
ERROR_SUCCESS/S_OK
Réussite.
ERROR_INVALID_PARAMETER
Le 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ée, lui donne la taille de la mémoire tampon requise 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 MsiGetFileSignatureInformation retourner une erreur irrécupérable. Pour renvoyer 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 extraites du fichier par un appel à WinVerifyTrust. Le paramètre cppCertContext est un doublon du contexte de certificat du signataire de la signature. Il incombe à l’appelant d’appeler CertFreeCertificateContext de libérer le contexte du certificat une fois terminé.

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

Note

L’en-tête msi.h définit MsiGetFileSignatureInformation comme 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. Le mélange 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.

Exigences

Exigence Valeur
client minimum 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. Consultez la configuration requise de Windows Installer Run-Time pour plus d’informations sur le service pack Windows minimal requis par une version de Windows Installer.
plateforme cible Windows
d’en-tête msi.h
bibliothèque Msi.lib
DLL Msi.dll

Voir aussi

signatures numériques et windows Installer

table MsiDigitalCertificate

table MsiDigitalSignature