void m_initialize(Oid oid, Int32 majorVersion, Int32 minorVersion) { Oid = _eoid; Asn1Utils.EncodeObjectIdentifier(oid); Wincrypt.CERT_TEMPLATE_EXT pvStructInfo = new Wincrypt.CERT_TEMPLATE_EXT { pszObjId = oid.Value, dwMajorVersion = (UInt32)majorVersion, dwMinorVersion = (UInt32)minorVersion, fMinorVersion = true }; UInt32 pcbEncoded = 0; if (Crypt32.CryptEncodeObject(1, "1.3.6.1.4.1.311.21.7", ref pvStructInfo, null, ref pcbEncoded)) { RawData = new Byte[pcbEncoded]; Crypt32.CryptEncodeObject(1, "1.3.6.1.4.1.311.21.7", ref pvStructInfo, RawData, ref pcbEncoded); TemplateOid = new Oid(pvStructInfo.pszObjId); MajorVersion = majorVersion; MinorVersion = minorVersion; } else { throw new Win32Exception(Marshal.GetLastWin32Error()); } }