/** * Split a key using a variant of HKDF that used a keyed BLAKE2b hash rather * than an HMAC construct * * @param \ParagonIE\Halite\Key $master * @param string $salt * @return array */ public static function splitKeys(Key $master, $salt = null) { $binary = $master->get(); return [CryptoUtil::hkdfBlake2b($binary, \Sodium\CRYPTO_SECRETBOX_KEYBYTES, Config::HKDF_SBOX, $salt), CryptoUtil::hkdfBlake2b($binary, \Sodium\CRYPTO_AUTH_KEYBYTES, Config::HKDF_AUTH, $salt)]; }
/** * Save a key to a file * * @param Key|KeyPair $key * @param string $filename * @return int|boolean */ public static function save($key, $filename = '') { if ($key instanceof KeyPair) { return self::saveKeyFile($filename, $key->getSecretKey()->get()); } return self::saveKeyFile($filename, $key->get()); }