Ejemplo n.º 1
0
        public void DecodeX509EnhancedKeyUsageExtension(byte[] encoded, out OidCollection usages)
        {
            OidCollection localUsages = new OidCollection();

            unsafe
            {
                encoded.DecodeObject(
                    CryptDecodeObjectStructType.X509_ENHANCED_KEY_USAGE,
                    delegate(void *pvDecoded)
                {
                    CERT_ENHKEY_USAGE *pEnhKeyUsage = (CERT_ENHKEY_USAGE *)pvDecoded;
                    int count = pEnhKeyUsage->cUsageIdentifier;
                    for (int i = 0; i < count; i++)
                    {
                        IntPtr oidValuePointer = pEnhKeyUsage->rgpszUsageIdentifier[i];
                        String oidValue        = Marshal.PtrToStringAnsi(oidValuePointer);
                        Oid oid = new Oid(oidValue);
                        localUsages.Add(oid);
                    }
                }
                    );
            }

            usages = localUsages;
            return;
        }
Ejemplo n.º 2
0
        public void DecodeX509EnhancedKeyUsageExtension(byte[] encoded, out OidCollection usages)
        {
            unsafe
            {
                usages = encoded.DecodeObject(
                    CryptDecodeObjectStructType.X509_ENHANCED_KEY_USAGE,
                    static delegate(void *pvDecoded, int cbDecoded)
                {
                    var localUsages = new OidCollection();

                    Debug.Assert(cbDecoded >= sizeof(CERT_ENHKEY_USAGE));
                    CERT_ENHKEY_USAGE *pEnhKeyUsage = (CERT_ENHKEY_USAGE *)pvDecoded;
                    int count = pEnhKeyUsage->cUsageIdentifier;
                    for (int i = 0; i < count; i++)
                    {
                        IntPtr oidValuePointer = pEnhKeyUsage->rgpszUsageIdentifier[i];
                        string oidValue        = Marshal.PtrToStringAnsi(oidValuePointer) !;
                        Oid oid = new Oid(oidValue);
                        localUsages.Add(oid);
                    }

                    return(localUsages);
                });
            }
        }