103 lines
2.9 KiB
C
103 lines
2.9 KiB
C
/*++
|
|
|
|
Copyright (c) 1998 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
licecert.h
|
|
|
|
Abstract:
|
|
|
|
The header file for the X509 certificates parsing and verification API
|
|
|
|
Author:
|
|
|
|
Frederick Chong (fredch) 6/1/1998
|
|
|
|
Environment:
|
|
|
|
Win32, WinCE, Win16
|
|
|
|
Notes:
|
|
|
|
--*/
|
|
|
|
#ifndef _LICE_CERT_H_
|
|
#define _LICE_CERT_H_
|
|
|
|
//-----------------------------------------------------------------------------
|
|
//
|
|
// Flags to indicate to VerifyCertChain on how should the validity dates in the
|
|
// certificate chain be handled.
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#define CERT_DATE_ERROR_IF_INVALID 0x00000001
|
|
#define CERT_DATE_WARN_IF_INVALID 0x00000002
|
|
#define CERT_DATE_DONT_VALIDATE 0x00000003
|
|
|
|
#define CERT_DATE_OK 0x00000004
|
|
#define CERT_DATE_NOT_BEFORE_INVALID 0x00000005
|
|
#define CERT_DATE_NOT_AFTER_INVALID 0x00000006
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
//+----------------------------------------------------------------------------
|
|
//
|
|
// Function:
|
|
//
|
|
// VerifyCertChain
|
|
//
|
|
// Abstract:
|
|
//
|
|
// Verifies a chain of X509 certificates
|
|
//
|
|
// Parameters:
|
|
//
|
|
// pbCert - The certificate chain to verify
|
|
// cbCert - Size of the certificate chain
|
|
// pbPublicKey - The memory to store the public key of the subject on output.
|
|
// If set to NULL on input, the API will return
|
|
// LICENSE_STATUS_INSUFFICIENT_BUFFER and the size of the
|
|
// required buffer set in pcbPublicKey.
|
|
// pcbPublicKey - Size of the allocated memory on input. On output, contains
|
|
// the actual size of the public key.
|
|
// pfDates - How the API should check the validity dates in the cert chain.
|
|
// This flag may be set to the following values:
|
|
//
|
|
// CERT_DATE_ERROR_IF_INVALID - The API will return an error if the
|
|
// dates are invalid. When the API returns,
|
|
// this flag will be set to CERT_DATE_OK if the
|
|
// dates are OK or one of CERT_DATE_NOT_BEFORE_INVALID
|
|
// or CERT_DATE_NOT_AFTER_INVALID.
|
|
// CERT_DATE_DONT_VALIDATE - Don't validate the dates in the cert chain. The value
|
|
// in this flag is not changed when the API returns.
|
|
// CERT_DATE_WARN_IF_INVALID - Don't return an error for invalid cert dates.
|
|
// When the API returns, this flag will be set to
|
|
// CERT_DATE_OK if the dates are OK or one of
|
|
// CERT_DATE_NOT_BEFORE_INVALID or
|
|
// CERT_DATE_NOT_AFTER_INVALID.
|
|
//
|
|
// Return:
|
|
//
|
|
// LICENSE_STATUS_OK if the function is successful.
|
|
//
|
|
//+----------------------------------------------------------------------------
|
|
|
|
LICENSE_STATUS
|
|
VerifyCertChain(
|
|
LPBYTE pbCert,
|
|
DWORD cbCert,
|
|
LPBYTE pbPublicKey,
|
|
LPDWORD pcbPublicKey,
|
|
LPDWORD pfDate );
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|