

By default, it includes the user’s name, an expiration date, the type of license (trial, standard, floating, etc…), and most importantly the cryptographic signature. The format of the license that Rhino Licensing generates is an XML document, plain and simple. Other systems that use asymmetric encryption include SSH, SSL, PGP, and among others, Git uses asymmetric encryption for its security due to it using SSH. If someone tries to use a license key they’ve generated themselves, it wouldn’t work unless they had our exact private key. When the user receives a license key, the application is able to verify that it came from us by using the public key. In the case of license key generation, we store our private key on the server (and never tell anyone it!), and distribute the public key with our application. You encrypt a value using the one key, and it can only be decrypted using the other key.

In cryptography, asymmetric means there are two parts to each key, one public and one private. Rhino Licensing uses asymmetric encryption–also known as public-key cryptography–specifically the RSA algorithm. Rhino Licensing is an open-source licensing framework by Ayende Rahien, and it grew out of his frustration with other license providers while creating NHibernate Profiler.
