003 File Manager
Current Path:
/usr/src/contrib/libarchive/libarchive
usr
/
src
/
contrib
/
libarchive
/
libarchive
/
📁
..
📄
archive.h
(51.93 KB)
📄
archive_acl.c
(51.2 KB)
📄
archive_acl_private.h
(3.13 KB)
📄
archive_blake2.h
(6.32 KB)
📄
archive_blake2_impl.h
(4.12 KB)
📄
archive_blake2s_ref.c
(9.46 KB)
📄
archive_blake2sp_ref.c
(9.11 KB)
📄
archive_check_magic.c
(4.7 KB)
📄
archive_cmdline.c
(5.21 KB)
📄
archive_cmdline_private.h
(1.82 KB)
📄
archive_crc32.h
(2.97 KB)
📄
archive_cryptor.c
(13.46 KB)
📄
archive_cryptor_private.h
(6.02 KB)
📄
archive_digest.c
(28.79 KB)
📄
archive_digest_private.h
(13.88 KB)
📄
archive_disk_acl_freebsd.c
(18.86 KB)
📄
archive_endian.h
(5.28 KB)
📄
archive_entry.3
(4.85 KB)
📄
archive_entry.c
(53.48 KB)
📄
archive_entry.h
(32.79 KB)
📄
archive_entry_acl.3
(14.32 KB)
📄
archive_entry_copy_stat.c
(3.73 KB)
📄
archive_entry_link_resolver.c
(11.74 KB)
📄
archive_entry_linkify.3
(5.9 KB)
📄
archive_entry_locale.h
(4.41 KB)
📄
archive_entry_misc.3
(2.47 KB)
📄
archive_entry_paths.3
(5.53 KB)
📄
archive_entry_perms.3
(7.59 KB)
📄
archive_entry_private.h
(6.09 KB)
📄
archive_entry_sparse.c
(3.95 KB)
📄
archive_entry_stat.3
(8.1 KB)
📄
archive_entry_stat.c
(4.29 KB)
📄
archive_entry_strmode.c
(2.6 KB)
📄
archive_entry_time.3
(4.5 KB)
📄
archive_entry_xattr.c
(3.86 KB)
📄
archive_getdate.c
(29.9 KB)
📄
archive_getdate.h
(1.56 KB)
📄
archive_hmac.c
(7.32 KB)
📄
archive_hmac_private.h
(3.59 KB)
📄
archive_match.c
(47.14 KB)
📄
archive_openssl_evp_private.h
(1.92 KB)
📄
archive_openssl_hmac_private.h
(1.98 KB)
📄
archive_options.c
(5.22 KB)
📄
archive_options_private.h
(2.02 KB)
📄
archive_pack_dev.c
(9.13 KB)
📄
archive_pack_dev.h
(2.08 KB)
📄
archive_pathmatch.c
(10.64 KB)
📄
archive_pathmatch.h
(2.09 KB)
📄
archive_platform.h
(5.93 KB)
📄
archive_platform_acl.h
(2 KB)
📄
archive_platform_xattr.h
(1.82 KB)
📄
archive_ppmd7.c
(27.63 KB)
📄
archive_ppmd7_private.h
(3.01 KB)
📄
archive_ppmd8.c
(31.05 KB)
📄
archive_ppmd8_private.h
(3.82 KB)
📄
archive_ppmd_private.h
(3.31 KB)
📄
archive_private.h
(5.56 KB)
📄
archive_random.c
(6.67 KB)
📄
archive_random_private.h
(1.6 KB)
📄
archive_rb.c
(20.84 KB)
📄
archive_rb.h
(4.43 KB)
📄
archive_read.3
(7.18 KB)
📄
archive_read.c
(48.21 KB)
📄
archive_read_add_passphrase.3
(2.48 KB)
📄
archive_read_add_passphrase.c
(5.21 KB)
📄
archive_read_append_filter.c
(6.1 KB)
📄
archive_read_data.3
(4.23 KB)
📄
archive_read_data_into_fd.c
(3.94 KB)
📄
archive_read_disk.3
(10.36 KB)
📄
archive_read_disk_entry_from_file.c
(27.96 KB)
📄
archive_read_disk_posix.c
(72.18 KB)
📄
archive_read_disk_private.h
(3.31 KB)
📄
archive_read_disk_set_standard_lookup.c
(8.03 KB)
📄
archive_read_extract.3
(4.39 KB)
📄
archive_read_extract.c
(2.21 KB)
📄
archive_read_extract2.c
(4.5 KB)
📄
archive_read_filter.3
(5.56 KB)
📄
archive_read_format.3
(5.97 KB)
📄
archive_read_free.3
(3.07 KB)
📄
archive_read_header.3
(2.97 KB)
📄
archive_read_new.3
(2.08 KB)
📄
archive_read_open.3
(6.78 KB)
📄
archive_read_open_fd.c
(5.92 KB)
📄
archive_read_open_file.c
(4.9 KB)
📄
archive_read_open_filename.c
(17.56 KB)
📄
archive_read_open_memory.c
(5.43 KB)
📄
archive_read_private.h
(9.26 KB)
📄
archive_read_set_format.c
(3.43 KB)
📄
archive_read_set_options.3
(6.53 KB)
📄
archive_read_set_options.c
(4.6 KB)
📄
archive_read_support_filter_all.c
(3.5 KB)
📄
archive_read_support_filter_by_code.c
(2.76 KB)
📄
archive_read_support_filter_bzip2.c
(9.93 KB)
📄
archive_read_support_filter_compress.c
(13.44 KB)
📄
archive_read_support_filter_grzip.c
(3.52 KB)
📄
archive_read_support_filter_gzip.c
(13.48 KB)
📄
archive_read_support_filter_lrzip.c
(3.79 KB)
📄
archive_read_support_filter_lz4.c
(20.26 KB)
📄
archive_read_support_filter_lzop.c
(13.59 KB)
📄
archive_read_support_filter_none.c
(1.87 KB)
📄
archive_read_support_filter_program.c
(13.21 KB)
📄
archive_read_support_filter_rpm.c
(6.84 KB)
📄
archive_read_support_filter_uu.c
(18.34 KB)
📄
archive_read_support_filter_xz.c
(21.51 KB)
📄
archive_read_support_filter_zstd.c
(7.59 KB)
📄
archive_read_support_format_7zip.c
(97.12 KB)
📄
archive_read_support_format_all.c
(3.47 KB)
📄
archive_read_support_format_ar.c
(17.4 KB)
📄
archive_read_support_format_by_code.c
(2.99 KB)
📄
archive_read_support_format_cab.c
(83 KB)
📄
archive_read_support_format_cpio.c
(31.93 KB)
📄
archive_read_support_format_empty.c
(2.93 KB)
📄
archive_read_support_format_iso9660.c
(92.13 KB)
📄
archive_read_support_format_lha.c
(83.33 KB)
📄
archive_read_support_format_mtree.c
(51.86 KB)
📄
archive_read_support_format_rar.c
(84.34 KB)
📄
archive_read_support_format_rar5.c
(107.18 KB)
📄
archive_read_support_format_raw.c
(5.43 KB)
📄
archive_read_support_format_tar.c
(83.23 KB)
📄
archive_read_support_format_warc.c
(21.17 KB)
📄
archive_read_support_format_xar.c
(79.96 KB)
📄
archive_read_support_format_zip.c
(117.12 KB)
📄
archive_string.c
(104.04 KB)
📄
archive_string.h
(9.26 KB)
📄
archive_string_composition.h
(80.15 KB)
📄
archive_string_sprintf.c
(5.13 KB)
📄
archive_util.3
(6.97 KB)
📄
archive_util.c
(14.54 KB)
📄
archive_version_details.c
(3.55 KB)
📄
archive_virtual.c
(3.95 KB)
📄
archive_write.3
(7.32 KB)
📄
archive_write.c
(21.65 KB)
📄
archive_write_add_filter.c
(2.63 KB)
📄
archive_write_add_filter_b64encode.c
(8.41 KB)
📄
archive_write_add_filter_by_name.c
(2.65 KB)
📄
archive_write_add_filter_bzip2.c
(11.14 KB)
📄
archive_write_add_filter_compress.c
(12.62 KB)
📄
archive_write_add_filter_grzip.c
(4.22 KB)
📄
archive_write_add_filter_gzip.c
(12.34 KB)
📄
archive_write_add_filter_lrzip.c
(5.72 KB)
📄
archive_write_add_filter_lz4.c
(18.85 KB)
📄
archive_write_add_filter_lzop.c
(13.69 KB)
📄
archive_write_add_filter_none.c
(1.67 KB)
📄
archive_write_add_filter_program.c
(9.77 KB)
📄
archive_write_add_filter_uuencode.c
(8.09 KB)
📄
archive_write_add_filter_xz.c
(14.97 KB)
📄
archive_write_add_filter_zstd.c
(10.7 KB)
📄
archive_write_blocksize.3
(4.13 KB)
📄
archive_write_data.3
(3.09 KB)
📄
archive_write_disk.3
(11.82 KB)
📄
archive_write_disk_posix.c
(123.89 KB)
📄
archive_write_disk_private.h
(1.77 KB)
📄
archive_write_disk_set_standard_lookup.c
(6.91 KB)
📄
archive_write_filter.3
(4.47 KB)
📄
archive_write_finish_entry.3
(2.67 KB)
📄
archive_write_format.3
(5.99 KB)
📄
archive_write_free.3
(3.05 KB)
📄
archive_write_header.3
(2.44 KB)
📄
archive_write_new.3
(2.02 KB)
📄
archive_write_open.3
(8.01 KB)
📄
archive_write_open_fd.c
(3.9 KB)
📄
archive_write_open_file.c
(2.93 KB)
📄
archive_write_open_filename.c
(6.85 KB)
📄
archive_write_open_memory.c
(3.61 KB)
📄
archive_write_private.h
(5.64 KB)
📄
archive_write_set_format.c
(4 KB)
📄
archive_write_set_format_7zip.c
(55.14 KB)
📄
archive_write_set_format_ar.c
(14.08 KB)
📄
archive_write_set_format_by_name.c
(3.35 KB)
📄
archive_write_set_format_cpio.c
(14.24 KB)
📄
archive_write_set_format_cpio_newc.c
(13.11 KB)
📄
archive_write_set_format_filter_by_ext.c
(4.67 KB)
📄
archive_write_set_format_gnutar.c
(22.62 KB)
📄
archive_write_set_format_iso9660.c
(206.67 KB)
📄
archive_write_set_format_mtree.c
(58.1 KB)
📄
archive_write_set_format_pax.c
(59.85 KB)
📄
archive_write_set_format_private.h
(1.71 KB)
📄
archive_write_set_format_raw.c
(3.65 KB)
📄
archive_write_set_format_shar.c
(16.93 KB)
📄
archive_write_set_format_ustar.c
(21.98 KB)
📄
archive_write_set_format_v7tar.c
(18.02 KB)
📄
archive_write_set_format_warc.c
(11.2 KB)
📄
archive_write_set_format_xar.c
(79.49 KB)
📄
archive_write_set_format_zip.c
(48.7 KB)
📄
archive_write_set_options.3
(21.85 KB)
📄
archive_write_set_options.c
(4.07 KB)
📄
archive_write_set_passphrase.3
(2.46 KB)
📄
archive_write_set_passphrase.c
(2.89 KB)
📄
archive_xxhash.h
(1.86 KB)
📄
cpio.5
(10.45 KB)
📄
filter_fork.h
(1.68 KB)
📄
filter_fork_posix.c
(6.18 KB)
📄
libarchive-formats.5
(18.29 KB)
📄
libarchive.3
(8.02 KB)
📄
libarchive_changes.3
(9.95 KB)
📄
libarchive_internals.3
(13.36 KB)
📄
tar.5
(31 KB)
📁
test
📄
xxhash.c
(15.77 KB)
Editing: archive_random.c
/*- * Copyright (c) 2014 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" __FBSDID("$FreeBSD$"); #ifdef HAVE_STDLIB_H #include <stdlib.h> #endif #if !defined(HAVE_ARC4RANDOM_BUF) && (!defined(_WIN32) || defined(__CYGWIN__)) #ifdef HAVE_FCNTL #include <fcntl.h> #endif #ifdef HAVE_LIMITS_H #include <limits.h> #endif #ifdef HAVE_UNISTD_H #include <unistd.h> #endif #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> #endif #ifdef HAVE_SYS_TIME_H #include <sys/time.h> #endif #ifdef HAVE_PTHREAD_H #include <pthread.h> #endif static void arc4random_buf(void *, size_t); #endif /* HAVE_ARC4RANDOM_BUF */ #include "archive.h" #include "archive_random_private.h" #if defined(HAVE_WINCRYPT_H) && !defined(__CYGWIN__) #include <wincrypt.h> #endif #ifndef O_CLOEXEC #define O_CLOEXEC 0 #endif /* * Random number generator function. * This simply calls arc4random_buf function if the platform provides it. */ int archive_random(void *buf, size_t nbytes) { #if defined(_WIN32) && !defined(__CYGWIN__) HCRYPTPROV hProv; BOOL success; success = CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT); if (!success && GetLastError() == (DWORD)NTE_BAD_KEYSET) { success = CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_NEWKEYSET); } if (success) { success = CryptGenRandom(hProv, (DWORD)nbytes, (BYTE*)buf); CryptReleaseContext(hProv, 0); if (success) return ARCHIVE_OK; } /* TODO: Does this case really happen? */ return ARCHIVE_FAILED; #else arc4random_buf(buf, nbytes); return ARCHIVE_OK; #endif } #if !defined(HAVE_ARC4RANDOM_BUF) && (!defined(_WIN32) || defined(__CYGWIN__)) /* $OpenBSD: arc4random.c,v 1.24 2013/06/11 16:59:50 deraadt Exp $ */ /* * Copyright (c) 1996, David Mazieres <dm@uun.org> * Copyright (c) 2008, Damien Miller <djm@openbsd.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * Arc4 random number generator for OpenBSD. * * This code is derived from section 17.1 of Applied Cryptography, * second edition, which describes a stream cipher allegedly * compatible with RSA Labs "RC4" cipher (the actual description of * which is a trade secret). The same algorithm is used as a stream * cipher called "arcfour" in Tatu Ylonen's ssh package. * * RC4 is a registered trademark of RSA Laboratories. */ #ifdef __GNUC__ #define inline __inline #else /* !__GNUC__ */ #define inline #endif /* !__GNUC__ */ struct arc4_stream { uint8_t i; uint8_t j; uint8_t s[256]; }; #define RANDOMDEV "/dev/urandom" #define KEYSIZE 128 #ifdef HAVE_PTHREAD_H static pthread_mutex_t arc4random_mtx = PTHREAD_MUTEX_INITIALIZER; #define _ARC4_LOCK() pthread_mutex_lock(&arc4random_mtx); #define _ARC4_UNLOCK() pthread_mutex_unlock(&arc4random_mtx); #else #define _ARC4_LOCK() #define _ARC4_UNLOCK() #endif static int rs_initialized; static struct arc4_stream rs; static pid_t arc4_stir_pid; static int arc4_count; static inline uint8_t arc4_getbyte(void); static void arc4_stir(void); static inline void arc4_init(void) { int n; for (n = 0; n < 256; n++) rs.s[n] = n; rs.i = 0; rs.j = 0; } static inline void arc4_addrandom(u_char *dat, int datlen) { int n; uint8_t si; rs.i--; for (n = 0; n < 256; n++) { rs.i = (rs.i + 1); si = rs.s[rs.i]; rs.j = (rs.j + si + dat[n % datlen]); rs.s[rs.i] = rs.s[rs.j]; rs.s[rs.j] = si; } rs.j = rs.i; } static void arc4_stir(void) { int done, fd, i; struct { struct timeval tv; pid_t pid; u_char rnd[KEYSIZE]; } rdat; if (!rs_initialized) { arc4_init(); rs_initialized = 1; } done = 0; fd = open(RANDOMDEV, O_RDONLY | O_CLOEXEC, 0); if (fd >= 0) { if (read(fd, &rdat, KEYSIZE) == KEYSIZE) done = 1; (void)close(fd); } if (!done) { (void)gettimeofday(&rdat.tv, NULL); rdat.pid = getpid(); /* We'll just take whatever was on the stack too... */ } arc4_addrandom((u_char *)&rdat, KEYSIZE); /* * Discard early keystream, as per recommendations in: * "(Not So) Random Shuffles of RC4" by Ilya Mironov. * As per the Network Operations Division, cryptographic requirements * published on wikileaks on March 2017. */ for (i = 0; i < 3072; i++) (void)arc4_getbyte(); arc4_count = 1600000; } static void arc4_stir_if_needed(void) { pid_t pid = getpid(); if (arc4_count <= 0 || !rs_initialized || arc4_stir_pid != pid) { arc4_stir_pid = pid; arc4_stir(); } } static inline uint8_t arc4_getbyte(void) { uint8_t si, sj; rs.i = (rs.i + 1); si = rs.s[rs.i]; rs.j = (rs.j + si); sj = rs.s[rs.j]; rs.s[rs.i] = sj; rs.s[rs.j] = si; return (rs.s[(si + sj) & 0xff]); } static void arc4random_buf(void *_buf, size_t n) { u_char *buf = (u_char *)_buf; _ARC4_LOCK(); arc4_stir_if_needed(); while (n--) { if (--arc4_count <= 0) arc4_stir(); buf[n] = arc4_getbyte(); } _ARC4_UNLOCK(); } #endif /* !HAVE_ARC4RANDOM_BUF */
Upload File
Create Folder