A method of providing one time programming functionality on an integrated circuit, the method comprising: receiving one time programmable data from a source that is external to the integrated circuit; determining whether the received one time programmable data is authentic; in response to determining that the received one time programmable data is authentic, storing the received one time programmable data in a write-lockable memory device that is located on the integrated circuit, and thereafter locking the write-lockable memory device to prevent any further writing to the write-lockable memory device for so long as power is maintained to the integrated circuit; and from the moment of locking the write-lockable memory device onward for so long as power is maintained to the integrated circuit, retrieving the one time programmable data from the write-lockable memory device whenever the one time programmable data is needed, wherein determining whether the received one time programmable data is authentic comprises: making a challenge word available to a recipient that is external to the integrated circuit; receiving a message authentication code from the source that is external to the integrated circuit; if the integrated circuit is operating in a non-debug mode, then: retrieving a non-debug key from a key memory device located on the integrated circuit; and using the non-debug key and the message authentication code to determine whether the received one time programmable data is authentic; and if the integrated circuit is operating in a debug mode, then: locking the key memory device to prevent any further reading of the key memory device for so long as power is maintained to the integrated circuit operating in debug mode; retrieving a debug key from another memory device located on the integrated circuit; and using the debug key and the message authentication code to determine whether the received one time programmable data is authentic. receiving one time programmable data from a source that is external to the integrated circuit; determining whether the received one time programmable data is authentic; in response to determining that the received one time programmable data is authentic, storing the received one time programmable data in a write-lockable memory device that is located on the integrated circuit, and thereafter locking the write-lockable memory device to prevent any further writing to the write-lockable memory device for so long as power is maintained to the integrated circuit; and from the moment of locking the write-lockable memory device onward for so long as power is maintained to the integrated circuit, retrieving the one time programmable data from the write-lockable memory device whenever the one time programmable data is needed, wherein determining whether the received one time programmable data is authentic comprises: making a challenge word available to a recipient that is external to the integrated circuit; receiving a message authentication code from the source that is external to the integrated circuit; if the integrated circuit is operating in a non-debug mode, then: retrieving a non-debug key from a key memory device located on the integrated circuit; and using the non-debug key and the message authentication code to determine whether the received one time programmable data is authentic; and if the integrated circuit is operating in a debug mode, then: locking the key memory device to prevent any further reading of the key memory device for so long as power is maintained to the integrated circuit operating in debug mode; retrieving a debug key from another memory device located on the integrated circuit; and using the debug key and the message authentication code to determine whether the received one time programmable data is authentic. making a challenge word available to a recipient that is external to the integrated circuit; receiving a message authentication code from the source that is external to the integrated circuit; if the integrated circuit is operating in a non-debug mode, then: retrieving a non-debug key from a key memory device located on the integrated circuit; and using the non-debug key and the message authentication code to determine whether the received one time programmable data is authentic; and retrieving a non-debug key from a key memory device located on the integrated circuit; and using the non-debug key and the message authentication code to determine whether the received one time programmable data is authentic; and if the integrated circuit is operating in a debug mode, then: locking the key memory device to prevent any further reading of the key memory device for so long as power is maintained to the integrated circuit operating in debug mode; retrieving a debug key from another memory device located on the integrated circuit; and using the debug key and the message authentication code to determine whether the received one time programmable data is authentic. locking the key memory device to prevent any further reading of the key memory device for so long as power is maintained to the integrated circuit operating in debug mode; retrieving a debug key from another memory device located on the integrated circuit; and using the debug key and the message authentication code to determine whether the received one time programmable data is authentic.