public function testKeyTypes()
{
$key = KeyFactory::generateAuthenticationKey();
$this->assertFalse($key->isAsymmetricKey());
$this->assertFalse($key->isEncryptionKey());
$this->assertTrue($key->isSecretKey());
$this->assertTrue($key->isSigningKey());
$this->assertFalse($key->isPublicKey());
$key = KeyFactory::generateEncryptionKey();
$this->assertFalse($key->isAsymmetricKey());
$this->assertTrue($key->isEncryptionKey());
$this->assertTrue($key->isSecretKey());
$this->assertFalse($key->isSigningKey());
$this->assertFalse($key->isPublicKey());
$keypair = KeyFactory::generateEncryptionKeyPair();
$enc_secret = $keypair->getSecretKey();
$enc_public = $keypair->getPublicKey();
$this->assertTrue($enc_secret->isAsymmetricKey());
$this->assertTrue($enc_secret->isEncryptionKey());
$this->assertTrue($enc_secret->isSecretKey());
$this->assertFalse($enc_secret->isSigningKey());
$this->assertFalse($enc_secret->isPublicKey());
$this->assertTrue($enc_public->isAsymmetricKey());
$this->assertTrue($enc_public->isEncryptionKey());
$this->assertFalse($enc_public->isSecretKey());
$this->assertFalse($enc_public->isSigningKey());
$this->assertTrue($enc_public->isPublicKey());
$keypair = KeyFactory::generateSignatureKeyPair();
$sign_secret = $keypair->getSecretKey();
$sign_public = $keypair->getPublicKey();
$this->assertTrue($sign_secret->isAsymmetricKey());
$this->assertFalse($sign_secret->isEncryptionKey());
$this->assertTrue($sign_secret->isSecretKey());
$this->assertTrue($sign_public->isSigningKey());
$this->assertFalse($sign_secret->isPublicKey());
$this->assertTrue($sign_public->isAsymmetricKey());
$this->assertFalse($sign_public->isEncryptionKey());
$this->assertFalse($sign_public->isSecretKey());
$this->assertTrue($sign_public->isSigningKey());
$this->assertTrue($sign_public->isPublicKey());
}