Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
shiftLeft example
$return
->limbs = array
(
(int)
(
$this
->overflow & 0xffff
)
,
(int)
(
$this
->limbs
[
0
]
)
)
;
$return
->overflow =
$this
->overflow >> 16;
return
$return
->
shiftRight
(
$c
& 15
)
;
}
if
(
$c
=== 0
)
{
$return
->limbs =
$this
->limbs;
}
elseif
(
$c
< 0
)
{
/** @var int $c */
return
$this
->
shiftLeft
(
-
$c
)
;
}
else
{
if
(
!
is_int
(
$c
)
)
{
throw
new
TypeError
(
)
;
}
/** @var int $c */
// $return->limbs[0] = (int) (($this->limbs[0] >> $c) & 0xffff);
$carryLeft
=
(int)
(
$this
->overflow &
(
(
1
<<
(
$c
+ 1
)
)
- 1
)
)
;
$return
->limbs
[
0
]
=
(int)
(
(
(
$this
->limbs
[
0
]
>>
$c
)
|
(
$carryLeft
<<
(
16 -
$c
)
)
)
& 0xffff
)
;
$carryRight
=
(int)
(
$this
->limbs
[
0
]
&
(
(
1
<<
(
$c
+ 1
)
)
- 1
)
)
;
$return
->limbs
[
1
]
=
(int)
(
(
(
$this
->limbs
[
1
]
>>
$c
)
|
(
$carryRight
<<
(
16 -
$c
)
)
)
& 0xffff
)
;
$return
->overflow >>=
$c
;
}
$this
->limbs
[
3
]
, 0, 0, 0
)
;
}
elseif
(
$c
>= 32
)
{
$return
->limbs = array
(
$this
->limbs
[
2
]
,
$this
->limbs
[
3
]
, 0, 0
)
;
}
else
{
$return
->limbs = array
(
$this
->limbs
[
1
]
,
$this
->limbs
[
2
]
,
$this
->limbs
[
3
]
, 0
)
;
}
return
$return
->
shiftLeft
(
$c
& 15
)
;
}
if
(
$c
=== 0
)
{
$return
->limbs =
$this
->limbs;
}
elseif
(
$c
< 0
)
{
/** @var int $c */
return
$this
->
shiftRight
(
-
$c
)
;
}
else
{
if
(
!
is_int
(
$c
)
)
{
throw
new
TypeError
(
)
;
}
/** @var int $carry */
/** @var int $mask */
$mask
= ~
$mask
;
$h0
=
$h0
->
mask
(
$mask
)
->
orInt32
(
$g0
)
;
$h1
=
$h1
->
mask
(
$mask
)
->
orInt32
(
$g1
)
;
$h2
=
$h2
->
mask
(
$mask
)
->
orInt32
(
$g2
)
;
$h3
=
$h3
->
mask
(
$mask
)
->
orInt32
(
$g3
)
;
$h4
=
$h4
->
mask
(
$mask
)
->
orInt32
(
$g4
)
;
/* h = h % (2^128) */
$h0
=
$h0
->
orInt32
(
$h1
->
shiftLeft
(
26
)
)
;
$h1
=
$h1
->
shiftRight
(
6
)
->
orInt32
(
$h2
->
shiftLeft
(
20
)
)
;
$h2
=
$h2
->
shiftRight
(
12
)
->
orInt32
(
$h3
->
shiftLeft
(
14
)
)
;
$h3
=
$h3
->
shiftRight
(
18
)
->
orInt32
(
$h4
->
shiftLeft
(
8
)
)
;
/* mac = (h + pad) % (2^128) */
$f
=
$h0
->
toInt64
(
)
->
addInt64
(
$this
->pad
[
0
]
)
;
$h0
=
$f
->
toInt32
(
)
;
$f
=
$h1
->
toInt64
(
)
->
addInt64
(
$this
->pad
[
1
]
)
->
addInt
(
$h0
->overflow
)
;
$h1
=
$f
->
toInt32
(
)
;
$f
=
$h2
->
toInt64
(
)
->
addInt64
(
$this
->pad
[
2
]
)
->
addInt
(
$h1
->overflow
)
;
$h2
=
$f
->
toInt32
(
)
;
public
static
function
fe_mul121666
(
ParagonIE_Sodium_Core32_Curve25519_Fe
$f
)
{
/** @var array<int, ParagonIE_Sodium_Core32_Int64> $h */
$h
= array
(
)
;
for
(
$i
= 0;
$i
< 10; ++
$i
)
{
$h
[
$i
]
=
$f
[
$i
]
->
toInt64
(
)
->
mulInt
(
121666, 17
)
;
}
$carry9
=
$h
[
9
]
->
addInt
(
1 << 24
)
->
shiftRight
(
25
)
;
$h
[
0
]
=
$h
[
0
]
->
addInt64
(
$carry9
->
mulInt
(
19, 5
)
)
;
$h
[
9
]
=
$h
[
9
]
->
subInt64
(
$carry9
->
shiftLeft
(
25
)
)
;
$carry1
=
$h
[
1
]
->
addInt
(
1 << 24
)
->
shiftRight
(
25
)
;
$h
[
2
]
=
$h
[
2
]
->
addInt64
(
$carry1
)
;
$h
[
1
]
=
$h
[
1
]
->
subInt64
(
$carry1
->
shiftLeft
(
25
)
)
;
$carry3
=
$h
[
3
]
->
addInt
(
1 << 24
)
->
shiftRight
(
25
)
;
$h
[
4
]
=
$h
[
4
]
->
addInt64
(
$carry3
)
;
$h
[
3
]
=
$h
[
3
]
->
subInt64
(
$carry3
->
shiftLeft
(
25
)
)
;
$carry5
=
$h
[
5
]
->
addInt
(
1 << 24
)
->
shiftRight
(
25
)
;
$h
[
6
]
=
$h
[
6
]
->
addInt64
(
$carry5
)
;
/** @var ParagonIE_Sodium_Core32_Int32 $h8 */
$h8
= ParagonIE_Sodium_Core32_Int32::
fromInt
(
self::
load_3
(
self::
substr
(
$s
, 26, 3
)
)
<< 4
)
;
/** @var ParagonIE_Sodium_Core32_Int32 $h9 */
$h9
= ParagonIE_Sodium_Core32_Int32::
fromInt
(
(
self::
load_3
(
self::
substr
(
$s
, 29, 3
)
)
& 8388607
)
<< 2
)
;
$carry9
=
$h9
->
addInt
(
1 << 24
)
->
shiftRight
(
25
)
;
$h0
=
$h0
->
addInt32
(
$carry9
->
mulInt
(
19, 5
)
)
;
$h9
=
$h9
->
subInt32
(
$carry9
->
shiftLeft
(
25
)
)
;
$carry1
=
$h1
->
addInt
(
1 << 24
)
->
shiftRight
(
25
)
;
$h2
=
$h2
->
addInt32
(
$carry1
)
;
$h1
=
$h1
->
subInt32
(
$carry1
->
shiftLeft
(
25
)
)
;
$carry3
=
$h3
->
addInt
(
1 << 24
)
->
shiftRight
(
25
)
;
$h4
=
$h4
->
addInt32
(
$carry3
)
;
$h3
=
$h3
->
subInt32
(
$carry3
->
shiftLeft
(
25
)
)
;
$carry5
=
$h5
->
addInt
(
1 << 24
)
->
shiftRight
(
25
)
;
$h6
=
$h6
->
addInt32
(
$carry5
)
;