windows-nt/Source/XPSP1/NT/ds/security/services/ca/genreq/table.cpp
2020-09-26 16:20:57 +08:00

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);