• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/paysystem/asn1.php
  • Класс: BitrixSalePaySystemASN1
  • Вызов: ASN1::encodeOID
static function encodeOID($str) {
        $numbers = explode('.', $str);

        // First octet
        $oid = chr(array_shift($numbers) * 40 + array_shift($numbers));

        // Subsequent octets
        foreach ($numbers as $num) {
            if ($num == 0) {
                $oid .= chr(0x00);
                continue;
            }
            $pack = '';

            while ($num) {
                $pack .= chr(0x80 | ($num & 0x7f));
                $num >>= 7;
            }
            $pack[0] = $pack[0] & chr(0x7f);

            if (pack('V', 65534) == pack('L', 65534)) {
                $oid .= strrev($pack); // Little endian machine - need to convert to big endian
            } else {
                $oid .= $pack;
            }
        }

        return $oid;
    }