$h[4
] =
$h[4
]->
subInt64($carry4->
shiftLeft(26
));
$carry6 =
$h[6
]->
addInt(1 << 25
)->
shiftRight(26
);
$h[7
] =
$h[7
]->
addInt64($carry6);
$h[6
] =
$h[6
]->
subInt64($carry6->
shiftLeft(26
));
$carry8 =
$h[8
]->
addInt(1 << 25
)->
shiftRight(26
);
$h[9
] =
$h[9
]->
addInt64($carry8);
$h[8
] =
$h[8
]->
subInt64($carry8->
shiftLeft(26
));
for ($i = 0;
$i < 10; ++
$i) { $h[$i] =
$h[$i]->
toInt32();
} /** @var array<int, ParagonIE_Sodium_Core32_Int32> $h2 */
$h2 =
$h;
return ParagonIE_Sodium_Core32_Curve25519_Fe::
fromArray($h2);
} /**
* @internal You should not use this directly from another application
*
* Inline comments preceded by # are from libsodium's ref10 code.
*
* @param string $n
* @param string $p
* @return string
* @throws SodiumException
* @throws TypeError
*/