1. A system comprising: a computer processor to protect computer software from unauthorized use by: encrypting a license file associated with the computer software using a private key, wherein the license file comprises one or more license keys, each license key associated with a feature of the computer software; and decrypting the license file associated with the computer software at runtime of the computer software using a public key; a second computer processor to determine whether a user is permitted to execute the computer software; and a third computer processor to authenticate the second computer processor by one or more of: determining whether a hash code included within the second computer processor matches a hash code generated by a user of the computer software at run time of the computer software; and encrypting the second computer processor prior to run time of the computer software using the private key and decrypting the second computer processor at run time of the computer software using the public key; wherein the computer software comprises one or more major versions, one or more minor versions, one or more incremental versions, and one or more qualifiers; wherein the one or more qualifiers denote minor fixes to the computer software; wherein the license key comprises one or more of a product name, a feature name, a product version, a feature version, a licensee name, a licensee host name, an expiration date, a serial number of an x.509 certificate used to generate the public key, and a number of units permitted to execute the feature; and wherein the second computer processor determines whether a user is permitted to execute the computer software by reading data from the license file including one or more of the product name, the feature name, the product version, the feature version, the licensee name, the licensee host name, the expiration date, the serial number of the x.509 certificate that includes the public key, and the number of units permitted to execute the feature, and comparing the data from the license file with data associated with a user of the software including one or more of the product name, the feature name, the product version, the feature version, the licensee name, the licensee host name, the expiration date, the serial number of the x.509 certificate that includes the public key, and the number of units permitted to execute the feature; and wherein the second computer processor terminates execution of the computer software when one or more of the comparisons do not match.