public function test_blkcpy() { $dest = "0123456789abcdefghijklmnopqrstuvwxyz"; $this->assertEquals(strlen($dest), 36); $src = "xxxxx0123456789yyyyyyyyyyyyyyyy"; blkcpy($dest, 10, $src, 5, 10); $this->assertEquals(strlen($dest), 36); $this->assertEquals($dest, "01234567890123456789klmnopqrstuvwxyz"); $dest = "0123456789abcdefghijklmnopqrstuvwxyz"; $this->assertEquals(strlen($dest), 36); $src = "xxxxx0123456789yyyyyyyyyyyyyyyy"; blkcpy($dest, 0, $src, 0, 10); $this->assertEquals(strlen($dest), 36); $this->assertEquals($dest, "xxxxx01234abcdefghijklmnopqrstuvwxyz"); }
function smix(&$B, $offset, $r, $N, &$V, &$XY) { $X = substr($XY, 0, 128 * $r); $Y = substr($XY, 128 * $r); blkcpy($X, 0, $B, $offset, 128 * $r); for ($i = 0; $i < $N; $i++) { blkcpy($V, $i * 128 * $r, $X, 0, 128 * $r); blockmix_salsa8($X, $Y, $r); } for ($i = 0; $i < $N; $i++) { $j = integerify($X, $r) & $N - 1; blkxor($X, 0, $V, $j * 128 * $r, 128 * $r); blockmix_salsa8($X, $Y, $r); } blkcpy($B, $offset, $X, 0, 128 * $r); $XY = $X . $Y; }