protected static function _fromASN1Params(UnspecifiedType $params = null) { if (!isset($params)) { throw new \UnexpectedValueException("No parameters."); } $key_bits = 32; // rfc2268 a choice containing only IV if ($params->isType(Element::TYPE_OCTET_STRING)) { $iv = $params->asOctetString()->string(); } else { $seq = $params->asSequence(); $idx = 0; // version is optional in rfc2898 if ($seq->has($idx, Element::TYPE_INTEGER)) { $version = $seq->at($idx++)->asInteger()->number(); $key_bits = self::_versionToEKB($version); } // IV is present in all variants $iv = $seq->at($idx)->asOctetString()->string(); } return new self($key_bits, $iv); }