/src/php-src/ext/standard/base64.h
Line | Count | Source |
1 | | /* |
2 | | +----------------------------------------------------------------------+ |
3 | | | Copyright © The PHP Group and Contributors. | |
4 | | +----------------------------------------------------------------------+ |
5 | | | This source file is subject to the Modified BSD License that is | |
6 | | | bundled with this package in the file LICENSE, and is available | |
7 | | | through the World Wide Web at <https://www.php.net/license/>. | |
8 | | | | |
9 | | | SPDX-License-Identifier: BSD-3-Clause | |
10 | | +----------------------------------------------------------------------+ |
11 | | | Author: Jim Winstead <jimw@php.net> | |
12 | | | Xinchen Hui <laruence@php.net> | |
13 | | +----------------------------------------------------------------------+ |
14 | | */ |
15 | | |
16 | | #ifndef BASE64_H |
17 | | #define BASE64_H |
18 | | |
19 | | /* |
20 | | * NEON and AVX512 implementation are based on https://github.com/WojciechMula/base64simd |
21 | | * which is copyrighted to: |
22 | | * Copyright (c) 2015-2018, Wojciech Mula |
23 | | * All rights reserved. |
24 | | * |
25 | | * SSSE3 and AVX2 implementation are based on https://github.com/aklomp/base64 |
26 | | * which is copyrighted to: |
27 | | * |
28 | | * Copyright (c) 2005-2007, Nick Galbreath |
29 | | * Copyright (c) 2013-2017, Alfred Klomp |
30 | | * Copyright (c) 2015-2017, Wojciech Mula |
31 | | * Copyright (c) 2016-2017, Matthieu Darbois |
32 | | * All rights reserved. |
33 | | * |
34 | | * Redistribution and use in source and binary forms, with or without |
35 | | * modification, are permitted provided that the following conditions are |
36 | | * met: |
37 | | * |
38 | | * - Redistributions of source code must retain the above copyright notice, |
39 | | * this list of conditions and the following disclaimer. |
40 | | * |
41 | | * - Redistributions in binary form must reproduce the above copyright |
42 | | * notice, this list of conditions and the following disclaimer in the |
43 | | * documentation and/or other materials provided with the distribution. |
44 | | * |
45 | | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS |
46 | | * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED |
47 | | * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A |
48 | | * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
49 | | * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
50 | | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED |
51 | | * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
52 | | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
53 | | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
54 | | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
55 | | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
56 | | */ |
57 | | |
58 | | #if (defined(ZEND_INTRIN_AVX2_FUNC_PTR) || defined(ZEND_INTRIN_SSSE3_FUNC_PTR) || defined(ZEND_INTRIN_AVX512_FUNC_PTR) || defined(ZEND_INTRIN_AVX512_VBMI_FUNC_PTR)) && !defined(ZEND_INTRIN_AVX2_NATIVE) |
59 | | PHP_MINIT_FUNCTION(base64_intrin); |
60 | | #endif |
61 | | |
62 | | /* php_base64_encode_ex flags */ |
63 | 0 | #define PHP_BASE64_NO_PADDING 1 |
64 | | |
65 | | PHPAPI extern zend_string *php_base64_encode_ex(const unsigned char *, size_t, zend_long flags); |
66 | | PHPAPI extern zend_string *php_base64_decode_ex(const unsigned char *, size_t, bool); |
67 | | |
68 | 0 | static inline zend_string *php_base64_encode(const unsigned char *str, size_t len) { |
69 | 0 | return php_base64_encode_ex(str, len, 0); |
70 | 0 | } Unexecuted instantiation: base64.c:php_base64_encode Unexecuted instantiation: basic_functions.c:php_base64_encode Unexecuted instantiation: ftp_fopen_wrapper.c:php_base64_encode Unexecuted instantiation: head.c:php_base64_encode Unexecuted instantiation: html.c:php_base64_encode Unexecuted instantiation: http_fopen_wrapper.c:php_base64_encode Unexecuted instantiation: password.c:php_base64_encode Unexecuted instantiation: php_fopen_wrapper.c:php_base64_encode Unexecuted instantiation: fopen_wrappers.c:php_base64_encode Unexecuted instantiation: main.c:php_base64_encode Unexecuted instantiation: php_variables.c:php_base64_encode Unexecuted instantiation: memory.c:php_base64_encode Unexecuted instantiation: internal_functions_cli.c:php_base64_encode |
71 | 0 | static inline zend_string *php_base64_encode_str(const zend_string *str) { |
72 | 0 | return php_base64_encode((const unsigned char*)(ZSTR_VAL(str)), ZSTR_LEN(str)); |
73 | 0 | } Unexecuted instantiation: base64.c:php_base64_encode_str Unexecuted instantiation: basic_functions.c:php_base64_encode_str Unexecuted instantiation: ftp_fopen_wrapper.c:php_base64_encode_str Unexecuted instantiation: head.c:php_base64_encode_str Unexecuted instantiation: html.c:php_base64_encode_str Unexecuted instantiation: http_fopen_wrapper.c:php_base64_encode_str Unexecuted instantiation: password.c:php_base64_encode_str Unexecuted instantiation: php_fopen_wrapper.c:php_base64_encode_str Unexecuted instantiation: fopen_wrappers.c:php_base64_encode_str Unexecuted instantiation: main.c:php_base64_encode_str Unexecuted instantiation: php_variables.c:php_base64_encode_str Unexecuted instantiation: memory.c:php_base64_encode_str Unexecuted instantiation: internal_functions_cli.c:php_base64_encode_str |
74 | | |
75 | 0 | static inline zend_string *php_base64_decode(const unsigned char *str, size_t len) { |
76 | 0 | return php_base64_decode_ex(str, len, 0); |
77 | 0 | } Unexecuted instantiation: base64.c:php_base64_decode Unexecuted instantiation: basic_functions.c:php_base64_decode Unexecuted instantiation: ftp_fopen_wrapper.c:php_base64_decode Unexecuted instantiation: head.c:php_base64_decode Unexecuted instantiation: html.c:php_base64_decode Unexecuted instantiation: http_fopen_wrapper.c:php_base64_decode Unexecuted instantiation: password.c:php_base64_decode Unexecuted instantiation: php_fopen_wrapper.c:php_base64_decode Unexecuted instantiation: fopen_wrappers.c:php_base64_decode Unexecuted instantiation: main.c:php_base64_decode Unexecuted instantiation: php_variables.c:php_base64_decode Unexecuted instantiation: memory.c:php_base64_decode Unexecuted instantiation: internal_functions_cli.c:php_base64_decode |
78 | 0 | static inline zend_string *php_base64_decode_str(const zend_string *str) { |
79 | 0 | return php_base64_decode_ex((const unsigned char*)(ZSTR_VAL(str)), ZSTR_LEN(str), 0); |
80 | 0 | } Unexecuted instantiation: base64.c:php_base64_decode_str Unexecuted instantiation: basic_functions.c:php_base64_decode_str Unexecuted instantiation: ftp_fopen_wrapper.c:php_base64_decode_str Unexecuted instantiation: head.c:php_base64_decode_str Unexecuted instantiation: html.c:php_base64_decode_str Unexecuted instantiation: http_fopen_wrapper.c:php_base64_decode_str Unexecuted instantiation: password.c:php_base64_decode_str Unexecuted instantiation: php_fopen_wrapper.c:php_base64_decode_str Unexecuted instantiation: fopen_wrappers.c:php_base64_decode_str Unexecuted instantiation: main.c:php_base64_decode_str Unexecuted instantiation: php_variables.c:php_base64_decode_str Unexecuted instantiation: memory.c:php_base64_decode_str Unexecuted instantiation: internal_functions_cli.c:php_base64_decode_str |
81 | | |
82 | | #endif /* BASE64_H */ |