YACA: test for importing public key from an X509 certificate 53/77953/5
authorLukasz Pawelczyk <l.pawelczyk@samsung.com>
Fri, 1 Jul 2016 17:18:14 +0000 (19:18 +0200)
committerLukasz Pawelczyk <l.pawelczyk@samsung.com>
Tue, 5 Jul 2016 08:53:28 +0000 (10:53 +0200)
Change-Id: I7294bedf71426a7faf9e38703e6768954e6e6c1d

src/yaca/test-vectors/key_x509.txt [new file with mode: 0644]
src/yaca/yaca-test-key.cpp

diff --git a/src/yaca/test-vectors/key_x509.txt b/src/yaca/test-vectors/key_x509.txt
new file mode 100644 (file)
index 0000000..61fd565
--- /dev/null
@@ -0,0 +1,19 @@
+#################################### PEM ###################################
+cert=2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d4949432f444343416d5767417749424167494a414e5732735a6d5a346b42694d413047435371475349623344514542437755414d4947564d517377435159440a5651514745774a51544445554d424947413155454341774c54574636623364705a574e7261575578447a414e42674e564241634d426c6468636e4e68647a45510a4d413447413155454367774855324674633356755a7a45524d41384741315545437777495532566a64584a7064486b78456a415142674e5642414d4d43586c680a593245746447567a6444456d4d43514743537147534962334451454a41525958624335775958646c62474e366557744163324674633356755a79356a623230770a4942634e4d5459774e7a41784d5463784d7a5177576867504d6a49354d4441304d5455784e7a457a4e4442614d4947564d517377435159445651514745774a510a544445554d424947413155454341774c54574636623364705a574e7261575578447a414e42674e564241634d426c6468636e4e68647a45514d413447413155450a4367774855324674633356755a7a45524d41384741315545437777495532566a64584a7064486b78456a415142674e5642414d4d43586c68593245746447567a0a6444456d4d43514743537147534962334451454a41525958624335775958646c62474e366557744163324674633356755a79356a62323077675a38774451594a0a4b6f5a496876634e4151454242514144675930414d49474a416f4742414b4e6d57366e5934362b757745353377324a724475623542744f757642425a4645376a0a36706e436763447270615a634a75554e596c45324d576c786d6758337877626c53452f4a57626e64526570306457582f386c41663343564a39524258476f37680a2b516478344c4a727446353156716f574732773274397636346b39434d37614b6d67476c54302f77436c534a636e56612b41696861753535625050694b754d780a7a5839645150505441674d424141476a5544424f4d42304741315564446751574242544642426563746a3734585545584a2b6266776264556e4b3756674441660a42674e5648534d45474441576742544642426563746a3734585545584a2b6266776264556e4b37566744414d42674e5648524d45425441444151482f4d4130470a43537147534962334451454243775541413447424146445949344a4c2b2f32764d6453377743554354774445564634443769313635344c784f4b6372683838780a544c5035363768754c534b684635464668724d4e4a526b526e4a7756575a7a6d6f61416e65397a6943575042597342394535756b33622b63306f4758536b30680a376e313153414e5a7053556253754b4f65616a7871674a4830484e4d3232427a6850657a53745a7879446854345a42717276375a303065587755786d67456a340a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a
+pub_key=30819f300d06092a864886f70d010101050003818d0030818902818100a3665ba9d8e3afaec04e77c3626b0ee6f906d3aebc1059144ee3ea99c281c0eba5a65c26e50d6251363169719a05f7c706e5484fc959b9dd45ea747565fff2501fdc2549f510571a8ee1f90771e0b26bb45e7556aa161b6c36b7dbfae24f4233b68a9a01a54f4ff00a548972755af808a16aee796cf3e22ae331cd7f5d40f3d30203010001
+
+cert=2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d4949432f444343416d5767417749424167494a41505649764d5a70616469744d413047435371475349623344514542437755414d4947564d517377435159440a5651514745774a51544445554d424947413155454341774c54574636623364705a574e7261575578447a414e42674e564241634d426c6468636e4e68647a45510a4d413447413155454367774855324674633356755a7a45524d41384741315545437777495532566a64584a7064486b78456a415142674e5642414d4d43586c680a593245746447567a6444456d4d43514743537147534962334451454a41525958624335775958646c62474e366557744163324674633356755a79356a623230770a4942634e4d5459774e7a41784d5463784e545530576867504d6a49354d4441304d5455784e7a45314e5452614d4947564d517377435159445651514745774a510a544445554d424947413155454341774c54574636623364705a574e7261575578447a414e42674e564241634d426c6468636e4e68647a45514d413447413155450a4367774855324674633356755a7a45524d41384741315545437777495532566a64584a7064486b78456a415142674e5642414d4d43586c68593245746447567a0a6444456d4d43514743537147534962334451454a41525958624335775958646c62474e366557744163324674633356755a79356a62323077675a38774451594a0a4b6f5a496876634e4151454242514144675930414d49474a416f4742414a38393338645679584c4a742f677a396b446f2b3031455365547a795164725179627a0a4638536777667034457148414f6b58724b5174665543414b4869656976666f6b5462666652502f327139576245795672326f323843424f7a796b454d44714c300a745376424e755935536265434765436b6d6e686f556a736b32625353517365474f38794e59704e7264437a5449322f4d6335542f5a75425567442b75506b7a4a0a39497a5a6e61344841674d424141476a5544424f4d4230474131556444675157424253584a2b327a7a73583273777a4a366a374a543337735667747a774441660a42674e5648534d4547444157674253584a2b327a7a73583273777a4a366a374a543337735667747a7744414d42674e5648524d45425441444151482f4d4130470a43537147534962334451454243775541413447424142744570515946496f4b76494f6138556146706d434f4d34394557742f72417579557777674f494c4d53520a41577362365a654233304d4a74593263596a6e67356f626a526b666538314b50537934674d4243524e6b623568636245414e42435a3861334c6643544c554f4c0a5431705a6f722b71425a505665694258335a774b6370314146525352754e723770686e644e792b59617763665262574f7a456436684148715a324570637841760a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a
+pub_key=30819f300d06092a864886f70d010101050003818d00308189028181009f3ddfc755c972c9b7f833f640e8fb4d4449e4f3c9076b4326f317c4a0c1fa7812a1c03a45eb290b5f50200a1e27a2bdfa244db7df44fff6abd59b13256bda8dbc0813b3ca410c0ea2f4b52bc136e63949b78219e0a49a7868523b24d9b49242c7863bcc8d62936b742cd3236fcc7394ff66e054803fae3e4cc9f48cd99dae070203010001
+
+cert=2d2d2d2d2d424547494e2043455254494649434154452d2d2d2d2d0a4d4949432f444343416d5767417749424167494a4150424b57696d39626252354d413047435371475349623344514542437755414d4947564d517377435159440a5651514745774a51544445554d424947413155454341774c54574636623364705a574e7261575578447a414e42674e564241634d426c6468636e4e68647a45510a4d413447413155454367774855324674633356755a7a45524d41384741315545437777495532566a64584a7064486b78456a415142674e5642414d4d43586c680a593245746447567a6444456d4d43514743537147534962334451454a41525958624335775958646c62474e366557744163324674633356755a79356a623230770a4942634e4d5459774e7a41784d5463784e6a4d7a576867504d6a49354d4441304d5455784e7a45324d7a4e614d4947564d517377435159445651514745774a510a544445554d424947413155454341774c54574636623364705a574e7261575578447a414e42674e564241634d426c6468636e4e68647a45514d413447413155450a4367774855324674633356755a7a45524d41384741315545437777495532566a64584a7064486b78456a415142674e5642414d4d43586c68593245746447567a0a6444456d4d43514743537147534962334451454a41525958624335775958646c62474e366557744163324674633356755a79356a62323077675a38774451594a0a4b6f5a496876634e4151454242514144675930414d49474a416f4742414e533476365a387331324c4b4c5a7245367937386458304e514d55794b58726567354e0a6b573457784670415a4e674b71776b73416b352b5a38753565372f475a74705448777a632f6f4565647454664e6931386b4d313367416746645251686d6758460a6143493072784f4c46714d6f786a752b4852775a5852674d32704b656a495070474f4d694b6c712b3739746e71644c4e61567a6e587850624a6461633768752b0a48792b6e7846626241674d424141476a5544424f4d42304741315564446751574242527a56622b3071413479712b4a44433830716d30796f6a496f6a336a41660a42674e5648534d45474441576742527a56622b3071413479712b4a44433830716d30796f6a496f6a336a414d42674e5648524d45425441444151482f4d4130470a4353714753496233445145424377554141344742414b7157574d7748395462745236367a3955506d77444a36306830473272726b3842517343743349786a67590a7962524b3463706a494c35356a32376773543176385578714c6779434b6b577670524c764762634b46714d624d554333447a6535524b77496e35486d766f63770a714d6946763668796d5667316c327850754d4c6e6f4f3134687a46745a39685032324276335762683377683761616661465a37733673764b434832716e645a4e0a2d2d2d2d2d454e442043455254494649434154452d2d2d2d2d0a
+pub_key=30819f300d06092a864886f70d010101050003818d0030818902818100d4b8bfa67cb35d8b28b66b13acbbf1d5f4350314c8a5eb7a0e4d916e16c45a4064d80aab092c024e7e67cbb97bbfc666da531f0cdcfe811e76d4df362d7c90cd778008057514219a05c5682234af138b16a328c63bbe1d1c195d180cda929e8c83e918e3222a5abeefdb67a9d2cd695ce75f13db25d69cee1bbe1f2fa7c456db0203010001
+
+#################################### DER ################################
+cert=308202fc30820265a003020102020900d5b6b19999e24062300d06092a864886f70d01010b0500308195310b300906035504061302504c3114301206035504080c0b4d617a6f776965636b6965310f300d06035504070c065761727361773110300e060355040a0c0753616d73756e673111300f060355040b0c0853656375726974793112301006035504030c09796163612d746573743126302406092a864886f70d01090116176c2e706177656c637a796b4073616d73756e672e636f6d3020170d3136303730313137313334305a180f32323930303431353137313334305a308195310b300906035504061302504c3114301206035504080c0b4d617a6f776965636b6965310f300d06035504070c065761727361773110300e060355040a0c0753616d73756e673111300f060355040b0c0853656375726974793112301006035504030c09796163612d746573743126302406092a864886f70d01090116176c2e706177656c637a796b4073616d73756e672e636f6d30819f300d06092a864886f70d010101050003818d0030818902818100a3665ba9d8e3afaec04e77c3626b0ee6f906d3aebc1059144ee3ea99c281c0eba5a65c26e50d6251363169719a05f7c706e5484fc959b9dd45ea747565fff2501fdc2549f510571a8ee1f90771e0b26bb45e7556aa161b6c36b7dbfae24f4233b68a9a01a54f4ff00a548972755af808a16aee796cf3e22ae331cd7f5d40f3d30203010001a350304e301d0603551d0e04160414c504179cb63ef85d411727e6dfc1b7549caed580301f0603551d23041830168014c504179cb63ef85d411727e6dfc1b7549caed580300c0603551d13040530030101ff300d06092a864886f70d01010b05000381810050d823824bfbfdaf31d4bbc025024f00c4545e03ee2d7ae782f138a72b87cf314cb3f9ebb86e2d22a117914586b30d2519119c9c15599ce6a1a0277bdce20963c162c07d139ba4ddbf9cd281974a4d21ee7d75480359a5251b4ae28e79a8f1aa0247d0734cdb607384f7b34ad671c83853e1906aaefed9d34797c14c668048f8
+pub_key=30819f300d06092a864886f70d010101050003818d0030818902818100a3665ba9d8e3afaec04e77c3626b0ee6f906d3aebc1059144ee3ea99c281c0eba5a65c26e50d6251363169719a05f7c706e5484fc959b9dd45ea747565fff2501fdc2549f510571a8ee1f90771e0b26bb45e7556aa161b6c36b7dbfae24f4233b68a9a01a54f4ff00a548972755af808a16aee796cf3e22ae331cd7f5d40f3d30203010001
+
+cert=308202fc30820265a003020102020900f548bcc66969d8ad300d06092a864886f70d01010b0500308195310b300906035504061302504c3114301206035504080c0b4d617a6f776965636b6965310f300d06035504070c065761727361773110300e060355040a0c0753616d73756e673111300f060355040b0c0853656375726974793112301006035504030c09796163612d746573743126302406092a864886f70d01090116176c2e706177656c637a796b4073616d73756e672e636f6d3020170d3136303730313137313535345a180f32323930303431353137313535345a308195310b300906035504061302504c3114301206035504080c0b4d617a6f776965636b6965310f300d06035504070c065761727361773110300e060355040a0c0753616d73756e673111300f060355040b0c0853656375726974793112301006035504030c09796163612d746573743126302406092a864886f70d01090116176c2e706177656c637a796b4073616d73756e672e636f6d30819f300d06092a864886f70d010101050003818d00308189028181009f3ddfc755c972c9b7f833f640e8fb4d4449e4f3c9076b4326f317c4a0c1fa7812a1c03a45eb290b5f50200a1e27a2bdfa244db7df44fff6abd59b13256bda8dbc0813b3ca410c0ea2f4b52bc136e63949b78219e0a49a7868523b24d9b49242c7863bcc8d62936b742cd3236fcc7394ff66e054803fae3e4cc9f48cd99dae070203010001a350304e301d0603551d0e041604149727edb3cec5f6b30cc9ea3ec94f7eec560b73c0301f0603551d230418301680149727edb3cec5f6b30cc9ea3ec94f7eec560b73c0300c0603551d13040530030101ff300d06092a864886f70d01010b0500038181001b44a506052282af20e6bc51a16998238ce3d116b7fac0bb2530c203882cc491016b1be99781df4309b58d9c6239e0e686e34647def3528f4b2e203010913646f985c6c400d04267c6b72df0932d438b4f5a59a2bfaa0593d57a2057dd9c0a729d40151491b8dafba619dd372f986b071f45b58ecc477a8401ea67612973102f
+pub_key=30819f300d06092a864886f70d010101050003818d00308189028181009f3ddfc755c972c9b7f833f640e8fb4d4449e4f3c9076b4326f317c4a0c1fa7812a1c03a45eb290b5f50200a1e27a2bdfa244db7df44fff6abd59b13256bda8dbc0813b3ca410c0ea2f4b52bc136e63949b78219e0a49a7868523b24d9b49242c7863bcc8d62936b742cd3236fcc7394ff66e054803fae3e4cc9f48cd99dae070203010001
+
+cert=308202fc30820265a003020102020900f04a5a29bd6db479300d06092a864886f70d01010b0500308195310b300906035504061302504c3114301206035504080c0b4d617a6f776965636b6965310f300d06035504070c065761727361773110300e060355040a0c0753616d73756e673111300f060355040b0c0853656375726974793112301006035504030c09796163612d746573743126302406092a864886f70d01090116176c2e706177656c637a796b4073616d73756e672e636f6d3020170d3136303730313137313633335a180f32323930303431353137313633335a308195310b300906035504061302504c3114301206035504080c0b4d617a6f776965636b6965310f300d06035504070c065761727361773110300e060355040a0c0753616d73756e673111300f060355040b0c0853656375726974793112301006035504030c09796163612d746573743126302406092a864886f70d01090116176c2e706177656c637a796b4073616d73756e672e636f6d30819f300d06092a864886f70d010101050003818d0030818902818100d4b8bfa67cb35d8b28b66b13acbbf1d5f4350314c8a5eb7a0e4d916e16c45a4064d80aab092c024e7e67cbb97bbfc666da531f0cdcfe811e76d4df362d7c90cd778008057514219a05c5682234af138b16a328c63bbe1d1c195d180cda929e8c83e918e3222a5abeefdb67a9d2cd695ce75f13db25d69cee1bbe1f2fa7c456db0203010001a350304e301d0603551d0e041604147355bfb4a80e32abe2430bcd2a9b4ca88c8a23de301f0603551d230418301680147355bfb4a80e32abe2430bcd2a9b4ca88c8a23de300c0603551d13040530030101ff300d06092a864886f70d01010b050003818100aa9658cc07f536ed47aeb3f543e6c0327ad21d06dabae4f0142c0addc8c63818c9b44ae1ca6320be798f6ee0b13d6ff14c6a2e0c822a45afa512ef19b70a16a31b3140b70f37b944ac089f91e6be8730a8c885bfa872995835976c4fb8c2e7a0ed7887316d67d84fdb606fdd66e1df087b69a7da159eeceacbca087daa9dd64d
+pub_key=30819f300d06092a864886f70d010101050003818d0030818902818100d4b8bfa67cb35d8b28b66b13acbbf1d5f4350314c8a5eb7a0e4d916e16c45a4064d80aab092c024e7e67cbb97bbfc666da531f0cdcfe811e76d4df362d7c90cd778008057514219a05c5682234af138b16a328c63bbe1d1c195d180cda929e8c83e918e3222a5abeefdb67a9d2cd695ce75f13db25d69cee1bbe1f2fa7c456db0203010001
index 94dace0..4c26268 100644 (file)
@@ -518,3 +518,21 @@ RUNNER_TEST(T4240_yaca_key_export_import, YacaTest)
         }
     }
 }
+
+RUNNER_TEST(T4250_yaca_key_import_x509, YacaTest)
+{
+    auto tvv = loadTestVector("key_x509.txt");
+
+    for (const auto& tv : tvv) {
+        Buffer cert_data;
+        Buffer pub_key_data;
+
+        tv.get("cert", cert_data);
+        tv.get("pub_key", pub_key_data);
+
+        KeyPtr cert_key = import_key(YACA_KEY_TYPE_RSA_PUB, nullptr, cert_data.data(), cert_data.size());
+        KeyPtr pub_key = import_key(YACA_KEY_TYPE_RSA_PUB, nullptr, pub_key_data.data(), pub_key_data.size());
+
+        assert_keys_equal(cert_key, pub_key);
+    }
+}