| @@ 433-466 (lines=34) @@ | ||
| 430 | * @param string $publicKey |
|
| 431 | * @return string |
|
| 432 | */ |
|
| 433 | public static function box_seal($message, $publicKey) |
|
| 434 | { |
|
| 435 | /** @var string $ephemeralKeypair */ |
|
| 436 | $ephemeralKeypair = self::box_keypair(); |
|
| 437 | ||
| 438 | /** @var string $ephemeralSK */ |
|
| 439 | $ephemeralSK = self::box_secretkey($ephemeralKeypair); |
|
| 440 | ||
| 441 | /** @var string $ephemeralPK */ |
|
| 442 | $ephemeralPK = self::box_publickey($ephemeralKeypair); |
|
| 443 | ||
| 444 | /** @var string $nonce */ |
|
| 445 | $nonce = self::generichash( |
|
| 446 | $ephemeralPK . $publicKey, |
|
| 447 | '', |
|
| 448 | 24 |
|
| 449 | ); |
|
| 450 | ||
| 451 | /** @var string $keypair - The combined keypair used in crypto_box() */ |
|
| 452 | $keypair = self::box_keypair_from_secretkey_and_publickey($ephemeralSK, $publicKey); |
|
| 453 | ||
| 454 | /** @var string $ciphertext Ciphertext + MAC from crypto_box */ |
|
| 455 | $ciphertext = self::box($message, $nonce, $keypair); |
|
| 456 | try { |
|
| 457 | ParagonIE_Sodium_Compat::memzero($ephemeralKeypair); |
|
| 458 | ParagonIE_Sodium_Compat::memzero($ephemeralSK); |
|
| 459 | ParagonIE_Sodium_Compat::memzero($nonce); |
|
| 460 | } catch (Error $ex) { |
|
| 461 | $ephemeralKeypair = null; |
|
| 462 | $ephemeralSK = null; |
|
| 463 | $nonce = null; |
|
| 464 | } |
|
| 465 | return $ephemeralPK . $ciphertext; |
|
| 466 | } |
|
| 467 | ||
| 468 | /** |
|
| 469 | * Opens a message encrypted via box_seal(). |
|
| @@ 433-466 (lines=34) @@ | ||
| 430 | * @param string $publicKey |
|
| 431 | * @return string |
|
| 432 | */ |
|
| 433 | public static function box_seal($message, $publicKey) |
|
| 434 | { |
|
| 435 | /** @var string $ephemeralKeypair */ |
|
| 436 | $ephemeralKeypair = self::box_keypair(); |
|
| 437 | ||
| 438 | /** @var string $ephemeralSK */ |
|
| 439 | $ephemeralSK = self::box_secretkey($ephemeralKeypair); |
|
| 440 | ||
| 441 | /** @var string $ephemeralPK */ |
|
| 442 | $ephemeralPK = self::box_publickey($ephemeralKeypair); |
|
| 443 | ||
| 444 | /** @var string $nonce */ |
|
| 445 | $nonce = self::generichash( |
|
| 446 | $ephemeralPK . $publicKey, |
|
| 447 | '', |
|
| 448 | 24 |
|
| 449 | ); |
|
| 450 | ||
| 451 | /** @var string $keypair - The combined keypair used in crypto_box() */ |
|
| 452 | $keypair = self::box_keypair_from_secretkey_and_publickey($ephemeralSK, $publicKey); |
|
| 453 | ||
| 454 | /** @var string $ciphertext Ciphertext + MAC from crypto_box */ |
|
| 455 | $ciphertext = self::box($message, $nonce, $keypair); |
|
| 456 | try { |
|
| 457 | ParagonIE_Sodium_Compat::memzero($ephemeralKeypair); |
|
| 458 | ParagonIE_Sodium_Compat::memzero($ephemeralSK); |
|
| 459 | ParagonIE_Sodium_Compat::memzero($nonce); |
|
| 460 | } catch (Error $ex) { |
|
| 461 | $ephemeralKeypair = null; |
|
| 462 | $ephemeralSK = null; |
|
| 463 | $nonce = null; |
|
| 464 | } |
|
| 465 | return $ephemeralPK . $ciphertext; |
|
| 466 | } |
|
| 467 | ||
| 468 | /** |
|
| 469 | * Opens a message encrypted via box_seal(). |
|