diff --git a/src/test/kotlin/ExtensionTest.kt b/src/test/kotlin/ExtensionTest.kt index 3b5efb8..be7ebcb 100644 --- a/src/test/kotlin/ExtensionTest.kt +++ b/src/test/kotlin/ExtensionTest.kt @@ -108,6 +108,18 @@ class ExtensionTest { ) } + @Test + fun parseFrom_malformedRotDeviceLocked_successfullyParsed() { + val keyDescription = + KeyDescription.parseFrom( + testData + .resolve("invalid/malformed_rot_device_locked.pem") + .inputStream() + .asX509Certificate() + ) + assertThat(keyDescription?.hardwareEnforced?.rootOfTrust?.deviceLocked).isTrue() + } + @Test fun parseFrom_invalidPatchLevel_returnsNull( @TestParameter("202400", "00000000", "2000231") patchLevel: String diff --git a/testdata/invalid/malformed_rot_device_locked.pem b/testdata/invalid/malformed_rot_device_locked.pem new file mode 100644 index 0000000..b944714 --- /dev/null +++ b/testdata/invalid/malformed_rot_device_locked.pem @@ -0,0 +1,83 @@ +-----BEGIN CERTIFICATE----- +MIIC8TCCApagAwIBAgIBATAKBggqhkjOPQQDAjA5MQwwCgYDVQQMDANURUUxKTAn +BgNVBAUTIDVlZThlMTAxN2U1N2RmZTg2ZGY0OGY5NDliNDJhYmRkMB4XDTcwMDEw +MTAwMDAwMFoXDTM3MTIxNTAwMDAwMFowHzEdMBsGA1UEAwwUQW5kcm9pZCBLZXlz +dG9yZSBLZXkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR4pkh2XmWk/4OMceyS +diXVDwq20dha3HN+APzstRgBcs6cvi+uPhIo9q+SIAB4yxA0hifxuNodBuk5YqyN +HXDKo4IBpzCCAaMwCwYDVR0PBAQDAgeAMIIBcQYKKwYBBAHWeQIBEQSCAWEwggFd +AgEDCgEBAgEECgEBBFkBmxFaF/3yazcTCUZwgNCuwbWgwcanozULkgVgZZ+nm5ei +GnUam/nwMTI7mSU2GdzEwxpKiroDNQBjIWIPLHCz6A8MUE9kdLX0h4mP5Yd88tnX +ws0lXiNfpwQAMGK/hT0IAgYBnFeLtqC/hUVSBFAwTjEoMCYEHmNvbS5nb29nbGUu +YW5kcm9pZC5hcHBzLnBob3RvcwIEAw0mazEiBCA9ehIjAZqjnZ6g40Nqt8CJa/tP +tnn03l/nwj8ybI+ZSjCBjaEFMQMCAQKiAwIBA6MEAgIBAKUFMQMCAQSqAwIBAb+D +dwIFAL+FPgMCAQC/hUBMMEoEIGyILSRpoKAyYfixE3vNgt1s6MJsAufxCJF8WjLv +pKh8AQEBCgEABCCWOcnpKag/lrtRmW16oBMOGy1uc3NOstxFXOKDHBJA0r+FQQUC +AwGGoL+FQgUCAwMV3zAfBgNVHSMEGDAWgBRh+jTnohXxR2eKa0lRutYiEPy10TAK +BggqhkjOPQQDAgNJADBGAiEAhHrAfOafMB04q6ySXttZEdASfvuWCfMlwetQnaUw +2cMCIQCqlCq0j5AiLPQDvgJmnrflsHK15eINmhAKrQydDFNnFw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIB8zCCAXqgAwIBAgIRAIcPTRoSVuUbhEYaHCA+CwswCgYIKoZIzj0EAwIwOTEM +MAoGA1UEDAwDVEVFMSkwJwYDVQQFEyBiNzAxYmRlYmFhMGUxNjNjNDk4M2VmNDQ5 +Y2YyMjczYTAeFw0yMTAxMTMyMTEwNTlaFw0zMTAxMTEyMTEwNTlaMDkxDDAKBgNV +BAwMA1RFRTEpMCcGA1UEBRMgNWVlOGUxMDE3ZTU3ZGZlODZkZjQ4Zjk0OWI0MmFi +ZGQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASh25R5wKFkb3+HO0BQVGud9g7i +sdwfCodnaUdf8UNvONlJ3VpG3Q2He4mvYi+Hsf//ZjirYxt3UYzbMbSumByLo2Mw +YTAdBgNVHQ4EFgQUYfo056IV8UdnimtJUbrWIhD8tdEwHwYDVR0jBBgwFoAUgsAF +Cf3Gj3EYKjzaIEx2/7vO+h0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AgQwCgYIKoZIzj0EAwIDZwAwZAIwQJkP5byK51/384Hdk+cYXh+oa02Aui79420s +Df6zf5RVWXDBYlu+uFnqs56CNjSdAjBwTEZdxUY4XUBxvjD4F7E1vHWEAu0My8uO +p15S8lhTEr3wBa3nwtZLkOn6LybVAZY= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDlDCCAXygAwIBAgIRAMCYDGn+bv4sULuIPvxLWIQwDQYJKoZIhvcNAQELBQAw +GzEZMBcGA1UEBRMQZjkyMDA5ZTg1M2I2YjA0NTAeFw0yMTAxMTMyMTA5MjdaFw0z +MTAxMTEyMTA5MjdaMDkxDDAKBgNVBAwMA1RFRTEpMCcGA1UEBRMgYjcwMWJkZWJh +YTBlMTYzYzQ5ODNlZjQ0OWNmMjI3M2EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAS0 +4MJay37J4sxw7bsoKUL1AjhT8SNSFCC9s3tsvLd1rv57tvWLOq8w7N71ttWq6EJN +hw+JEjHLFnXhoiKjRIlyjcdeoj0PddtmW/ZoFuzTBcPfzPBQpl03v43ZfGWk+Uij +YzBhMB0GA1UdDgQWBBSCwAUJ/caPcRgqPNogTHb/u876HTAfBgNVHSMEGDAWgBQ2 +YeEAfIgFCVGLRGxH/xpMyepPEjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwICBDANBgkqhkiG9w0BAQsFAAOCAgEAMuU8AneoBiXrItzXOKFS9dB3fsBcWvVd +htnhDC1CaJ1469bla71nVJ8lZazEaBhBwU5207Gb5elK2phdN88uO6raPyZHinEE +A2FS1WcM5o4bsp8RrZLn/cfWjc0vD3zXSamFQec8btU4KJtjWSdB3NDgZX3TLpL1 +8NLd2tnvm4K6me8sC7N/yexMKa/MSjtER6EAGWRDpW7AkAk3c4OixLF0Im/uZTAP +8qn1aEiHq22zHMWRAQ+83oO8rffza1Yipv3DdamGzGXTOd2J3fedn0LbBVpFJw8N +97PT87zI/wYp886+BXZCmUkkjtl5zFDVJH3gJSmuZGdSVvNY+UcqYufmW9vBQaN6 +9IuRmlSD8Vvgz9WzvPkompcOQrTXZYCRL3NGx6oVXRQiJGDwrzru5IHYaSRCnpTD +FJDf4+9ND5Q0IBbpdcRJ1KAmiMa+0QwTQtDVeevT7ycm38svLR7EJMe4M16cxrYa +mkiZweeGeJyCte4N0eoHTDVGsnPf8pwYBw3hwPmb3WpN1rRKju4+TXf7495aFX8j +fT3i7DigqF6U9na1yL2SPJinAxrlNH/b91YIOResBzErUwKKcNDe/PnKes5/TMO6 +ZbjPuzTu8aeHAFSVHA1Sq5T0gT+h45Sj/ICxFHZjva8ED5jc5aCOJwt81q40cZIr +YT8DjPCSYAE= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFHDCCAwSgAwIBAgIJANUP8luj8tazMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV +BAUTEGY5MjAwOWU4NTNiNmIwNDUwHhcNMTkxMTIyMjAzNzU4WhcNMzQxMTE4MjAz +NzU4WjAbMRkwFwYDVQQFExBmOTIwMDllODUzYjZiMDQ1MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAr7bHgiuxpwHsK7Qui8xUFmOr75gvMsd/dTEDDJdS +Sxtf6An7xyqpRR90PL2abxM1dEqlXnf2tqw1Ne4Xwl5jlRfdnJLmN0pTy/4lj4/7 +tv0Sk3iiKkypnEUtR6WfMgH0QZfKHM1+di+y9TFRtv6y//0rb+T+W8a9nsNL/ggj +nar86461qO0rOs2cXjp3kOG1FEJ5MVmFmBGtnrKpa73XpXyTqRxB/M0n1n/W9nGq +C4FSYa04T6N5RIZGBN2z2MT5IKGbFlbC8UrW0DxW7AYImQQcHtGl/m00QLVWutHQ +oVJYnFPlXTcHYvASLu+RhhsbDmxMgJJ0mcDpvsC4PjvB+TxywElgS70vE0XmLD+O +JtvsBslHZvPBKCOdT0MS+tgSOIfga+z1Z1g7+DVagf7quvmag8jfPioyKvxnK/Eg +sTUVi2ghzq8wm27ud/mIM7AY2qEORR8Go3TVB4HzWQgpZrt3i5MIlCaY504LzSRi +igHCzAPlHws+W0rB5N+er5/2pJKnfBSDiCiFAVtCLOZ7gLiMm0jhO2B6tUXHI/+M +RPjy02i59lINMRRev56GKtcd9qO/0kUJWdZTdA2XoS82ixPvZtXQpUpuL12ab+9E +aDK8Z4RHJYYfCT3Q5vNAXaiWQ+8PTWm2QgBR/bkwSWc+NpUFgNPN9PvQi8WEg5Um +AGMCAwEAAaNjMGEwHQYDVR0OBBYEFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMB8GA1Ud +IwQYMBaAFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgIEMA0GCSqGSIb3DQEBCwUAA4ICAQBOMaBc8oumXb2voc7XCWnu +XKhBBK3e2KMGz39t7lA3XXRe2ZLLAkLM5y3J7tURkf5a1SutfdOyXAmeE6SRo83U +h6WszodmMkxK5GM4JGrnt4pBisu5igXEydaW7qq2CdC6DOGjG+mEkN8/TA6p3cno +L/sPyz6evdjLlSeJ8rFBH6xWyIZCbrcpYEJzXaUOEaxxXxgYz5/cTiVKN2M1G2ok +QBUIYSY6bjEL4aUN5cfo7ogP3UvliEo3Eo0YgwuzR2v0KR6C1cZqZJSTnghIC/vA +D32KdNQ+c3N+vl2OTsUVMC1GiWkngNx1OO1+kXW+YTnnTUOtOIswUP/Vqd5SYgAI +mMAfY8U9/iIgkQj6T2W6FsScy94IN9fFhE1UtzmLoBIuUFsVXJMTz+Jucth+IqoW +Fua9v1R93/k98p41pjtFX+H8DslVgfP097vju4KDlqN64xV1grw3ZLl4CiOe/A91 +oeLm2UHOq6wn3esB4r2EIQKb6jTVGu5sYCcdWpXr0AUVqcABPdgL+H7qJguBw09o +jm6xNIrw2OocrDKsudk/okr/AwqEyPKw9WnMlQgLIKw1rODG2NvU9oR3GVGdMkUB +ZutL8VuFkERQGt6vQ2OCw0sV47VMkuYbacK/xyZFiRcrPJPb41zgbQj9XAEyLKCH +ex0SdDrx+tWUDqG8At2JHA== +-----END CERTIFICATE----- \ No newline at end of file