| 
<?phpdeclare(strict_types=1);
 namespace ParagonIE\Paserk\Types;
 
 use ParagonIE\Paserk\{
 IdCommonTrait,
 IdInterface,
 PaserkException
 };
 use ParagonIE\Paseto\Exception\InvalidVersionException;
 use ParagonIE\Paseto\Keys\AsymmetricSecretKey;
 use SodiumException;
 
 /**
 * Class Sid
 * @package ParagonIE\Paserk\Types
 */
 class Sid implements IdInterface
 {
 use IdCommonTrait;
 
 /**
 * Calculate the PASERK secret key ID for a given AsymmetricSecretKey.
 *
 * @param AsymmetricSecretKey $sk
 * @return string
 *
 * @throws InvalidVersionException
 * @throws PaserkException
 * @throws SodiumException
 */
 public static function encodeSecret(AsymmetricSecretKey $sk): string
 {
 $version = $sk->getProtocol();
 return self::encode($version, (new SecretType($version))->encode($sk));
 }
 
 /**
 * @return string
 */
 public static function getTypeLabel(): string
 {
 return 'sid';
 }
 }
 
 |