1. A method of generating a secure program interface for software intended to be used with predetermined hardware comprising the steps of providing as a first input at least one device specific identifier, providing as a second input one software specific identifier, and generating as an output a production key adapted to be operatively associated with the software; wherein the at least one device specific identifier includes at least two device specific identifiers selected consisting of MAC address, chipset ID, vendor ID, serial number, and address range; wherein the same production key is used for a plurality of different ones of the hardware; and wherein a unique copy of the software is associated with each of the plurality of different ones of the hardware.