/** * Removes padding @a padding_type from @a text * If the function detects that the text was not padded, it will return it unmodified * * @param return_value Result, possibly unpadded * @param text Message to be unpadded * @param mode Encryption mode; unpadding is applied only in CBC or ECB mode * @param block_size Cipher block size * @param padding_type Padding scheme */ PHP_METHOD(Phalcon_Crypt, _cryptUnpadText) { unsigned char _14, _16; zephir_nts_static zephir_fcall_cache_entry *_6 = NULL, *_9 = NULL, *_11 = NULL; zend_bool _0, _1, _2, _13, _15; long length; int blockSize, paddingType, i, paddingSize = 0, ord, ZEPHIR_LAST_CALL_STATUS; zval *text_param = NULL, *mode_param = NULL, *blockSize_param = NULL, *paddingType_param = NULL, *padding = NULL, *last = NULL, _3 = zval_used_for_init, _4 = zval_used_for_init, *_5 = NULL, _7 = zval_used_for_init, *_8 = NULL, *_10 = NULL, *_12 = NULL; zval *text = NULL, *mode = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 4, 0, &text_param, &mode_param, &blockSize_param, &paddingType_param); if (unlikely(Z_TYPE_P(text_param) != IS_STRING && Z_TYPE_P(text_param) != IS_NULL)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'text' must be a string") TSRMLS_CC); RETURN_MM_NULL(); } if (likely(Z_TYPE_P(text_param) == IS_STRING)) { zephir_get_strval(text, text_param); } else { ZEPHIR_INIT_VAR(text); ZVAL_EMPTY_STRING(text); } if (unlikely(Z_TYPE_P(mode_param) != IS_STRING && Z_TYPE_P(mode_param) != IS_NULL)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'mode' must be a string") TSRMLS_CC); RETURN_MM_NULL(); } if (likely(Z_TYPE_P(mode_param) == IS_STRING)) { zephir_get_strval(mode, mode_param); } else { ZEPHIR_INIT_VAR(mode); ZVAL_EMPTY_STRING(mode); } if (unlikely(Z_TYPE_P(blockSize_param) != IS_LONG)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'blockSize' must be a long/integer") TSRMLS_CC); RETURN_MM_NULL(); } blockSize = Z_LVAL_P(blockSize_param); if (unlikely(Z_TYPE_P(paddingType_param) != IS_LONG)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'paddingType' must be a long/integer") TSRMLS_CC); RETURN_MM_NULL(); } paddingType = Z_LVAL_P(paddingType_param); length = zephir_fast_strlen_ev(text); _0 = length > 0; if (_0) { _0 = (zephir_safe_mod_long_long(length, blockSize TSRMLS_CC) == 0); } _1 = _0; if (_1) { _2 = ZEPHIR_IS_STRING(mode, "cbc"); if (!(_2)) { _2 = ZEPHIR_IS_STRING(mode, "ecb"); } _1 = _2; } if (_1) { do { if (paddingType == 1) { ZEPHIR_SINIT_VAR(_3); ZVAL_LONG(&_3, (length - 1)); ZEPHIR_SINIT_VAR(_4); ZVAL_LONG(&_4, 1); ZEPHIR_INIT_VAR(last); zephir_substr(last, text, zephir_get_intval(&_3), 1 , 0); ZEPHIR_CALL_FUNCTION(&_5, "ord", &_6, last); zephir_check_call_status(); ord = zephir_get_intval(_5); if (ord <= blockSize) { paddingSize = ord; ZEPHIR_SINIT_VAR(_7); ZVAL_LONG(&_7, 0); ZEPHIR_CALL_FUNCTION(&_8, "chr", &_9, &_7); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_7); ZVAL_LONG(&_7, (paddingSize - 1)); ZEPHIR_CALL_FUNCTION(&_10, "str_repeat", &_11, _8, &_7); zephir_check_call_status(); ZEPHIR_INIT_VAR(padding); ZEPHIR_CONCAT_VV(padding, _10, last); ZEPHIR_SINIT_NVAR(_7); ZVAL_LONG(&_7, (length - paddingSize)); ZEPHIR_INIT_VAR(_12); zephir_substr(_12, text, zephir_get_intval(&_7), 0, ZEPHIR_SUBSTR_NO_LENGTH); if (!ZEPHIR_IS_EQUAL(_12, padding)) { paddingSize = 0; } } break; } if (paddingType == 2) { ZEPHIR_SINIT_NVAR(_3); ZVAL_LONG(&_3, (length - 1)); ZEPHIR_SINIT_NVAR(_4); ZVAL_LONG(&_4, 1); ZEPHIR_INIT_NVAR(last); zephir_substr(last, text, zephir_get_intval(&_3), 1 , 0); ZEPHIR_CALL_FUNCTION(&_5, "ord", &_6, last); zephir_check_call_status(); ord = zephir_get_intval(_5); if (ord <= blockSize) { paddingSize = ord; ZEPHIR_SINIT_NVAR(_7); ZVAL_LONG(&_7, paddingSize); ZEPHIR_CALL_FUNCTION(&_8, "chr", &_9, &_7); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_7); ZVAL_LONG(&_7, paddingSize); ZEPHIR_CALL_FUNCTION(&padding, "str_repeat", &_11, _8, &_7); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_7); ZVAL_LONG(&_7, (length - paddingSize)); ZEPHIR_INIT_NVAR(_12); zephir_substr(_12, text, zephir_get_intval(&_7), 0, ZEPHIR_SUBSTR_NO_LENGTH); if (!ZEPHIR_IS_EQUAL(_12, padding)) { paddingSize = 0; } } break; } if (paddingType == 3) { ZEPHIR_SINIT_NVAR(_3); ZVAL_LONG(&_3, (length - 1)); ZEPHIR_SINIT_NVAR(_4); ZVAL_LONG(&_4, 1); ZEPHIR_INIT_NVAR(last); zephir_substr(last, text, zephir_get_intval(&_3), 1 , 0); ZEPHIR_CALL_FUNCTION(&_5, "ord", &_6, last); zephir_check_call_status(); paddingSize = zephir_get_intval(_5); break; } if (paddingType == 4) { i = (length - 1); while (1) { _13 = i > 0; if (_13) { _14 = ZEPHIR_STRING_OFFSET(text, i); _13 = _14 == 0x00; } _15 = _13; if (_15) { _15 = paddingSize < blockSize; } if (!(_15)) { break; } paddingSize++; i--; } _16 = ZEPHIR_STRING_OFFSET(text, i); if (_16 == 0x80) { paddingSize++; } else { paddingSize = 0; } break; } if (paddingType == 5) { i = (length - 1); while (1) { _13 = i >= 0; if (_13) { _14 = ZEPHIR_STRING_OFFSET(text, i); _13 = _14 == 0x00; } _15 = _13; if (_15) { _15 = paddingSize <= blockSize; } if (!(_15)) { break; } paddingSize++; i--; } break; } if (paddingType == 6) { i = (length - 1); while (1) { _13 = i >= 0; if (_13) { _14 = ZEPHIR_STRING_OFFSET(text, i); _13 = _14 == 0x20; } _15 = _13; if (_15) { _15 = paddingSize <= blockSize; } if (!(_15)) { break; } paddingSize++; i--; } break; } break; } while(0); _13 = (paddingSize) ? 1 : 0; if (_13) { _13 = paddingSize <= blockSize; } if (_13) { if (paddingSize < length) { ZEPHIR_SINIT_NVAR(_3); ZVAL_LONG(&_3, 0); ZEPHIR_SINIT_NVAR(_4); ZVAL_LONG(&_4, (length - paddingSize)); zephir_substr(return_value, text, 0 , zephir_get_intval(&_4), 0); RETURN_MM(); } else { RETURN_MM_STRING("", 1); } } else { paddingSize = 0; } } if (!(paddingSize)) { RETURN_CTOR(text); } ZEPHIR_MM_RESTORE(); }
/** * Returns a slice of the resultset to show in the pagination */ PHP_METHOD(Phalcon_Paginator_Adapter_Model, getPaginate) { zephir_fcall_cache_entry *_5 = NULL, *_6 = NULL; int pageNumber, show, n, start, lastShowPage, i, next, totalPages, before, ZEPHIR_LAST_CALL_STATUS; zval *config, *items, *pageItems, *page, *_0, *_1, *_2 = NULL, *_3 = NULL, *_4 = NULL, *_7; ZEPHIR_MM_GROW(); ZEPHIR_OBS_VAR(_0); zephir_read_property_this(&_0, this_ptr, SL("_limitRows"), PH_NOISY_CC); show = zephir_get_intval(_0); ZEPHIR_OBS_VAR(config); zephir_read_property_this(&config, this_ptr, SL("_config"), PH_NOISY_CC); ZEPHIR_OBS_VAR(items); zephir_array_fetch_string(&items, config, SL("data"), PH_NOISY, "phalcon/paginator/adapter/model.zep", 80 TSRMLS_CC); ZEPHIR_OBS_VAR(_1); zephir_read_property_this(&_1, this_ptr, SL("_page"), PH_NOISY_CC); pageNumber = zephir_get_intval(_1); if (Z_TYPE_P(items) != IS_OBJECT) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_paginator_exception_ce, "Invalid data for paginator", "phalcon/paginator/adapter/model.zep", 84); return; } if (pageNumber <= 0) { pageNumber = 1; } if (show <= 0) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_paginator_exception_ce, "The start page number is zero or less", "phalcon/paginator/adapter/model.zep", 94); return; } n = zephir_fast_count_int(items TSRMLS_CC); lastShowPage = (pageNumber - 1); start = (show * lastShowPage); ZEPHIR_INIT_VAR(pageItems); array_init(pageItems); if (zephir_safe_mod_long_long(n, show TSRMLS_CC) != 0) { totalPages = (int) ((zephir_safe_div_long_long(n, show TSRMLS_CC) + (double) (1))); } else { totalPages = (int) (zephir_safe_div_long_long(n, show TSRMLS_CC)); } if (n > 0) { if (start <= n) { ZEPHIR_INIT_VAR(_2); ZVAL_LONG(_2, start); ZEPHIR_CALL_METHOD(NULL, items, "seek", NULL, _2); zephir_check_call_status(); } else { ZEPHIR_INIT_NVAR(_2); ZVAL_LONG(_2, 0); ZEPHIR_CALL_METHOD(NULL, items, "seek", NULL, _2); zephir_check_call_status(); pageNumber = 1; } i = 1; while (1) { ZEPHIR_CALL_METHOD(&_3, items, "valid", NULL); zephir_check_call_status(); if (!(zephir_is_true(_3))) { break; } ZEPHIR_CALL_METHOD(&_4, items, "current", &_5); zephir_check_call_status(); zephir_array_append(&pageItems, _4, PH_SEPARATE, "phalcon/paginator/adapter/model.zep", 121); if (i >= show) { break; } i++; ZEPHIR_CALL_METHOD(NULL, items, "next", &_6); zephir_check_call_status(); } } next = (pageNumber + 1); if (next > totalPages) { next = totalPages; } if (pageNumber > 1) { before = (pageNumber - 1); } else { before = 1; } ZEPHIR_INIT_VAR(page); object_init(page); zephir_update_property_zval(page, SL("items"), pageItems TSRMLS_CC); ZEPHIR_INIT_ZVAL_NREF(_7); ZVAL_LONG(_7, 1); zephir_update_property_zval(page, SL("first"), _7 TSRMLS_CC); ZEPHIR_INIT_ZVAL_NREF(_7); ZVAL_LONG(_7, before); zephir_update_property_zval(page, SL("before"), _7 TSRMLS_CC); ZEPHIR_INIT_ZVAL_NREF(_7); ZVAL_LONG(_7, pageNumber); zephir_update_property_zval(page, SL("current"), _7 TSRMLS_CC); ZEPHIR_INIT_ZVAL_NREF(_7); ZVAL_LONG(_7, totalPages); zephir_update_property_zval(page, SL("last"), _7 TSRMLS_CC); ZEPHIR_INIT_ZVAL_NREF(_7); ZVAL_LONG(_7, next); zephir_update_property_zval(page, SL("next"), _7 TSRMLS_CC); ZEPHIR_INIT_ZVAL_NREF(_7); ZVAL_LONG(_7, totalPages); zephir_update_property_zval(page, SL("total_pages"), _7 TSRMLS_CC); ZEPHIR_INIT_ZVAL_NREF(_7); ZVAL_LONG(_7, n); zephir_update_property_zval(page, SL("total_items"), _7 TSRMLS_CC); _7 = zephir_fetch_nproperty_this(this_ptr, SL("_limitRows"), PH_NOISY_CC); zephir_update_property_zval(page, SL("limit"), _7 TSRMLS_CC); RETURN_CCTOR(page); }
PHP_METHOD(Test_Quantum, harmos) { zend_bool _13, _16, _32, _35; zval *_10 = NULL, *_11 = NULL, *_12 = NULL; zephir_fcall_cache_entry *_4 = NULL, *_6 = NULL, *_8 = NULL, *_36 = NULL; int i, j, n, ZEPHIR_LAST_CALL_STATUS, _14, _15, _17, _18, _33, _34; zval *x_param = NULL, *psr, *psi, *p2, *v, *paramater, *fp = NULL, *tmp, *_0 = NULL, _1 = zval_used_for_init, _2 = zval_used_for_init, *_3 = NULL, *_5 = NULL, *_7 = NULL, *_9 = NULL, *_19, *_20, *_21, *_22, *_23, *_24, *_25, *_26, _27 = zval_used_for_init, *_28, *_29, *_30, *_31; double x, dt, dx, k0, item_psr, item_psi; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &x_param); x = zephir_get_doubleval(x_param); dx = 0.02; k0 = (3.0 * 3.14159265358979323846); dt = zephir_safe_div_double_long((dx * dx), 4.0 TSRMLS_CC); ZEPHIR_INIT_VAR(paramater); zephir_create_array(paramater, 4, 0 TSRMLS_CC); ZEPHIR_INIT_VAR(_0); ZVAL_DOUBLE(_0, dx); zephir_array_fast_append(paramater, _0); ZEPHIR_INIT_NVAR(_0); ZVAL_DOUBLE(_0, k0); zephir_array_fast_append(paramater, _0); ZEPHIR_INIT_NVAR(_0); ZVAL_DOUBLE(_0, dt); zephir_array_fast_append(paramater, _0); ZEPHIR_INIT_NVAR(_0); ZVAL_DOUBLE(_0, x); zephir_array_fast_append(paramater, _0); i = 0; ZEPHIR_INIT_VAR(psr); array_init(psr); ZEPHIR_INIT_VAR(psi); array_init(psi); ZEPHIR_INIT_VAR(p2); array_init(p2); ZEPHIR_INIT_VAR(v); array_init(v); ZEPHIR_SINIT_VAR(_1); ZVAL_STRING(&_1, "harmos.txt", 0); ZEPHIR_SINIT_VAR(_2); ZVAL_STRING(&_2, "w", 0); ZEPHIR_CALL_FUNCTION(&fp, "fopen", NULL, 30, &_1, &_2); zephir_check_call_status(); if (!(zephir_is_true(fp))) { RETURN_MM_LONG(1); } while (1) { if (!(i <= 751)) { break; } ZEPHIR_SINIT_NVAR(_1); ZVAL_DOUBLE(&_1, (k0 * x)); ZEPHIR_CALL_FUNCTION(&_3, "sin", &_4, 10, &_1); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_1); ZVAL_DOUBLE(&_1, ((x * x) * 2.0)); ZEPHIR_CALL_FUNCTION(&_5, "exp", &_6, 1, &_1); zephir_check_call_status(); ZEPHIR_INIT_LNVAR(_7); div_function(_7, _3, _5 TSRMLS_CC); item_psi = zephir_get_numberval(_7); ZEPHIR_SINIT_NVAR(_1); ZVAL_DOUBLE(&_1, (k0 * x)); ZEPHIR_CALL_FUNCTION(&_3, "cos", &_8, 11, &_1); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_1); ZVAL_DOUBLE(&_1, ((x * x) * 2.0)); ZEPHIR_CALL_FUNCTION(&_5, "exp", &_6, 1, &_1); zephir_check_call_status(); ZEPHIR_INIT_LNVAR(_9); div_function(_9, _3, _5 TSRMLS_CC); item_psr = zephir_get_numberval(_9); ZEPHIR_INIT_NVAR(_10); zephir_create_array(_10, 1, 0 TSRMLS_CC); ZEPHIR_INIT_NVAR(_0); ZVAL_DOUBLE(_0, item_psr); zephir_array_fast_append(_10, _0); zephir_array_update_long(&psr, i, &_10, PH_COPY | PH_SEPARATE, "test/quantum.zep", 39); ZEPHIR_INIT_NVAR(_11); zephir_create_array(_11, 1, 0 TSRMLS_CC); ZEPHIR_INIT_NVAR(_0); ZVAL_DOUBLE(_0, item_psi); zephir_array_fast_append(_11, _0); zephir_array_update_long(&psi, i, &_11, PH_COPY | PH_SEPARATE, "test/quantum.zep", 40); ZEPHIR_INIT_NVAR(_12); zephir_create_array(_12, 1, 0 TSRMLS_CC); ZEPHIR_INIT_NVAR(_0); ZVAL_DOUBLE(_0, (double) ((double) (5.0 * x) * x)); zephir_array_fast_append(_12, _0); zephir_array_update_long(&v, i, &_12, PH_COPY | PH_SEPARATE, "test/quantum.zep", 41); x = (x + dx); i++; } i = 1; j = 1; ZEPHIR_INIT_VAR(tmp); zephir_create_array(tmp, 1, 0 TSRMLS_CC); ZEPHIR_INIT_NVAR(_0); ZVAL_DOUBLE(_0, 2.0); zephir_array_fast_append(tmp, _0); _15 = 20000; _14 = 0; _13 = 0; if (_14 <= _15) { while (1) { if (_13) { _14++; if (!(_14 <= _15)) { break; } } else { _13 = 1; } n = _14; _18 = (751 - 1); _17 = 1; _16 = 0; if (_17 <= _18) { while (1) { if (_16) { _17++; if (!(_17 <= _18)) { break; } } else { _16 = 1; } i = _17; zephir_array_fetch_long(&_19, psr, i, PH_NOISY | PH_READONLY, "test/quantum.zep", 50 TSRMLS_CC); zephir_array_fetch_long(&_20, _19, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 50 TSRMLS_CC); zephir_array_fetch_long(&_21, paramater, 2, PH_NOISY | PH_READONLY, "test/quantum.zep", 50 TSRMLS_CC); zephir_array_fetch_long(&_22, psi, (i + 1), PH_NOISY | PH_READONLY, "test/quantum.zep", 50 TSRMLS_CC); zephir_array_fetch_long(&_23, _22, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 50 TSRMLS_CC); zephir_array_fetch_long(&_24, psi, (i - 1), PH_NOISY | PH_READONLY, "test/quantum.zep", 50 TSRMLS_CC); zephir_array_fetch_long(&_25, _24, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 51 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_1); zephir_add_function_ex(&_1, _23, _25 TSRMLS_CC); zephir_array_fetch_long(&_23, tmp, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 51 TSRMLS_CC); zephir_array_fetch_long(&_25, psi, i, PH_NOISY | PH_READONLY, "test/quantum.zep", 51 TSRMLS_CC); zephir_array_fetch_long(&_26, _25, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 51 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_2); mul_function(&_2, _23, _26 TSRMLS_CC); ZEPHIR_INIT_LNVAR(_7); sub_function(_7, &_1, &_2 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_1); mul_function(&_1, _21, _7 TSRMLS_CC); zephir_array_fetch_long(&_21, paramater, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 51 TSRMLS_CC); zephir_array_fetch_long(&_23, paramater, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 51 TSRMLS_CC); ZEPHIR_INIT_LNVAR(_7); mul_function(_7, _21, _23 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_2); div_function(&_2, &_1, _7 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_1); sub_function(&_1, _20, &_2 TSRMLS_CC); zephir_array_fetch_long(&_20, paramater, 2, PH_NOISY | PH_READONLY, "test/quantum.zep", 51 TSRMLS_CC); zephir_array_fetch_long(&_21, v, i, PH_NOISY | PH_READONLY, "test/quantum.zep", 51 TSRMLS_CC); zephir_array_fetch_long(&_23, _21, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 51 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_2); mul_function(&_2, _20, _23 TSRMLS_CC); zephir_array_fetch_long(&_20, psi, i, PH_NOISY | PH_READONLY, "test/quantum.zep", 51 TSRMLS_CC); zephir_array_fetch_long(&_23, _20, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 51 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_27); mul_function(&_27, &_2, _23 TSRMLS_CC); ZEPHIR_INIT_LNVAR(_7); zephir_add_function_ex(_7, &_1, &_27 TSRMLS_CC); zephir_array_update_multi(&psr, &_7 TSRMLS_CC, SL("ll"), 2, i, 1); zephir_array_fetch_long(&_23, psr, i, PH_NOISY | PH_READONLY, "test/quantum.zep", 53 TSRMLS_CC); zephir_array_fetch_long(&_26, _23, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 53 TSRMLS_CC); zephir_array_fetch_long(&_28, psr, i, PH_NOISY | PH_READONLY, "test/quantum.zep", 53 TSRMLS_CC); zephir_array_fetch_long(&_29, _28, 1, PH_NOISY | PH_READONLY, "test/quantum.zep", 53 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_1); mul_function(&_1, _26, _29 TSRMLS_CC); zephir_array_fetch_long(&_26, psi, i, PH_NOISY | PH_READONLY, "test/quantum.zep", 53 TSRMLS_CC); zephir_array_fetch_long(&_29, _26, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 53 TSRMLS_CC); zephir_array_fetch_long(&_30, psi, i, PH_NOISY | PH_READONLY, "test/quantum.zep", 53 TSRMLS_CC); zephir_array_fetch_long(&_31, _30, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 53 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_2); mul_function(&_2, _29, _31 TSRMLS_CC); ZEPHIR_INIT_LNVAR(_7); zephir_add_function_ex(_7, &_1, &_2 TSRMLS_CC); zephir_array_update_long(&p2, i, &_7, PH_COPY | PH_SEPARATE, "test/quantum.zep", 53); } } _34 = (751 - 1); _33 = 1; _32 = 0; if (_33 <= _34) { while (1) { if (_32) { _33++; if (!(_33 <= _34)) { break; } } else { _32 = 1; } j = _33; ZEPHIR_INIT_NVAR(_0); ZVAL_LONG(_0, 0); zephir_array_update_multi(&psr, &_0 TSRMLS_CC, SL("ll"), 2, 0, 1); ZEPHIR_INIT_NVAR(_0); ZVAL_LONG(_0, 0); zephir_array_update_multi(&psr, &_0 TSRMLS_CC, SL("ll"), 2, 751, 1); zephir_array_fetch_long(&_19, psi, j, PH_NOISY | PH_READONLY, "test/quantum.zep", 58 TSRMLS_CC); zephir_array_fetch_long(&_20, _19, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 58 TSRMLS_CC); zephir_array_fetch_long(&_21, paramater, 2, PH_NOISY | PH_READONLY, "test/quantum.zep", 58 TSRMLS_CC); zephir_array_fetch_long(&_22, psr, (j + 1), PH_NOISY | PH_READONLY, "test/quantum.zep", 58 TSRMLS_CC); zephir_array_fetch_long(&_23, _22, 1, PH_NOISY | PH_READONLY, "test/quantum.zep", 58 TSRMLS_CC); zephir_array_fetch_long(&_24, psr, (j - 1), PH_NOISY | PH_READONLY, "test/quantum.zep", 58 TSRMLS_CC); zephir_array_fetch_long(&_25, _24, 1, PH_NOISY | PH_READONLY, "test/quantum.zep", 59 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_1); zephir_add_function_ex(&_1, _23, _25 TSRMLS_CC); zephir_array_fetch_long(&_23, tmp, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 59 TSRMLS_CC); zephir_array_fetch_long(&_25, psr, j, PH_NOISY | PH_READONLY, "test/quantum.zep", 59 TSRMLS_CC); zephir_array_fetch_long(&_26, _25, 1, PH_NOISY | PH_READONLY, "test/quantum.zep", 59 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_2); mul_function(&_2, _23, _26 TSRMLS_CC); ZEPHIR_INIT_LNVAR(_9); sub_function(_9, &_1, &_2 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_1); mul_function(&_1, _21, _9 TSRMLS_CC); zephir_array_fetch_long(&_21, paramater, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 59 TSRMLS_CC); zephir_array_fetch_long(&_23, paramater, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 59 TSRMLS_CC); ZEPHIR_INIT_LNVAR(_9); mul_function(_9, _21, _23 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_2); div_function(&_2, &_1, _9 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_1); zephir_add_function_ex(&_1, _20, &_2 TSRMLS_CC); zephir_array_fetch_long(&_20, paramater, 2, PH_NOISY | PH_READONLY, "test/quantum.zep", 59 TSRMLS_CC); zephir_array_fetch_long(&_21, v, j, PH_NOISY | PH_READONLY, "test/quantum.zep", 59 TSRMLS_CC); zephir_array_fetch_long(&_23, _21, 0, PH_NOISY | PH_READONLY, "test/quantum.zep", 59 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_2); mul_function(&_2, _20, _23 TSRMLS_CC); zephir_array_fetch_long(&_20, psr, j, PH_NOISY | PH_READONLY, "test/quantum.zep", 59 TSRMLS_CC); zephir_array_fetch_long(&_23, _20, 1, PH_NOISY | PH_READONLY, "test/quantum.zep", 59 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_27); mul_function(&_27, &_2, _23 TSRMLS_CC); ZEPHIR_INIT_LNVAR(_9); sub_function(_9, &_1, &_27 TSRMLS_CC); zephir_array_update_multi(&psi, &_9 TSRMLS_CC, SL("ll"), 2, j, 1); } } _35 = n == 0; if (!(_35)) { _35 = zephir_safe_mod_long_long(n, 2000 TSRMLS_CC) == 0; } if (_35) { i = 1; while (1) { if (!(i < (751 - 1))) { break; } zephir_array_fetch_long(&_19, p2, i, PH_NOISY | PH_READONLY, "test/quantum.zep", 67 TSRMLS_CC); ZEPHIR_SINIT_NVAR(_1); ZVAL_STRING(&_1, "%16.8lf %16.8lf %16.8lf \n", 0); ZEPHIR_SINIT_NVAR(_2); ZVAL_DOUBLE(&_2, ((double) i * dx)); ZEPHIR_SINIT_NVAR(_27); ZVAL_DOUBLE(&_27, ((double) n * dt)); ZEPHIR_CALL_FUNCTION(NULL, "fprintf", &_36, 57, fp, &_1, &_2, &_27, _19); zephir_check_call_status(); i = (i + 10); } ZEPHIR_SINIT_NVAR(_1); ZVAL_STRING(&_1, "\n", 0); ZEPHIR_CALL_FUNCTION(NULL, "fprintf", &_36, 57, fp, &_1); zephir_check_call_status(); } j = 1; while (1) { if (!(j < (751 - 1))) { break; } zephir_array_fetch_long(&_19, psi, j, PH_NOISY | PH_READONLY, "test/quantum.zep", 76 TSRMLS_CC); zephir_array_fetch_long(&_20, _19, 1, PH_NOISY | PH_READONLY, "test/quantum.zep", 76 TSRMLS_CC); zephir_array_update_multi(&psi, &_20 TSRMLS_CC, SL("ll"), 2, j, 0); zephir_array_fetch_long(&_20, psr, j, PH_NOISY | PH_READONLY, "test/quantum.zep", 77 TSRMLS_CC); zephir_array_fetch_long(&_21, _20, 1, PH_NOISY | PH_READONLY, "test/quantum.zep", 77 TSRMLS_CC); zephir_array_update_multi(&psr, &_21 TSRMLS_CC, SL("ll"), 2, j, 0); j++; } } } RETURN_MM_BOOL(1); }
/** * Adds padding @a padding_type to @a text * * @param return_value Result, possibly padded * @param text Message to be padded * @param mode Encryption mode; padding is applied only in CBC or ECB mode * @param block_size Cipher block size * @param padding_type Padding scheme * @see http://www.di-mgt.com.au/cryptopad.html */ PHP_METHOD(Phalcon_Crypt, _cryptPadText) { zephir_nts_static zephir_fcall_cache_entry *_3 = NULL, *_5 = NULL, *_10 = NULL; zend_bool _0, _7; int blockSize, paddingType, i, paddingSize = 0, ZEPHIR_LAST_CALL_STATUS, _8, _9; zval *text_param = NULL, *mode_param = NULL, *blockSize_param = NULL, *paddingType_param = NULL, *padding = NULL, _1 = zval_used_for_init, *_2 = NULL, *_4 = NULL, *_6 = NULL, _11 = zval_used_for_init, *_12; zval *text = NULL, *mode = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 4, 0, &text_param, &mode_param, &blockSize_param, &paddingType_param); if (unlikely(Z_TYPE_P(text_param) != IS_STRING && Z_TYPE_P(text_param) != IS_NULL)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'text' must be a string") TSRMLS_CC); RETURN_MM_NULL(); } if (likely(Z_TYPE_P(text_param) == IS_STRING)) { zephir_get_strval(text, text_param); } else { ZEPHIR_INIT_VAR(text); ZVAL_EMPTY_STRING(text); } if (unlikely(Z_TYPE_P(mode_param) != IS_STRING && Z_TYPE_P(mode_param) != IS_NULL)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'mode' must be a string") TSRMLS_CC); RETURN_MM_NULL(); } if (likely(Z_TYPE_P(mode_param) == IS_STRING)) { zephir_get_strval(mode, mode_param); } else { ZEPHIR_INIT_VAR(mode); ZVAL_EMPTY_STRING(mode); } if (unlikely(Z_TYPE_P(blockSize_param) != IS_LONG)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'blockSize' must be a long/integer") TSRMLS_CC); RETURN_MM_NULL(); } blockSize = Z_LVAL_P(blockSize_param); if (unlikely(Z_TYPE_P(paddingType_param) != IS_LONG)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'paddingType' must be a long/integer") TSRMLS_CC); RETURN_MM_NULL(); } paddingType = Z_LVAL_P(paddingType_param); ZEPHIR_INIT_VAR(padding); ZVAL_NULL(padding); _0 = ZEPHIR_IS_STRING(mode, "cbc"); if (!(_0)) { _0 = ZEPHIR_IS_STRING(mode, "ecb"); } if (_0) { paddingSize = (blockSize - (zephir_safe_mod_long_long(zephir_fast_strlen_ev(text), blockSize TSRMLS_CC))); if (paddingSize >= 256) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_crypt_exception_ce, "Block size is bigger than 256", "phalcon/crypt.zep", 147); return; } do { if (paddingType == 1) { ZEPHIR_SINIT_VAR(_1); ZVAL_LONG(&_1, 0); ZEPHIR_CALL_FUNCTION(&_2, "chr", &_3, &_1); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_1); ZVAL_LONG(&_1, (paddingSize - 1)); ZEPHIR_CALL_FUNCTION(&_4, "str_repeat", &_5, _2, &_1); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_1); ZVAL_LONG(&_1, paddingSize); ZEPHIR_CALL_FUNCTION(&_6, "chr", &_3, &_1); zephir_check_call_status(); ZEPHIR_INIT_NVAR(padding); ZEPHIR_CONCAT_VV(padding, _4, _6); break; } if (paddingType == 2) { ZEPHIR_SINIT_NVAR(_1); ZVAL_LONG(&_1, paddingSize); ZEPHIR_CALL_FUNCTION(&_2, "chr", &_3, &_1); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_1); ZVAL_LONG(&_1, paddingSize); ZEPHIR_CALL_FUNCTION(&padding, "str_repeat", &_5, _2, &_1); zephir_check_call_status(); break; } if (paddingType == 3) { ZEPHIR_INIT_NVAR(padding); ZVAL_STRING(padding, "", 1); _9 = (paddingSize - 2); _8 = 0; _7 = 0; if (_8 <= _9) { while (1) { if (_7) { _8++; if (!(_8 <= _9)) { break; } } else { _7 = 1; } i = _8; ZEPHIR_CALL_FUNCTION(&_2, "rand", &_10); zephir_check_call_status(); ZEPHIR_CALL_FUNCTION(&_4, "chr", &_3, _2); zephir_check_call_status(); zephir_concat_self(&padding, _4 TSRMLS_CC); } } ZEPHIR_SINIT_NVAR(_1); ZVAL_LONG(&_1, paddingSize); ZEPHIR_CALL_FUNCTION(&_6, "chr", &_3, &_1); zephir_check_call_status(); zephir_concat_self(&padding, _6 TSRMLS_CC); break; } if (paddingType == 4) { ZEPHIR_SINIT_NVAR(_1); ZVAL_LONG(&_1, 0x80); ZEPHIR_CALL_FUNCTION(&_2, "chr", &_3, &_1); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_1); ZVAL_LONG(&_1, 0); ZEPHIR_CALL_FUNCTION(&_4, "chr", &_3, &_1); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_1); ZVAL_LONG(&_1, (paddingSize - 1)); ZEPHIR_CALL_FUNCTION(&_6, "str_repeat", &_5, _4, &_1); zephir_check_call_status(); ZEPHIR_INIT_NVAR(padding); ZEPHIR_CONCAT_VV(padding, _2, _6); break; } if (paddingType == 5) { ZEPHIR_SINIT_NVAR(_1); ZVAL_LONG(&_1, 0); ZEPHIR_CALL_FUNCTION(&_2, "chr", &_3, &_1); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_1); ZVAL_LONG(&_1, paddingSize); ZEPHIR_CALL_FUNCTION(&padding, "str_repeat", &_5, _2, &_1); zephir_check_call_status(); break; } if (paddingType == 6) { ZEPHIR_SINIT_NVAR(_1); ZVAL_STRING(&_1, " ", 0); ZEPHIR_SINIT_VAR(_11); ZVAL_LONG(&_11, paddingSize); ZEPHIR_CALL_FUNCTION(&padding, "str_repeat", &_5, &_1, &_11); zephir_check_call_status(); break; } paddingSize = 0; break; } while(0); } if (!(paddingSize)) { RETURN_CTOR(text); } if (paddingSize > blockSize) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_crypt_exception_ce, "Invalid padding size", "phalcon/crypt.zep", 191); return; } ZEPHIR_SINIT_NVAR(_1); ZVAL_LONG(&_1, 0); ZEPHIR_SINIT_NVAR(_11); ZVAL_LONG(&_11, paddingSize); ZEPHIR_INIT_VAR(_12); zephir_substr(_12, padding, 0 , zephir_get_intval(&_11), 0); ZEPHIR_CONCAT_VV(return_value, text, _12); RETURN_MM(); }
/** * Removes padding @a padding_type from @a text * If the function detects that the text was not padded, it will return it unmodified * * @param string text Message to be unpadded * @param string mode Encryption mode; unpadding is applied only in CBC or ECB mode * @param int blockSize Cipher block size * @param int paddingType Padding scheme */ PHP_METHOD(Phalcon_Crypt, _cryptUnpadText) { unsigned char _23$$11, _25$$11, _27$$15, _30$$17; zend_bool _0, _1, _2, _22$$11, _24$$11, _26$$15, _28$$15, _29$$17, _31$$17, _32$$3; long length = 0; zephir_fcall_cache_entry *_6 = NULL, *_9 = NULL, *_11 = NULL; int blockSize, paddingType, ZEPHIR_LAST_CALL_STATUS, i = 0, paddingSize, ord = 0; zval *text_param = NULL, *mode_param = NULL, *blockSize_param = NULL, *paddingType_param = NULL, *padding = NULL, *last = NULL, _3$$4, _4$$4, *_5$$4 = NULL, _7$$5 = zval_used_for_init, *_8$$5 = NULL, *_10$$5 = NULL, *_12$$5, _13$$7, _14$$7, *_15$$7 = NULL, _16$$8 = zval_used_for_init, *_17$$8 = NULL, *_18$$8, _19$$10, _20$$10, *_21$$10 = NULL, _33$$21, _34$$21; zval *text = NULL, *mode = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 4, 0, &text_param, &mode_param, &blockSize_param, &paddingType_param); zephir_get_strval(text, text_param); if (unlikely(Z_TYPE_P(mode_param) != IS_STRING && Z_TYPE_P(mode_param) != IS_NULL)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'mode' must be a string") TSRMLS_CC); RETURN_MM_NULL(); } if (likely(Z_TYPE_P(mode_param) == IS_STRING)) { zephir_get_strval(mode, mode_param); } else { ZEPHIR_INIT_VAR(mode); ZVAL_EMPTY_STRING(mode); } if (unlikely(Z_TYPE_P(blockSize_param) != IS_LONG)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'blockSize' must be a int") TSRMLS_CC); RETURN_MM_NULL(); } blockSize = Z_LVAL_P(blockSize_param); if (unlikely(Z_TYPE_P(paddingType_param) != IS_LONG)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'paddingType' must be a int") TSRMLS_CC); RETURN_MM_NULL(); } paddingType = Z_LVAL_P(paddingType_param); paddingSize = 0; length = zephir_fast_strlen_ev(text); _0 = length > 0; if (_0) { _0 = (zephir_safe_mod_long_long(length, blockSize TSRMLS_CC) == 0); } _1 = _0; if (_1) { _2 = ZEPHIR_IS_STRING(mode, "cbc"); if (!(_2)) { _2 = ZEPHIR_IS_STRING(mode, "ecb"); } _1 = _2; } if (_1) { do { if (paddingType == 1) { ZEPHIR_SINIT_VAR(_3$$4); ZVAL_LONG(&_3$$4, (length - 1)); ZEPHIR_SINIT_VAR(_4$$4); ZVAL_LONG(&_4$$4, 1); ZEPHIR_INIT_VAR(last); zephir_substr(last, text, zephir_get_intval(&_3$$4), 1 , 0); ZEPHIR_CALL_FUNCTION(&_5$$4, "ord", &_6, 134, last); zephir_check_call_status(); ord = zephir_get_intval(_5$$4); if (ord <= blockSize) { paddingSize = ord; ZEPHIR_SINIT_VAR(_7$$5); ZVAL_LONG(&_7$$5, 0); ZEPHIR_CALL_FUNCTION(&_8$$5, "chr", &_9, 132, &_7$$5); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_7$$5); ZVAL_LONG(&_7$$5, (paddingSize - 1)); ZEPHIR_CALL_FUNCTION(&_10$$5, "str_repeat", &_11, 133, _8$$5, &_7$$5); zephir_check_call_status(); ZEPHIR_INIT_VAR(padding); ZEPHIR_CONCAT_VV(padding, _10$$5, last); ZEPHIR_SINIT_NVAR(_7$$5); ZVAL_LONG(&_7$$5, (length - paddingSize)); ZEPHIR_INIT_VAR(_12$$5); zephir_substr(_12$$5, text, zephir_get_intval(&_7$$5), 0, ZEPHIR_SUBSTR_NO_LENGTH); if (!ZEPHIR_IS_EQUAL(_12$$5, padding)) { paddingSize = 0; } } break; } if (paddingType == 2) { ZEPHIR_SINIT_VAR(_13$$7); ZVAL_LONG(&_13$$7, (length - 1)); ZEPHIR_SINIT_VAR(_14$$7); ZVAL_LONG(&_14$$7, 1); ZEPHIR_INIT_NVAR(last); zephir_substr(last, text, zephir_get_intval(&_13$$7), 1 , 0); ZEPHIR_CALL_FUNCTION(&_15$$7, "ord", &_6, 134, last); zephir_check_call_status(); ord = zephir_get_intval(_15$$7); if (ord <= blockSize) { paddingSize = ord; ZEPHIR_SINIT_VAR(_16$$8); ZVAL_LONG(&_16$$8, paddingSize); ZEPHIR_CALL_FUNCTION(&_17$$8, "chr", &_9, 132, &_16$$8); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_16$$8); ZVAL_LONG(&_16$$8, paddingSize); ZEPHIR_CALL_FUNCTION(&padding, "str_repeat", &_11, 133, _17$$8, &_16$$8); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_16$$8); ZVAL_LONG(&_16$$8, (length - paddingSize)); ZEPHIR_INIT_VAR(_18$$8); zephir_substr(_18$$8, text, zephir_get_intval(&_16$$8), 0, ZEPHIR_SUBSTR_NO_LENGTH); if (!ZEPHIR_IS_EQUAL(_18$$8, padding)) { paddingSize = 0; } } break; } if (paddingType == 3) { ZEPHIR_SINIT_VAR(_19$$10); ZVAL_LONG(&_19$$10, (length - 1)); ZEPHIR_SINIT_VAR(_20$$10); ZVAL_LONG(&_20$$10, 1); ZEPHIR_INIT_NVAR(last); zephir_substr(last, text, zephir_get_intval(&_19$$10), 1 , 0); ZEPHIR_CALL_FUNCTION(&_21$$10, "ord", &_6, 134, last); zephir_check_call_status(); paddingSize = zephir_get_intval(_21$$10); break; } if (paddingType == 4) { i = (length - 1); while (1) { _22$$11 = i > 0; if (_22$$11) { _23$$11 = ZEPHIR_STRING_OFFSET(text, i); _22$$11 = _23$$11 == 0x00; } _24$$11 = _22$$11; if (_24$$11) { _24$$11 = paddingSize < blockSize; } if (!(_24$$11)) { break; } paddingSize++; i--; } _25$$11 = ZEPHIR_STRING_OFFSET(text, i); if (_25$$11 == 0x80) { paddingSize++; } else { paddingSize = 0; } break; } if (paddingType == 5) { i = (length - 1); while (1) { _26$$15 = i >= 0; if (_26$$15) { _27$$15 = ZEPHIR_STRING_OFFSET(text, i); _26$$15 = _27$$15 == 0x00; } _28$$15 = _26$$15; if (_28$$15) { _28$$15 = paddingSize <= blockSize; } if (!(_28$$15)) { break; } paddingSize++; i--; } break; } if (paddingType == 6) { i = (length - 1); while (1) { _29$$17 = i >= 0; if (_29$$17) { _30$$17 = ZEPHIR_STRING_OFFSET(text, i); _29$$17 = _30$$17 == 0x20; } _31$$17 = _29$$17; if (_31$$17) { _31$$17 = paddingSize <= blockSize; } if (!(_31$$17)) { break; } paddingSize++; i--; } break; } break; } while(0); _32$$3 = (paddingSize) ? 1 : 0; if (_32$$3) { _32$$3 = paddingSize <= blockSize; } if (_32$$3) { if (paddingSize < length) { ZEPHIR_SINIT_VAR(_33$$21); ZVAL_LONG(&_33$$21, 0); ZEPHIR_SINIT_VAR(_34$$21); ZVAL_LONG(&_34$$21, (length - paddingSize)); zephir_substr(return_value, text, 0 , zephir_get_intval(&_34$$21), 0); RETURN_MM(); } RETURN_MM_STRING("", 1); } else { paddingSize = 0; } } if (!(paddingSize)) { RETURN_CTOR(text); } ZEPHIR_MM_RESTORE(); }
/** * Pads texts before encryption * * @see http://www.di-mgt.com.au/cryptopad.html */ PHP_METHOD(Phalcon_Crypt, _cryptPadText) { zend_bool _0, _9$$7; zephir_fcall_cache_entry *_3 = NULL, *_5 = NULL, *_13 = NULL; int blockSize, paddingType, ZEPHIR_LAST_CALL_STATUS, i = 0, paddingSize, _10$$7, _11$$7; zval *text_param = NULL, *mode_param = NULL, *blockSize_param = NULL, *paddingType_param = NULL, *padding = NULL, _25, _26, *_27, _1$$5 = zval_used_for_init, *_2$$5 = NULL, *_4$$5 = NULL, *_6$$5 = NULL, _7$$6 = zval_used_for_init, *_8$$6 = NULL, _15$$7, *_16$$7 = NULL, *_12$$8 = NULL, *_14$$8 = NULL, _17$$9 = zval_used_for_init, *_18$$9 = NULL, *_19$$9 = NULL, *_20$$9 = NULL, _21$$10 = zval_used_for_init, *_22$$10 = NULL, _23$$11, _24$$11; zval *text = NULL, *mode = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 4, 0, &text_param, &mode_param, &blockSize_param, &paddingType_param); zephir_get_strval(text, text_param); if (unlikely(Z_TYPE_P(mode_param) != IS_STRING && Z_TYPE_P(mode_param) != IS_NULL)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'mode' must be a string") TSRMLS_CC); RETURN_MM_NULL(); } if (likely(Z_TYPE_P(mode_param) == IS_STRING)) { zephir_get_strval(mode, mode_param); } else { ZEPHIR_INIT_VAR(mode); ZVAL_EMPTY_STRING(mode); } if (unlikely(Z_TYPE_P(blockSize_param) != IS_LONG)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'blockSize' must be a int") TSRMLS_CC); RETURN_MM_NULL(); } blockSize = Z_LVAL_P(blockSize_param); if (unlikely(Z_TYPE_P(paddingType_param) != IS_LONG)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'paddingType' must be a int") TSRMLS_CC); RETURN_MM_NULL(); } paddingType = Z_LVAL_P(paddingType_param); paddingSize = 0; ZEPHIR_INIT_VAR(padding); ZVAL_NULL(padding); _0 = ZEPHIR_IS_STRING(mode, "cbc"); if (!(_0)) { _0 = ZEPHIR_IS_STRING(mode, "ecb"); } if (_0) { paddingSize = (blockSize - (zephir_safe_mod_long_long(zephir_fast_strlen_ev(text), blockSize TSRMLS_CC))); if (paddingSize >= 256) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_crypt_exception_ce, "Block size is bigger than 256", "phalcon/crypt.zep", 142); return; } do { if (paddingType == 1) { ZEPHIR_SINIT_VAR(_1$$5); ZVAL_LONG(&_1$$5, 0); ZEPHIR_CALL_FUNCTION(&_2$$5, "chr", &_3, 132, &_1$$5); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_1$$5); ZVAL_LONG(&_1$$5, (paddingSize - 1)); ZEPHIR_CALL_FUNCTION(&_4$$5, "str_repeat", &_5, 133, _2$$5, &_1$$5); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_1$$5); ZVAL_LONG(&_1$$5, paddingSize); ZEPHIR_CALL_FUNCTION(&_6$$5, "chr", &_3, 132, &_1$$5); zephir_check_call_status(); ZEPHIR_INIT_NVAR(padding); ZEPHIR_CONCAT_VV(padding, _4$$5, _6$$5); break; } if (paddingType == 2) { ZEPHIR_SINIT_VAR(_7$$6); ZVAL_LONG(&_7$$6, paddingSize); ZEPHIR_CALL_FUNCTION(&_8$$6, "chr", &_3, 132, &_7$$6); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_7$$6); ZVAL_LONG(&_7$$6, paddingSize); ZEPHIR_CALL_FUNCTION(&padding, "str_repeat", &_5, 133, _8$$6, &_7$$6); zephir_check_call_status(); break; } if (paddingType == 3) { ZEPHIR_INIT_NVAR(padding); ZVAL_STRING(padding, "", 1); _11$$7 = (paddingSize - 2); _10$$7 = 0; _9$$7 = 0; if (_10$$7 <= _11$$7) { while (1) { if (_9$$7) { _10$$7++; if (!(_10$$7 <= _11$$7)) { break; } } else { _9$$7 = 1; } i = _10$$7; ZEPHIR_CALL_FUNCTION(&_12$$8, "rand", &_13, 111); zephir_check_call_status(); ZEPHIR_CALL_FUNCTION(&_14$$8, "chr", &_3, 132, _12$$8); zephir_check_call_status(); zephir_concat_self(&padding, _14$$8 TSRMLS_CC); } } ZEPHIR_SINIT_VAR(_15$$7); ZVAL_LONG(&_15$$7, paddingSize); ZEPHIR_CALL_FUNCTION(&_16$$7, "chr", &_3, 132, &_15$$7); zephir_check_call_status(); zephir_concat_self(&padding, _16$$7 TSRMLS_CC); break; } if (paddingType == 4) { ZEPHIR_SINIT_VAR(_17$$9); ZVAL_LONG(&_17$$9, 0x80); ZEPHIR_CALL_FUNCTION(&_18$$9, "chr", &_3, 132, &_17$$9); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_17$$9); ZVAL_LONG(&_17$$9, 0); ZEPHIR_CALL_FUNCTION(&_19$$9, "chr", &_3, 132, &_17$$9); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_17$$9); ZVAL_LONG(&_17$$9, (paddingSize - 1)); ZEPHIR_CALL_FUNCTION(&_20$$9, "str_repeat", &_5, 133, _19$$9, &_17$$9); zephir_check_call_status(); ZEPHIR_INIT_NVAR(padding); ZEPHIR_CONCAT_VV(padding, _18$$9, _20$$9); break; } if (paddingType == 5) { ZEPHIR_SINIT_VAR(_21$$10); ZVAL_LONG(&_21$$10, 0); ZEPHIR_CALL_FUNCTION(&_22$$10, "chr", &_3, 132, &_21$$10); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_21$$10); ZVAL_LONG(&_21$$10, paddingSize); ZEPHIR_CALL_FUNCTION(&padding, "str_repeat", &_5, 133, _22$$10, &_21$$10); zephir_check_call_status(); break; } if (paddingType == 6) { ZEPHIR_SINIT_VAR(_23$$11); ZVAL_STRING(&_23$$11, " ", 0); ZEPHIR_SINIT_VAR(_24$$11); ZVAL_LONG(&_24$$11, paddingSize); ZEPHIR_CALL_FUNCTION(&padding, "str_repeat", &_5, 133, &_23$$11, &_24$$11); zephir_check_call_status(); break; } paddingSize = 0; break; } while(0); } if (!(paddingSize)) { RETURN_CTOR(text); } if (paddingSize > blockSize) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_crypt_exception_ce, "Invalid padding size", "phalcon/crypt.zep", 186); return; } ZEPHIR_SINIT_VAR(_25); ZVAL_LONG(&_25, 0); ZEPHIR_SINIT_VAR(_26); ZVAL_LONG(&_26, paddingSize); ZEPHIR_INIT_VAR(_27); zephir_substr(_27, padding, 0 , zephir_get_intval(&_26), 0); ZEPHIR_CONCAT_VV(return_value, text, _27); RETURN_MM(); }
/** * Decrypt a text that is coded as a base64 string */ PHP_METHOD(Phalcon_Crypt, decryptBase64) { zephir_fcall_cache_entry *_6 = NULL, *_7 = NULL; zend_long ZEPHIR_LAST_CALL_STATUS; zend_bool safe; zval *text_param = NULL, *key = NULL, *safe_param = NULL, _0$$3 = zval_used_for_init, _1$$3 = zval_used_for_init, *_2$$3 = NULL, *_3$$3, *_4$$3, *_5$$3 = NULL, *_8 = NULL; zval *text = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 2, &text_param, &key, &safe_param); if (UNEXPECTED(Z_TYPE_P(text_param) != IS_STRING && Z_TYPE_P(text_param) != IS_NULL)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'text' must be a string") TSRMLS_CC); RETURN_MM_NULL(); } if (EXPECTED(Z_TYPE_P(text_param) == IS_STRING)) { zephir_get_strval(text, text_param); } else { ZEPHIR_INIT_VAR(text); ZVAL_EMPTY_STRING(text); } if (!key) { key = ZEPHIR_GLOBAL(global_null); } if (!safe_param) { safe = 0; } else { if (UNEXPECTED(Z_TYPE_P(safe_param) != IS_BOOL)) { zephir_throw_exception_string(spl_ce_InvalidArgumentException, SL("Parameter 'safe' must be a bool") TSRMLS_CC); RETURN_MM_NULL(); } safe = Z_BVAL_P(safe_param); } if (safe == 1) { ZEPHIR_SINIT_VAR(_0$$3); ZVAL_STRING(&_0$$3, "-_", 0); ZEPHIR_SINIT_VAR(_1$$3); ZVAL_STRING(&_1$$3, "+/", 0); ZEPHIR_CALL_FUNCTION(&_2$$3, "strtr", NULL, 27, text, &_0$$3, &_1$$3); zephir_check_call_status(); ZEPHIR_SINIT_NVAR(_0$$3); ZVAL_STRING(&_0$$3, "===", 0); ZEPHIR_SINIT_NVAR(_1$$3); ZVAL_DOUBLE(&_1$$3, zephir_safe_mod_long_long(((zephir_fast_strlen_ev(text) + 3)), 4 TSRMLS_CC)); ZEPHIR_INIT_VAR(_3$$3); zephir_substr(_3$$3, &_0$$3, zephir_get_intval(&_1$$3), 0, ZEPHIR_SUBSTR_NO_LENGTH); ZEPHIR_INIT_VAR(_4$$3); ZEPHIR_CONCAT_VV(_4$$3, _2$$3, _3$$3); ZEPHIR_CALL_FUNCTION(&_5$$3, "base64_decode", &_6, 133, _4$$3); zephir_check_call_status(); ZEPHIR_RETURN_CALL_METHOD(this_ptr, "decrypt", &_7, 0, _5$$3, key); zephir_check_call_status(); RETURN_MM(); } ZEPHIR_CALL_FUNCTION(&_8, "base64_decode", &_6, 133, text); zephir_check_call_status(); ZEPHIR_RETURN_CALL_METHOD(this_ptr, "decrypt", &_7, 0, _8, key); zephir_check_call_status(); RETURN_MM(); }
PHP_METHOD(Test_Fannkuch, process) { zend_bool _0, _5$$4, _11$$8; zval *n_param = NULL, *perm = NULL, *perm0 = NULL, *perm1 = NULL, *count = NULL, *temp = NULL, *_3$$3 = NULL, *_4$$6 = NULL, *_9$$4, *_8$$7, *_10$$8 = NULL, *_14$$9, *_15$$14 = NULL, *_16$$15, *_17$$13, *_18$$13 = NULL, *_19$$13; int n, maxFlipsCount, permCount, checksum, i = 0, j = 0, flipsCount = 0, k = 0, r = 0, k2 = 0, _1, _2, _6$$4, _7$$4, _12$$8, _13$$8; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &n_param); n = zephir_get_intval(n_param); maxFlipsCount = 0; permCount = 0; checksum = 0; ZEPHIR_INIT_VAR(perm); array_init(perm); ZEPHIR_INIT_VAR(perm1); array_init(perm1); ZEPHIR_INIT_VAR(count); array_init(count); _2 = n; _1 = 0; _0 = 0; if (_1 <= _2) { while (1) { if (_0) { _1++; if (!(_1 <= _2)) { break; } } else { _0 = 1; } i = _1; ZEPHIR_INIT_NVAR(_3$$3); ZVAL_LONG(_3$$3, i); zephir_array_update_long(&perm1, i, &_3$$3, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); } } r = n; while (1) { if (0) { break; } while (1) { if (!(r != 1)) { break; } ZEPHIR_INIT_NVAR(_4$$6); ZVAL_LONG(_4$$6, r); zephir_array_update_long(&count, (r - 1), &_4$$6, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); r--; } _7$$4 = n; _6$$4 = 0; _5$$4 = 0; if (_6$$4 <= _7$$4) { while (1) { if (_5$$4) { _6$$4++; if (!(_6$$4 <= _7$$4)) { break; } } else { _5$$4 = 1; } i = _6$$4; zephir_array_fetch_long(&_8$$7, perm1, i, PH_NOISY | PH_READONLY, "test/fannkuch.zep", 43 TSRMLS_CC); zephir_array_update_long(&perm, i, &_8$$7, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); } } flipsCount = 0; k = 0; while (1) { zephir_array_fetch_long(&_9$$4, perm, 0, PH_NOISY | PH_READONLY, "test/fannkuch.zep", 48 TSRMLS_CC); if (!(!ZEPHIR_IS_LONG(_9$$4, 0))) { break; } ZEPHIR_OBS_NVAR(_10$$8); zephir_array_fetch_long(&_10$$8, perm, 0, PH_NOISY, "test/fannkuch.zep", 49 TSRMLS_CC); k = zephir_get_intval(_10$$8); k2 = (long) (((zephir_safe_div_long_long(((k + 1)), 2 TSRMLS_CC)) - (double) (1))); _13$$8 = k2; _12$$8 = 0; _11$$8 = 0; if (_12$$8 <= _13$$8) { while (1) { if (_11$$8) { _12$$8++; if (!(_12$$8 <= _13$$8)) { break; } } else { _11$$8 = 1; } i = _12$$8; zephir_array_fetch_long(&temp, perm, i, PH_NOISY | PH_READONLY, "test/fannkuch.zep", 51 TSRMLS_CC); zephir_array_fetch_long(&_14$$9, perm, (k - i), PH_NOISY | PH_READONLY, "test/fannkuch.zep", 51 TSRMLS_CC); zephir_array_update_long(&perm, i, &_14$$9, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); zephir_array_update_long(&perm, (k - i), &temp, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); } } flipsCount++; } if (maxFlipsCount < flipsCount) { maxFlipsCount = flipsCount; } if (zephir_safe_mod_long_long(permCount, 2 TSRMLS_CC) == 0) { checksum += flipsCount; } else { checksum -= flipsCount; } while (1) { if (r == n) { zephir_create_array(return_value, 3, 0 TSRMLS_CC); ZEPHIR_INIT_NVAR(_15$$14); ZVAL_LONG(_15$$14, checksum); zephir_array_fast_append(return_value, _15$$14); ZEPHIR_INIT_NVAR(_15$$14); ZVAL_LONG(_15$$14, n); zephir_array_fast_append(return_value, _15$$14); ZEPHIR_INIT_NVAR(_15$$14); ZVAL_LONG(_15$$14, maxFlipsCount); zephir_array_fast_append(return_value, _15$$14); RETURN_MM(); } zephir_array_fetch_long(&perm0, perm1, 0, PH_NOISY | PH_READONLY, "test/fannkuch.zep", 75 TSRMLS_CC); i = 0; while (1) { if (!(i < r)) { break; } j = (i + 1); zephir_array_fetch_long(&_16$$15, perm1, j, PH_NOISY | PH_READONLY, "test/fannkuch.zep", 78 TSRMLS_CC); zephir_array_update_long(&perm1, i, &_16$$15, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); i = j; } zephir_array_update_long(&perm1, r, &perm0, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); zephir_array_fetch_long(&_17$$13, count, r, PH_NOISY | PH_READONLY, "test/fannkuch.zep", 82 TSRMLS_CC); ZEPHIR_INIT_NVAR(_18$$13); ZVAL_LONG(_18$$13, (zephir_get_numberval(_17$$13) - 1)); zephir_array_update_long(&count, r, &_18$$13, PH_COPY | PH_SEPARATE ZEPHIR_DEBUG_PARAMS_DUMMY); zephir_array_fetch_long(&_19$$13, count, r, PH_NOISY | PH_READONLY, "test/fannkuch.zep", 83 TSRMLS_CC); if (ZEPHIR_GT_LONG(_19$$13, 0)) { break; } r++; } permCount++; } ZEPHIR_MM_RESTORE(); }
/** * Decodes a URL-safe base64-encoded string. * * @param string data * * @return string Decoded string. */ PHP_METHOD(Xpl_Base64Url, decode) { zval *_0, *_2; int ZEPHIR_LAST_CALL_STATUS, mod4 = 0; zval *data_param = NULL, *replaced = NULL, *_1 = NULL, _3$$3, _4$$3, *_5$$3; zval *data = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &data_param); zephir_get_strval(data, data_param); ZEPHIR_INIT_VAR(_0); zephir_create_array(_0, 8, 0 TSRMLS_CC); ZEPHIR_INIT_VAR(_1); ZVAL_STRING(_1, "-", 1); zephir_array_fast_append(_0, _1); ZEPHIR_INIT_NVAR(_1); ZVAL_STRING(_1, "_", 1); zephir_array_fast_append(_0, _1); ZEPHIR_INIT_NVAR(_1); ZVAL_STRING(_1, " ", 1); zephir_array_fast_append(_0, _1); ZEPHIR_INIT_NVAR(_1); ZVAL_STRING(_1, "\x09", 1); zephir_array_fast_append(_0, _1); ZEPHIR_INIT_NVAR(_1); ZVAL_STRING(_1, "\x0a", 1); zephir_array_fast_append(_0, _1); ZEPHIR_INIT_NVAR(_1); ZVAL_STRING(_1, "\x0b", 1); zephir_array_fast_append(_0, _1); ZEPHIR_INIT_NVAR(_1); ZVAL_STRING(_1, "\x0c", 1); zephir_array_fast_append(_0, _1); ZEPHIR_INIT_NVAR(_1); ZVAL_STRING(_1, "\x0d", 1); zephir_array_fast_append(_0, _1); ZEPHIR_INIT_VAR(_2); zephir_create_array(_2, 2, 0 TSRMLS_CC); ZEPHIR_INIT_NVAR(_1); ZVAL_STRING(_1, "+", 1); zephir_array_fast_append(_2, _1); ZEPHIR_INIT_NVAR(_1); ZVAL_STRING(_1, "/", 1); zephir_array_fast_append(_2, _1); ZEPHIR_INIT_VAR(replaced); zephir_fast_str_replace(&replaced, _0, _2, data TSRMLS_CC); mod4 = (long) (zephir_safe_mod_long_long(zephir_fast_strlen_ev(replaced), 4 TSRMLS_CC)); if (mod4) { ZEPHIR_SINIT_VAR(_3$$3); ZVAL_STRING(&_3$$3, "====", 0); ZEPHIR_SINIT_VAR(_4$$3); ZVAL_LONG(&_4$$3, mod4); ZEPHIR_INIT_VAR(_5$$3); zephir_substr(_5$$3, &_3$$3, zephir_get_intval(&_4$$3), 0, ZEPHIR_SUBSTR_NO_LENGTH); zephir_concat_self(&replaced, _5$$3 TSRMLS_CC); } ZEPHIR_RETURN_CALL_FUNCTION("base64_decode", NULL, 25, replaced); zephir_check_call_status(); RETURN_MM(); }