A method comprising: using first cryptographic key data specific to a computing device and which has been hardcoded to a memory of the computing device by an in-system programmer to verify a package of machine readable instructions to run on the computing device; executing, by the computing device, the verified package, wherein the execution of the package comprises: generating a random number using a true random number generator of the computing device, and storing the generated random number hardcoded to a one-time programmable memory by an in-system programmer of the computing device; producing second cryptographic key data, the second cryptographic key data generated by a pseudorandom number generator of the computing device based on a seed comprising a combination of the random number generated by a true random number generator of the computing device as a first seed portion and a second seed portion; and sending a portion of the second cryptographic key data to a certifying authority; the method further comprising receiving a certification value based on the sent portion of the second cryptographic key data from the certifying authority and storing the certification value in a memory of the computing device. using first cryptographic key data specific to a computing device and which has been hardcoded to a memory of the computing device by an in-system programmer to verify a package of machine readable instructions to run on the computing device; executing, by the computing device, the verified package, wherein the execution of the package comprises: generating a random number using a true random number generator of the computing device, and storing the generated random number hardcoded to a one-time programmable memory by an in-system programmer of the computing device; producing second cryptographic key data, the second cryptographic key data generated by a pseudorandom number generator of the computing device based on a seed comprising a combination of the random number generated by a true random number generator of the computing device as a first seed portion and a second seed portion; and sending a portion of the second cryptographic key data to a certifying authority; the method further comprising receiving a certification value based on the sent portion of the second cryptographic key data from the certifying authority and storing the certification value in a memory of the computing device. generating a random number using a true random number generator of the computing device, and storing the generated random number hardcoded to a one-time programmable memory by an in-system programmer of the computing device; producing second cryptographic key data, the second cryptographic key data generated by a pseudorandom number generator of the computing device based on a seed comprising a combination of the random number generated by a true random number generator of the computing device as a first seed portion and a second seed portion; and sending a portion of the second cryptographic key data to a certifying authority; the method further comprising receiving a certification value based on the sent portion of the second cryptographic key data from the certifying authority and storing the certification value in a memory of the computing device.