view dstep/security/certextensions.d @ 11:07194b026fa4

Added bindings to a couple of frameworks, new license + some other things
author Jacob Carlborg <doob@me.com>
date Sat, 01 Aug 2009 15:03:28 +0200
parents
children
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Jul 22, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.security.certextensions;

import dstep.security.cssmtype;
import dstep.security.x509defs;

alias CSSM_DATA CE_SubjectKeyID;
alias ushort CE_KeyUsage;
alias uint CE_CrlReason;
alias ushort CE_NetscapeCertType;
alias ubyte CE_CrlDistReasonFlags;
alias CE_GeneralNames CE_NameRegistrationAuthorities;
alias uint CE_CrlNumber;
alias uint CE_DeltaCrl;

enum
{
	GNT_OtherName = 0,
	GNT_RFC822Name,
	GNT_DNSName,
	GNT_X400Address,
	GNT_DirectoryName,
	GNT_EdiPartyName,
	GNT_URI,
	GNT_IPAddress,
	GNT_RegisteredID
}

enum CE_CrlDistributionPointNameType
{
	CE_CDNT_FullName,
	CE_CDNT_NameRelativeToCrlIssuer
}

enum CE_DataType
{
	DT_AuthorityKeyID,
	DT_SubjectKeyID,
	DT_KeyUsage,
	DT_SubjectAltName,
	DT_IssuerAltName,
	DT_ExtendedKeyUsage,
	DT_BasicConstraints,
	DT_CertPolicies,
	DT_NetscapeCertType,
	DT_CrlNumber,
	DT_DeltaCrl,
	DT_CrlReason,
	DT_CrlDistributionPoints,
	DT_IssuingDistributionPoint,
	DT_AuthorityInfoAccess,
	DT_Other,
	DT_QC_Statements
}

struct CE_OtherName
{
	CSSM_OID typeId;
	CSSM_DATA value;
}


struct CE_GeneralName
{
	int nameType;
	int berEncoded;
	CSSM_DATA name;
}


struct CE_GeneralNames
{
	uint numNames;
	CE_GeneralName* generalName;
}


struct CE_AuthorityKeyID
{
	int keyIdentifierPresent;
	CSSM_DATA keyIdentifier;
	int generalNamesPresent;
	CE_GeneralNames* generalNames;
	int serialNumberPresent;
	CSSM_DATA serialNumber;
}


struct CE_ExtendedKeyUsage
{
	uint numPurposes;
	CSSM_OID_PTR purposes;
}


struct CE_BasicConstraints
{
	int cA;
	int pathLenConstraintPresent;
	uint pathLenConstraint;
}


struct CE_PolicyQualifierInfo
{
	CSSM_OID policyQualifierId;
	CSSM_DATA qualifier;
}


struct CE_PolicyInformation
{
	CSSM_OID certPolicyId;
	uint numPolicyQualifiers;
	CE_PolicyQualifierInfo* policyQualifiers;
}


struct CE_CertPolicies
{
	uint numPolicies;
	CE_PolicyInformation* policies;
}


struct CE_DistributionPointName
{
	CE_CrlDistributionPointNameType nameType;
	
	union
	{
		CE_GeneralNames* fullName;
		CSSM_X509_RDN_PTR rd;
	}
}


struct CE_CRLDistributionPoint
{
	int distPointName;
	ubyte reasonsPresent;
	CE_CrlDistReasonFlags reasons;
	CE_GeneralNames* crlIssuer;
}


struct CE_CRLDistPointsSyntax
{
	uint numDistPoints;
	CE_CRLDistributionPoint* distPoints;
}


struct CE_AccessDescription
{
	CSSM_OID accessMethod;
	CE_GeneralName accessLocation;
}


struct CE_AuthorityInfoAccess
{
	uint numAccessDescriptions;
	CE_AccessDescription* accessDescriptions;
}


struct CE_SemanticsInformation
{
	CSSM_OID* semanticsIdentifier;
	CE_NameRegistrationAuthorities* nameRegistrationAuthorities;
}


struct CE_QC_Statement
{
	CSSM_OID statementId;
	CE_SemanticsInformation* semanticsInfo;
	CSSM_DATA* otherInfo;
}


struct CE_QC_Statements
{
	uint numQCStatements;
	CE_QC_Statement* qcStatements;
}


struct CE_IssuingDistributionPoint
{
	int distPointName;
	int onlyUserCertsPresent;
	int onlyUserCerts;
	int onlyCACertsPresent;
	int onlyCACerts;
	ubyte onlySomeReasonsPresent;
	int onlySomeReasons;
	int indirectCrlPresent;
	CSSM_BOOL indirectCrl;
}


struct CE_DataAndType
{
	CE_DataType type;
	int extension;
	CSSM_BOOL critical;
}

union CE_Data
{
	CE_AuthorityKeyID authorityKeyID;
	CE_SubjectKeyID subjectKeyID;
	CE_KeyUsage keyUsage;
	CE_GeneralNames subjectAltName;
	CE_GeneralNames issuerAltName;
	CE_ExtendedKeyUsage extendedKeyUsage;
	CE_BasicConstraints basicConstraints;
	CE_CertPolicies certPolicies;
	CE_NetscapeCertType netscapeCertType;
	CE_CrlNumber crlNumber;
	CE_DeltaCrl deltaCrl;
	CE_CrlReason crlReason;
	CE_CRLDistPointsSyntax crlDistPoints;
	CE_IssuingDistributionPoint issuingDistPoint;
	CE_AuthorityInfoAccess authorityInfoAccess;
	CE_QC_Statements qualifiedCertStatements;
	CSSM_DATA rawData;
}