300 lines
5.9 KiB
C++
300 lines
5.9 KiB
C++
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 1998 - 1999
|
|
//
|
|
// File: table.cpp
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#include <pch.cpp>
|
|
|
|
#pragma hdrstop
|
|
|
|
#include "csprop.h"
|
|
#include "encode.h"
|
|
|
|
|
|
#define iso_member 0x2a // iso(1) memberbody(2)
|
|
#define us 0x86, 0x48 // us(840)
|
|
#define rsadsi 0x86, 0xf7, 0x0d // rsadsi(113549)
|
|
#define pkcs 0x01 // pkcs(1)
|
|
|
|
#define rsa_dsi iso_member, us, rsadsi
|
|
#define rsa_dsi_len 6
|
|
|
|
#define pkcs_1 iso_member, us, rsadsi, pkcs
|
|
#define pkcs_len 7
|
|
|
|
#define prefix311 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37
|
|
#define prefix311Length 7
|
|
|
|
#define prefix19200300 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c
|
|
#define prefix19200300Length 7
|
|
|
|
|
|
#define joint_iso_ccitt_ds 0x55
|
|
#define attributetype 0x04
|
|
|
|
#define attributeType joint_iso_ccitt_ds, attributetype
|
|
#define attributeLength 3
|
|
|
|
|
|
const ALGIDTRANSLATE g_aAlgIdTranslate[] =
|
|
{
|
|
{
|
|
ALGTYPE_SIG_RSA_MD5,
|
|
szOID_RSA_MD5RSA, // "1.2.840.113549.1.1.4"
|
|
},
|
|
{
|
|
ALGTYPE_KEYEXCH_RSA_MD5,
|
|
szOID_RSA_RSA, // "1.2.840.113549.1.1.1"
|
|
},
|
|
{
|
|
ALGTYPE_CIPHER_RC4_MD5,
|
|
szOID_RSA_RC4, // "1.2.840.113549.3.4"
|
|
}
|
|
};
|
|
|
|
const DWORD g_cAlgIdTranslate = ARRAYSIZE(g_aAlgIdTranslate);
|
|
|
|
|
|
const OIDTRANSLATE g_aOidTranslate[] =
|
|
{
|
|
// Subject RDN OIDs:
|
|
|
|
{
|
|
szOID_COUNTRY_NAME, // "2.5.4.6"
|
|
{ attributeType, 6 }, // 0x55, 0x04, 0x06
|
|
attributeLength,
|
|
},
|
|
{
|
|
szOID_ORGANIZATION_NAME, // "2.5.4.10"
|
|
{ attributeType, 10 }, // 0x55, 0x04, 0x0a
|
|
attributeLength,
|
|
},
|
|
{
|
|
szOID_ORGANIZATIONAL_UNIT_NAME, // "2.5.4.11"
|
|
{ attributeType, 11 }, // 0x55, 0x04, 0x0b
|
|
attributeLength,
|
|
},
|
|
{
|
|
szOID_COMMON_NAME, // "2.5.4.3"
|
|
{ attributeType, 3 }, // 0x55, 0x04, 0x03
|
|
attributeLength,
|
|
},
|
|
{
|
|
szOID_LOCALITY_NAME, // "2.5.4.7"
|
|
{ attributeType, 7 }, // 0x55, 0x04, 0x07
|
|
attributeLength,
|
|
},
|
|
{
|
|
szOID_STATE_OR_PROVINCE_NAME, // "2.5.4.8"
|
|
{ attributeType, 8 }, // 0x55, 0x04, 0x08
|
|
attributeLength,
|
|
},
|
|
{
|
|
szOID_TITLE, // "2.5.4.12"
|
|
{ attributeType, 12 }, // 0x55, 0x04, 0x0c
|
|
attributeLength,
|
|
},
|
|
{
|
|
szOID_GIVEN_NAME, // "2.5.4.42"
|
|
{ attributeType, 42 }, // 0x55, 0x04, 0x02a
|
|
attributeLength,
|
|
},
|
|
{
|
|
szOID_INITIALS, // "2.5.4.43"
|
|
{ attributeType, 43 }, // 0x55, 0x04, 0x2b
|
|
attributeLength,
|
|
},
|
|
{
|
|
szOID_SUR_NAME, // "2.5.4.4"
|
|
{ attributeType, 4 }, // 0x55, 0x04, 0x04
|
|
attributeLength,
|
|
},
|
|
{
|
|
szOID_DOMAIN_COMPONENT, // "0.9.2342.19200300.100.1.25"
|
|
{ prefix19200300, 100, 1, 25 },
|
|
// 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19
|
|
prefix19200300Length + 3,
|
|
},
|
|
{
|
|
szOID_RSA_emailAddr, // "1.2.840.113549.1.9.1"
|
|
{ pkcs_1, 9, 1 },
|
|
pkcs_len + 2,
|
|
},
|
|
{
|
|
szOID_STREET_ADDRESS, // "2.5.4.9"
|
|
{ attributeType, 9 }, // 0x55, 0x04, 0x09
|
|
attributeLength,
|
|
},
|
|
{
|
|
szOID_RSA_unstructName, // "1.2.840.113549.1.9.2"
|
|
{ pkcs_1, 9, 2 },
|
|
pkcs_len + 2,
|
|
},
|
|
{
|
|
szOID_RSA_unstructAddr, // "1.2.840.113549.1.9.8"
|
|
{ pkcs_1, 9, 8 },
|
|
pkcs_len + 2,
|
|
},
|
|
{
|
|
szOID_DEVICE_SERIAL_NUMBER, // "2.5.4.5"
|
|
{ attributeType, 5 }, // 0x55, 0x04, 0x05
|
|
attributeLength,
|
|
},
|
|
|
|
// Non-Subject RDN OIDs:
|
|
|
|
{
|
|
szOID_CERT_EXTENSIONS, // "1.3.6.1.4.1.311.2.1.14"
|
|
{ prefix311, 2, 1, 14 },
|
|
prefix311Length + 3,
|
|
},
|
|
{
|
|
szOID_ENROLL_CERTTYPE_EXTENSION, // "1.3.6.1.4.1.311.20.2"
|
|
{ prefix311, 20, 2 },
|
|
prefix311Length + 2,
|
|
},
|
|
{
|
|
szOID_RSA_MD5RSA, // "1.2.840.113549.1.1.4"
|
|
{ pkcs_1, 1, 4 },
|
|
pkcs_len + 2
|
|
},
|
|
{
|
|
szOID_RSA_RSA, // "1.2.840.113549.1.1.1"
|
|
{ pkcs_1, 1, 1 },
|
|
pkcs_len + 2
|
|
},
|
|
{
|
|
szOID_RSA_RC4, // "1.2.840.113549.3.4"
|
|
{ rsa_dsi, 3, 4 },
|
|
rsa_dsi_len + 2
|
|
},
|
|
};
|
|
|
|
const DWORD g_cOidTranslate = ARRAYSIZE(g_aOidTranslate);
|
|
|
|
|
|
// Limit strings to cch???MAX chars, not including the trailing '\0'
|
|
|
|
RDNENTRY g_ardnSubject[] =
|
|
{
|
|
{
|
|
szOID_COUNTRY_NAME, // "2.5.4.6"
|
|
"C",
|
|
BER_PRINTABLE_STRING,
|
|
cchCOUNTRYNAMEMAX,
|
|
CCH_DBMAXTEXT_RDN,
|
|
},
|
|
{
|
|
szOID_ORGANIZATION_NAME, // "2.5.4.10"
|
|
"O",
|
|
BER_PRINTABLE_STRING,
|
|
cchORGANIZATIONNAMEMAX,
|
|
CCH_DBMAXTEXT_RDN,
|
|
},
|
|
{
|
|
szOID_ORGANIZATIONAL_UNIT_NAME, // "2.5.4.11"
|
|
"OU",
|
|
BER_PRINTABLE_STRING,
|
|
cchORGANIZATIONALUNITNAMEMAX,
|
|
CCH_DBMAXTEXT_RDN,
|
|
},
|
|
{
|
|
szOID_COMMON_NAME, // "2.5.4.3"
|
|
"CN",
|
|
BER_TELETEX_STRING,
|
|
cchCOMMONNAMEMAX,
|
|
CCH_DBMAXTEXT_RDN,
|
|
},
|
|
{
|
|
szOID_LOCALITY_NAME, // "2.5.4.7"
|
|
"L",
|
|
BER_PRINTABLE_STRING,
|
|
cchLOCALITYMANAMEMAX,
|
|
CCH_DBMAXTEXT_RDN,
|
|
},
|
|
{
|
|
szOID_STATE_OR_PROVINCE_NAME, // "2.5.4.8"
|
|
"S",
|
|
BER_PRINTABLE_STRING,
|
|
cchSTATEORPROVINCENAMEMAX,
|
|
CCH_DBMAXTEXT_RDN,
|
|
},
|
|
{
|
|
szOID_TITLE, // "2.5.4.12"
|
|
"T",
|
|
BER_PRINTABLE_STRING,
|
|
cchTITLEMAX,
|
|
CCH_DBMAXTEXT_RDN,
|
|
},
|
|
{
|
|
szOID_GIVEN_NAME, // "2.5.4.42"
|
|
"G",
|
|
BER_PRINTABLE_STRING,
|
|
cchGIVENNAMEMAX,
|
|
CCH_DBMAXTEXT_RDN,
|
|
},
|
|
{
|
|
szOID_INITIALS, // "2.5.4.43"
|
|
"I",
|
|
BER_PRINTABLE_STRING,
|
|
cchINITIALSMAX,
|
|
CCH_DBMAXTEXT_RDN,
|
|
},
|
|
{
|
|
szOID_SUR_NAME, // "2.5.4.4"
|
|
"SN",
|
|
BER_PRINTABLE_STRING,
|
|
cchSURNAMEMAX,
|
|
CCH_DBMAXTEXT_RDN,
|
|
},
|
|
{
|
|
szOID_DOMAIN_COMPONENT, // "0.9.2342.19200300.100.1.25"
|
|
"DC",
|
|
BER_PRINTABLE_STRING,
|
|
cchDOMAINCOMPONENTMAX,
|
|
CCH_DBMAXTEXT_RDN,
|
|
},
|
|
{
|
|
szOID_RSA_emailAddr, // "1.2.840.113549.1.9.1"
|
|
"E",
|
|
BER_IA5_STRING,
|
|
cchEMAILMAX,
|
|
CCH_DBMAXTEXT_RDN,
|
|
},
|
|
{
|
|
szOID_STREET_ADDRESS, // "2.5.4.9"
|
|
"STREET",
|
|
BER_PRINTABLE_STRING,
|
|
cchSTREETADDRESSMAX,
|
|
CCH_DBMAXTEXT_RDN,
|
|
},
|
|
{
|
|
szOID_RSA_unstructName, // "1.2.840.113549.1.9.2"
|
|
"UnstructuredName",
|
|
BER_PRINTABLE_STRING,
|
|
cchUNSTRUCTUREDNAMEMAX,
|
|
CCH_DBMAXTEXT_RDN,
|
|
},
|
|
{
|
|
szOID_RSA_unstructAddr, // "1.2.840.113549.1.9.8"
|
|
"UnstructuredAddress",
|
|
BER_PRINTABLE_STRING,
|
|
cchUNSTRUCTUREDADDRESSMAX,
|
|
CCH_DBMAXTEXT_RDN,
|
|
},
|
|
{
|
|
szOID_DEVICE_SERIAL_NUMBER, // "2.5.4.5"
|
|
"DeviceSerialNumber",
|
|
BER_PRINTABLE_STRING,
|
|
cchDEVICESERIALNUMBERMAX,
|
|
CCH_DBMAXTEXT_RDN,
|
|
},
|
|
};
|
|
|
|
const DWORD g_crdnSubject = ARRAYSIZE(g_ardnSubject);
|