private void Parse(byte[] data)
        {
            byte[] keyId;
            byte[] serialNumber;

            if (base.Oid.Value == AuthorityKeyIdentifierOid)
            {
                CertificateFactory.ParseAuthorityKeyIdentifierExtension(
                    data,
                    out keyId,
                    out m_authorityNames,
                    out serialNumber);
            }
            else
            {
                CertificateFactory.ParseAuthorityKeyIdentifierExtension2(
                    data,
                    out keyId,
                    out m_authorityNames,
                    out serialNumber);
            }

            m_keyId        = Utils.ToHexString(keyId);
            m_serialNumber = null;

            // the serial number is a little endian integer so must convert to string in reverse order.
            if (serialNumber != null)
            {
                StringBuilder builder = new StringBuilder(serialNumber.Length * 2);

                for (int ii = serialNumber.Length - 1; ii >= 0; ii--)
                {
                    builder.AppendFormat("{0:X2}", serialNumber[ii]);
                }

                m_serialNumber = builder.ToString();
            }
        }