Original.php000064400000017055147207154160007040 0ustar00 $chunk */ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, 3)); $b0 = $chunk[1]; $b1 = $chunk[2]; $b2 = $chunk[3]; $dest .= self::encode6Bits( $b0 >> 2 ) . self::encode6Bits((($b0 << 4) | ($b1 >> 4)) & 63) . self::encode6Bits((($b1 << 2) | ($b2 >> 6)) & 63) . self::encode6Bits( $b2 & 63); } // The last chunk, which may have padding: if ($i < $srcLen) { /** @var array $chunk */ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, $srcLen - $i)); $b0 = $chunk[1]; if ($i + 1 < $srcLen) { $b1 = $chunk[2]; $dest .= self::encode6Bits($b0 >> 2) . self::encode6Bits((($b0 << 4) | ($b1 >> 4)) & 63) . self::encode6Bits(($b1 << 2) & 63); if ($pad) { $dest .= '='; } } else { $dest .= self::encode6Bits( $b0 >> 2) . self::encode6Bits(($b0 << 4) & 63); if ($pad) { $dest .= '=='; } } } return $dest; } /** * decode from base64 into binary * * Base64 character set "./[A-Z][a-z][0-9]" * * @param string $src * @param bool $strictPadding * @return string * @throws RangeException * @throws TypeError * @psalm-suppress RedundantCondition */ public static function decode($src, $strictPadding = false) { // Remove padding $srcLen = ParagonIE_Sodium_Core_Util::strlen($src); if ($srcLen === 0) { return ''; } if ($strictPadding) { if (($srcLen & 3) === 0) { if ($src[$srcLen - 1] === '=') { $srcLen--; if ($src[$srcLen - 1] === '=') { $srcLen--; } } } if (($srcLen & 3) === 1) { throw new RangeException( 'Incorrect padding' ); } if ($src[$srcLen - 1] === '=') { throw new RangeException( 'Incorrect padding' ); } } else { $src = rtrim($src, '='); $srcLen = ParagonIE_Sodium_Core_Util::strlen($src); } $err = 0; $dest = ''; // Main loop (no padding): for ($i = 0; $i + 4 <= $srcLen; $i += 4) { /** @var array $chunk */ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, 4)); $c0 = self::decode6Bits($chunk[1]); $c1 = self::decode6Bits($chunk[2]); $c2 = self::decode6Bits($chunk[3]); $c3 = self::decode6Bits($chunk[4]); $dest .= pack( 'CCC', ((($c0 << 2) | ($c1 >> 4)) & 0xff), ((($c1 << 4) | ($c2 >> 2)) & 0xff), ((($c2 << 6) | $c3) & 0xff) ); $err |= ($c0 | $c1 | $c2 | $c3) >> 8; } // The last chunk, which may have padding: if ($i < $srcLen) { /** @var array $chunk */ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, $srcLen - $i)); $c0 = self::decode6Bits($chunk[1]); if ($i + 2 < $srcLen) { $c1 = self::decode6Bits($chunk[2]); $c2 = self::decode6Bits($chunk[3]); $dest .= pack( 'CC', ((($c0 << 2) | ($c1 >> 4)) & 0xff), ((($c1 << 4) | ($c2 >> 2)) & 0xff) ); $err |= ($c0 | $c1 | $c2) >> 8; } elseif ($i + 1 < $srcLen) { $c1 = self::decode6Bits($chunk[2]); $dest .= pack( 'C', ((($c0 << 2) | ($c1 >> 4)) & 0xff) ); $err |= ($c0 | $c1) >> 8; } elseif ($i < $srcLen && $strictPadding) { $err |= 1; } } /** @var bool $check */ $check = ($err === 0); if (!$check) { throw new RangeException( 'Base64::decode() only expects characters in the correct base64 alphabet' ); } return $dest; } // COPY ParagonIE_Sodium_Core_Base64_Common ENDING HERE /** * Uses bitwise operators instead of table-lookups to turn 6-bit integers * into 8-bit integers. * * Base64 character set: * [A-Z] [a-z] [0-9] + / * 0x41-0x5a, 0x61-0x7a, 0x30-0x39, 0x2b, 0x2f * * @param int $src * @return int */ protected static function decode6Bits($src) { $ret = -1; // if ($src > 0x40 && $src < 0x5b) $ret += $src - 0x41 + 1; // -64 $ret += (((0x40 - $src) & ($src - 0x5b)) >> 8) & ($src - 64); // if ($src > 0x60 && $src < 0x7b) $ret += $src - 0x61 + 26 + 1; // -70 $ret += (((0x60 - $src) & ($src - 0x7b)) >> 8) & ($src - 70); // if ($src > 0x2f && $src < 0x3a) $ret += $src - 0x30 + 52 + 1; // 5 $ret += (((0x2f - $src) & ($src - 0x3a)) >> 8) & ($src + 5); // if ($src == 0x2b) $ret += 62 + 1; $ret += (((0x2a - $src) & ($src - 0x2c)) >> 8) & 63; // if ($src == 0x2f) ret += 63 + 1; $ret += (((0x2e - $src) & ($src - 0x30)) >> 8) & 64; return $ret; } /** * Uses bitwise operators instead of table-lookups to turn 8-bit integers * into 6-bit integers. * * @param int $src * @return string */ protected static function encode6Bits($src) { $diff = 0x41; // if ($src > 25) $diff += 0x61 - 0x41 - 26; // 6 $diff += ((25 - $src) >> 8) & 6; // if ($src > 51) $diff += 0x30 - 0x61 - 26; // -75 $diff -= ((51 - $src) >> 8) & 75; // if ($src > 61) $diff += 0x2b - 0x30 - 10; // -15 $diff -= ((61 - $src) >> 8) & 15; // if ($src > 62) $diff += 0x2f - 0x2b - 1; // 3 $diff += ((62 - $src) >> 8) & 3; return pack('C', $src + $diff); } } UrlSafe.php000064400000017063147207154160006634 0ustar00 $chunk */ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, 3)); $b0 = $chunk[1]; $b1 = $chunk[2]; $b2 = $chunk[3]; $dest .= self::encode6Bits( $b0 >> 2 ) . self::encode6Bits((($b0 << 4) | ($b1 >> 4)) & 63) . self::encode6Bits((($b1 << 2) | ($b2 >> 6)) & 63) . self::encode6Bits( $b2 & 63); } // The last chunk, which may have padding: if ($i < $srcLen) { /** @var array $chunk */ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, $srcLen - $i)); $b0 = $chunk[1]; if ($i + 1 < $srcLen) { $b1 = $chunk[2]; $dest .= self::encode6Bits($b0 >> 2) . self::encode6Bits((($b0 << 4) | ($b1 >> 4)) & 63) . self::encode6Bits(($b1 << 2) & 63); if ($pad) { $dest .= '='; } } else { $dest .= self::encode6Bits( $b0 >> 2) . self::encode6Bits(($b0 << 4) & 63); if ($pad) { $dest .= '=='; } } } return $dest; } /** * decode from base64 into binary * * Base64 character set "./[A-Z][a-z][0-9]" * * @param string $src * @param bool $strictPadding * @return string * @throws RangeException * @throws TypeError * @psalm-suppress RedundantCondition */ public static function decode($src, $strictPadding = false) { // Remove padding $srcLen = ParagonIE_Sodium_Core_Util::strlen($src); if ($srcLen === 0) { return ''; } if ($strictPadding) { if (($srcLen & 3) === 0) { if ($src[$srcLen - 1] === '=') { $srcLen--; if ($src[$srcLen - 1] === '=') { $srcLen--; } } } if (($srcLen & 3) === 1) { throw new RangeException( 'Incorrect padding' ); } if ($src[$srcLen - 1] === '=') { throw new RangeException( 'Incorrect padding' ); } } else { $src = rtrim($src, '='); $srcLen = ParagonIE_Sodium_Core_Util::strlen($src); } $err = 0; $dest = ''; // Main loop (no padding): for ($i = 0; $i + 4 <= $srcLen; $i += 4) { /** @var array $chunk */ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, 4)); $c0 = self::decode6Bits($chunk[1]); $c1 = self::decode6Bits($chunk[2]); $c2 = self::decode6Bits($chunk[3]); $c3 = self::decode6Bits($chunk[4]); $dest .= pack( 'CCC', ((($c0 << 2) | ($c1 >> 4)) & 0xff), ((($c1 << 4) | ($c2 >> 2)) & 0xff), ((($c2 << 6) | $c3) & 0xff) ); $err |= ($c0 | $c1 | $c2 | $c3) >> 8; } // The last chunk, which may have padding: if ($i < $srcLen) { /** @var array $chunk */ $chunk = unpack('C*', ParagonIE_Sodium_Core_Util::substr($src, $i, $srcLen - $i)); $c0 = self::decode6Bits($chunk[1]); if ($i + 2 < $srcLen) { $c1 = self::decode6Bits($chunk[2]); $c2 = self::decode6Bits($chunk[3]); $dest .= pack( 'CC', ((($c0 << 2) | ($c1 >> 4)) & 0xff), ((($c1 << 4) | ($c2 >> 2)) & 0xff) ); $err |= ($c0 | $c1 | $c2) >> 8; } elseif ($i + 1 < $srcLen) { $c1 = self::decode6Bits($chunk[2]); $dest .= pack( 'C', ((($c0 << 2) | ($c1 >> 4)) & 0xff) ); $err |= ($c0 | $c1) >> 8; } elseif ($i < $srcLen && $strictPadding) { $err |= 1; } } /** @var bool $check */ $check = ($err === 0); if (!$check) { throw new RangeException( 'Base64::decode() only expects characters in the correct base64 alphabet' ); } return $dest; } // COPY ParagonIE_Sodium_Core_Base64_Common ENDING HERE /** * Uses bitwise operators instead of table-lookups to turn 6-bit integers * into 8-bit integers. * * Base64 character set: * [A-Z] [a-z] [0-9] + / * 0x41-0x5a, 0x61-0x7a, 0x30-0x39, 0x2b, 0x2f * * @param int $src * @return int */ protected static function decode6Bits($src) { $ret = -1; // if ($src > 0x40 && $src < 0x5b) $ret += $src - 0x41 + 1; // -64 $ret += (((0x40 - $src) & ($src - 0x5b)) >> 8) & ($src - 64); // if ($src > 0x60 && $src < 0x7b) $ret += $src - 0x61 + 26 + 1; // -70 $ret += (((0x60 - $src) & ($src - 0x7b)) >> 8) & ($src - 70); // if ($src > 0x2f && $src < 0x3a) $ret += $src - 0x30 + 52 + 1; // 5 $ret += (((0x2f - $src) & ($src - 0x3a)) >> 8) & ($src + 5); // if ($src == 0x2c) $ret += 62 + 1; $ret += (((0x2c - $src) & ($src - 0x2e)) >> 8) & 63; // if ($src == 0x5f) ret += 63 + 1; $ret += (((0x5e - $src) & ($src - 0x60)) >> 8) & 64; return $ret; } /** * Uses bitwise operators instead of table-lookups to turn 8-bit integers * into 6-bit integers. * * @param int $src * @return string */ protected static function encode6Bits($src) { $diff = 0x41; // if ($src > 25) $diff += 0x61 - 0x41 - 26; // 6 $diff += ((25 - $src) >> 8) & 6; // if ($src > 51) $diff += 0x30 - 0x61 - 26; // -75 $diff -= ((51 - $src) >> 8) & 75; // if ($src > 61) $diff += 0x2d - 0x30 - 10; // -13 $diff -= ((61 - $src) >> 8) & 13; // if ($src > 62) $diff += 0x5f - 0x2b - 1; // 3 $diff += ((62 - $src) >> 8) & 49; return pack('C', $src + $diff); } } decode64-i.ri000064400000001462147565363460006751 0ustar00U:RDoc::AnyMethod[iI" decode64:EFI"Base64#decode64;TF: publico:RDoc::Markup::Document: @parts[ o:RDoc::Markup::Paragraph; [I"2Returns the Base64-decoded version of +str+. ;TI")This method complies with RFC 2045. ;TI"6Characters outside the base alphabet are ignored.;To:RDoc::Markup::BlankLineo:RDoc::Markup::Verbatim; [ I"require 'base64' ;TI".str = 'VGhpcyBpcyBsaW5lIG9uZQpUaGlzIG' + ;TI". 'lzIGxpbmUgdHdvClRoaXMgaXMgbGlu' + ;TI"* 'ZSB0aHJlZQpBbmQgc28gb24uLi4K' ;TI"puts Base64.decode64(str) ;T: @format0o; ; [I"Generates:;T@o; ; [ I"This is line one ;TI"This is line two ;TI"This is line three ;TI"And so on...;T; 0: @fileI"lib/base64.rb;T:0@omit_headings_from_table_of_contents_below000[I" (str);T@!FI" Base64;FcRDoc::NormalModule00urlsafe_decode64-i.ri000064400000001313147565363460010465 0ustar00U:RDoc::AnyMethod[iI"urlsafe_decode64:EFI"Base64#urlsafe_decode64;TF: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [ I"2Returns the Base64-decoded version of +str+. ;TI"MThis method complies with ``Base 64 Encoding with URL and Filename Safe ;TI"Alphabet'' in RFC 4648. ;TI"AThe alphabet uses '-' instead of '+' and '_' instead of '/'.;To:RDoc::Markup::BlankLineo; ; [I"(The padding character is optional. ;TI"CThis method accepts both correctly-padded and unpadded input. ;TI"9Note that it still rejects incorrectly-padded input.;T: @fileI"lib/base64.rb;T:0@omit_headings_from_table_of_contents_below000[I" (str);T@FI" Base64;FcRDoc::NormalModule00strict_encode64-i.ri000064400000000625147565363460010353 0ustar00U:RDoc::AnyMethod[iI"strict_encode64:EFI"Base64#strict_encode64;TF: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [I"2Returns the Base64-encoded version of +bin+. ;TI")This method complies with RFC 4648. ;TI"No line feeds are added.;T: @fileI"lib/base64.rb;T:0@omit_headings_from_table_of_contents_below000[I" (bin);T@FI" Base64;FcRDoc::NormalModule00strict_decode64-i.ri000064400000001006147565363460010333 0ustar00U:RDoc::AnyMethod[iI"strict_decode64:EFI"Base64#strict_decode64;TF: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [ I"2Returns the Base64-decoded version of +str+. ;TI")This method complies with RFC 4648. ;TI"HArgumentError is raised if +str+ is incorrectly padded or contains ;TI"Dnon-alphabet characters. Note that CR or LF are also rejected.;T: @fileI"lib/base64.rb;T:0@omit_headings_from_table_of_contents_below000[I" (str);T@FI" Base64;FcRDoc::NormalModule00cdesc-Base64.ri000064400000002424147565363460007230 0ustar00U:RDoc::NormalModule[iI" Base64:EF@0o:RDoc::Markup::Document: @parts[o;;[ o:RDoc::Markup::Paragraph;[I"OThe Base64 module provides for the encoding (#encode64, #strict_encode64, ;TI"C#urlsafe_encode64) and decoding (#decode64, #strict_decode64, ;TI"E#urlsafe_decode64) of binary data using a Base64 representation.;To:RDoc::Markup::BlankLineS:RDoc::Markup::Heading: leveli: textI" Example;T@o; ;[I"$A simple encoding and decoding.;T@o:RDoc::Markup::Verbatim;[ I"require "base64" ;TI" ;TI"4enc = Base64.encode64('Send reinforcements') ;TI"? # -> "U2VuZCByZWluZm9yY2VtZW50cw==\n" ;TI""plain = Base64.decode64(enc) ;TI"4 # -> "Send reinforcements" ;T: @format0o; ;[I"JThe purpose of using base64 to encode data is that it translates any ;TI"2binary data into purely printable characters.;T: @fileI"lib/base64.rb;T:0@omit_headings_from_table_of_contents_below0;0;0[[[[[I" class;T[[: public[[:protected[[: private[[I" instance;T[[;[ [I" decode64;FI"lib/base64.rb;T[I" encode64;F@8[I"strict_decode64;F@8[I"strict_encode64;F@8[I"urlsafe_decode64;F@8[I"urlsafe_encode64;F@8[;[[;[[[U:RDoc::Context::Section[i0o;;[;0;0[@#@#cRDoc::TopLevelencode64-i.ri000064400000001313147565363460006756 0ustar00U:RDoc::AnyMethod[iI" encode64:EFI"Base64#encode64;TF: publico:RDoc::Markup::Document: @parts[ o:RDoc::Markup::Paragraph; [I"2Returns the Base64-encoded version of +bin+. ;TI")This method complies with RFC 2045. ;TI"9Line feeds are added to every 60 encoded characters.;To:RDoc::Markup::BlankLineo:RDoc::Markup::Verbatim; [I"require 'base64' ;TI"KBase64.encode64("Now is the time for all good coders\nto learn Ruby") ;T: @format0o; ; [I"Generates:;T@o; ; [I"BTm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g ;TI" UnVieQ==;T; 0: @fileI"lib/base64.rb;T:0@omit_headings_from_table_of_contents_below000[I" (bin);T@FI" Base64;FcRDoc::NormalModule00urlsafe_encode64-i.ri000064400000001201147565363460010473 0ustar00U:RDoc::AnyMethod[iI"urlsafe_encode64:EFI"Base64#urlsafe_encode64;TF: publico:RDoc::Markup::Document: @parts[o:RDoc::Markup::Paragraph; [ I"2Returns the Base64-encoded version of +bin+. ;TI"MThis method complies with ``Base 64 Encoding with URL and Filename Safe ;TI"Alphabet'' in RFC 4648. ;TI"BThe alphabet uses '-' instead of '+' and '_' instead of '/'. ;TI"1Note that the result can still contain '='. ;TI">You can remove the padding by setting +padding+ as false.;T: @fileI"lib/base64.rb;T:0@omit_headings_from_table_of_contents_below000[I"(bin, padding: true);T@FI" Base64;FcRDoc::NormalModule00Base64.so000075500000036050147576750330006163 0ustar00ELF> @h5@8@'' -- -  .. . $$Ptd%%%LLQtdRtd-- - GNUN4kѝ03ϓ] @ !BE|~NqXk %u >Ka 8 R"0 10  !%0   "__gmon_start___init_fini_ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_Jv_RegisterClassesPerl_sv_2pvbytePerl_newSVPerl_sv_2mortalPL_charclassstrtol__stack_chk_failPerl_croak_xs_usagePerl_sv_2pv_flagsPerl_sv_utf8_downgradePerl_sv_setpvPerl_sv_catpvn_flagsPerl_sv_catpvf_nocontextPerl_sv_growPerl_sv_utf8_upgrade_flags_growPerl_sv_2bool_flagsPerl_sv_setivPerl_mg_setPerl_sv_newmortalboot_MIME__Base64Perl_xs_apiversion_bootcheckPerl_xs_version_bootcheckPerl_newXS_flagsPerl_call_listlibc.so.6_edata__bss_start_endGLIBC_2.2.5GLIBC_2.4ui 6ii B- p - 0 . . / /  /  / / / 0  0 (0 00 80 @0 H0 P0  X0  `0  h0  p0 x0 0 0 0 0 0 0 0 0 0 0 HH$ HtH5$ %$ @%$ h%$ h%$ h%$ h%$ h%$ h%$ h%$ hp%$ h`%z$ h P%r$ h @%j$ h 0%b$ h %Z$ h %R$ h%J$ h%B$ h%:$ h%2$ h%*$ h%"$ h%$ h%$ hH$ H=$ UH)HHw]H" Ht]@H# H=# UH)HHHH?HHu]H" Ht]H@=# u'H=" UHt H= Mh]p# @f.H= t&Hg" HtUH=r H]WKf.AWAVAUIATUSH8HOpdH%(HD$(1HHQHWpLc9HWIJ :H)HJt:F % =HT$HHD$HL$HELOH DL9IHh1LL$ @HHDHI9vs< t< t< <  HH9xHHfHDBHH9DAuHH)H<=H1HiI9܈wHHHt%H9v DHFHH9ވEuH)H,2EI+nLIHhIENt8IEJt8ID$H|$ Ht8Ht*F HHtH@D$(HH|$0G DHLwH@HD$PHpLM<.H[HLHM6Lt$E1fDM9L@< tP^u<=mHL9uC< u@HL9tC< t< tIM)t.H|$HALLHLL $aL $ML9 %H|$H IHIILsuM9v{ fDHf AHLHT$HL$HAHLAH5' H1L $ L $HEHHHPH@HH)HHD$PLH+t$1HH9HHLL $LM9L $zfL9t ; I9@ILsTHL$HHtt$(IWHT$AHLLsE1(fDKL)I9KH$Ll$IH\$ @AKLALHLM)H AHLMpHL$HAHHLWIKwE1MH$Ll$L9HEHxt H|$HD$,tHt$01ɺLH|$ ID$Hl8ID$Ht8LID$HL$8HDI$HD$XdH3%(Hh[]A\A]A^A_HEHQH@H9HuHH)HT:=|DHEHh}HNA HH@HD$HHH@HD$M H} HLA HL$HHT$AHLHt$0HT$PLCIHD$PHD$ HHD$8uBHfW1ҿf.@(E׉T$(FL$(AL\HHx D$(HD$(HF80D$(HT$HLHD$LD$($HB LuDAWAVAUIATUSHHHWpLdH%(HD$81HBHGpLc:HGIJ8I)IENt81LD$Ef LLD$A AF IInLPLT$0IGALHD$tHIUH2F <L nHD$(IJHVUUUUUUUHH?HH)H HHL$0LLT$LL$LT$H DIHHD$0LL$MHBIPIq1L Ht$fLHHMA}AH5 A?GDAAED HHcA JL]m?@@ Hc 4.JHJ@rHH~T[LH|$(I9LH@HpHH9@ruHH+D$H1HD$0Ht1LH|$(I9s$LHHpHH9@ruL)HEt1ɺLLLD$LD$IELND8IEJt8'IEH\$HDIEHD$8dH3%(#HH[]A\A]A^A_fHAH_Cy 5HHHHT$(H4 HHt$0f.HNA mtMHH@HD$(HLH`fHT$0LLLD$LT$0HLD$1HT$(LLT$LT$IHt!L]B=HJB= HH~HB=HJ<>BHD$0CHL]@0?A A42J@2AWAVAUIATUSHHWpdH%(HD$1HHJHOpLc2HWEfIJ 2H)HJt2McF HH^HhH,$IEH@#HPIEL?456789:;<=  !"#$%&'()*+,-./0123ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/;HxS^"ީםV~7ARy.0%@3I[ex7B7lb>(<$>[R" 9:˶3yW2WJ,"ʵͬ"fMEf"Bq#bt;2󍽘{϶m|tPyꊇ<.u2Hr?!Za[$^kd~Y oeޕlz<i=zdFD}m#.?}F$zP?~ %.oK'*rce; ;IQ:Lȫ<ϦPzB?w fȼYS@1yAR-c|@'C;UP⤴1x=Ŵ?87