Add test to validate sample BCC

Test data retrieved from printf-debugging on a Pixel 8 device

Test: libauthgraph_boringssl_test
Bug: 336924223
Change-Id: I63da0c0cf989c70fc230f84450dde38612098ac3
diff --git a/boringssl/src/tests.rs b/boringssl/src/tests.rs
index 217fccf..12af1b0 100644
--- a/boringssl/src/tests.rs
+++ b/boringssl/src/tests.rs
@@ -206,6 +206,11 @@
 }
 
 #[test]
+fn test_example_identity_validate() {
+    ag_test::test_example_identity_validate(&crate::BoringEcDsa);
+}
+
+#[test]
 fn test_key_exchange_with_non_empty_dice_chains() {
     // Both parties have identities containing a DICE certificate chains of non-zero length.
     let source_device = crate::test_device::AgDevice::default();
diff --git a/tests/src/lib.rs b/tests/src/lib.rs
index a95fa0e..2c98ba5 100644
--- a/tests/src/lib.rs
+++ b/tests/src/lib.rs
@@ -1231,3 +1231,13 @@
     let (_, identity) = ag_device.get_identity().unwrap();
     identity.validate(ecdsa).unwrap();
 }
+
+/// Test validation of a sample BCC identity.
+pub fn test_example_identity_validate<E: EcDsa>(ecdsa: &E) {
+    let mut hex_data =
+        std::str::from_utf8(include_bytes!("../testdata/sample_identity.hex")).unwrap().to_string();
+    hex_data.retain(|c| !c.is_whitespace());
+    let data = hex::decode(hex_data).unwrap();
+    let identity = Identity::from_slice(&data).expect("identity data did not decode");
+    identity.validate(ecdsa).expect("identity did not validate");
+}
diff --git a/tests/testdata/sample_identity.hex b/tests/testdata/sample_identity.hex
new file mode 100644
index 0000000..6b857ac
--- /dev/null
+++ b/tests/testdata/sample_identity.hex
@@ -0,0 +1,70 @@
+82015911618a01586ea50102033822200221583056251885c3e135c23f540099c4d3186cdf932555a9114eb68eb74eebccfbf4090452500ae05d229b52c3db72
+bfb21782225830e627a1c37a55479d42a338d3929aa0b8a1909360a8180477454239c77b1c48c262e834311c0a0c3227e7e0aee14a80f18444a1013822a05901
+b2a80178283366613139636663643039363739663235646336343165393761656365376534616234313266613402782834636562346338326336353633346333
+3733666361363437663364646335343830613166373835373a004744505840208836b93f67ebc48cefdaae68cdfc2b87d03892255507cc6f293084de179700b7
+bd3da69cf01d05c663ebd5ff6633d20ec69a714ebbf5f40062dbf925b567253a0047445358400000000000000050860993a1d7ce0c0800000000000000000001
+00000000000000000000000000000000000000000000000000000000000000000000000000003a0047445458404d00da66eabbb2b684641a57e96c8e64d76df1
+e31ea203bbbb9f439372c1a8ec185a4a88313a02b99229053e7c6508ab1e8d9921e8ca88c39f351adc1a39f9483a0047445641003a004744575871a601020338
+220481022002215830a88e1cc3d2b7173629a0146550a10d07390d1c451697ed2b18aae05d72719d886ac9d984a9036ad1b21e612845ea95922258301d25f98b
+7f1269b7b59fddcb025cbc66e608623eeaf74ec2d598c2c869e446c0e920c10f87b7bdeb8c43638ea37412b53a0047445841205860d9909c9f3e2134cafadd9e
+63d4b84873e2364c1a49e1636c49451680d8f6812a62faee31fbfff86c0730e1682ae7640ea0f90c3407bb6fc1c21c34efd538c859a2230f53c6050e6d881e42
+b681e5605f6ff92f59af4ef9c9ba3efb793a3e43128444a1013822a05901b2a80178283463656234633832633635363334633337336663613634376633646463
+3534383061316637383537027828343030383530646232666633336135383539356635356264313261616436643836396538663464623a00474450584064a891
+e98b049295bfc658d6bd3c844f0b1ab3b3874245b8dc3f95c3462ac6754ce9f436feac55749440ca22b8e9e30a4078d02fbae9d5e92c21e2c8e77377d53a0047
+44535840a43a000111721a00b2af613a0001155741003a00011558582000000000000000000000000000000000000000000000000000000000000000003a0001
+155941013a0047445458400ff98ca5a871ed0e13fc86c046f0a6c9e6c4c854437db365fcf2cf1ab297aec3f16f1fe5f02c043523ff998729a91bdf2efd6cadce
+14d10da3ab4a39d87052783a0047445641023a004744575871a6010203382204810220022158307b990c56d26619e17b134c6a0b371ae6ad48d1565ba97dde08
+d7844bfe215e83eec9187c17a46cbf670e4df27aabea0222583070ac54e8ab49ae7d0974c8bb859c72933d73172b8f6851f8c26d7347b110fcd89c1cc059e565
+1c2fe06a364ab04acea93a00474458412058603d254c91e93456cb1048cccf7ae70fef108e89386668e1f521ce5228a1bc0798670fb3016b707cfcafe282ba1b
+e8bf6fd9eb8cd2655d910eef26ebe2b36c8a0644a696982386298642ca4111040032fd2baef792ec7bbc3f8d1dbfea1673de058444a1013822a05901b2a80178
+28343030383530646232666633336135383539356635356264313261616436643836396538663464620278283363323333363161336262313238313533396437
+30363162393062373238303438333863663564313a00474450584000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000003a004744535840a33a000111721a00b31aa43a0001155b4800000000000000003a0001155c
+582000000000000000000000000000000000000000000000000000000000000000003a0047445458400ff98ca5a871ed0e13fc86c046f0a6c9e6c4c854437db3
+65fcf2cf1ab297aec3f16f1fe5f02c043523ff998729a91bdf2efd6cadce14d10da3ab4a39d87052783a0047445641003a004744575871a60102033822048102
+2002215830a6c444d9cb5b51d135e56246a9e31c7b88c362f65d021c84952a8859883fec0a4e263e5c2666c3020762ceda59374c1c225830adce86beac63ebb5
+7742e7d8630028ec732cb20559f00e7747d81d6457ee72ed6779e44252aa0f1e3c93c070212afdd33a0047445841205860fa8e5cf2a54d4b70175d9ca3a4e81f
+2a497e282cca72625b929bc8bf9992c78d4f254ce2761bf381053823326784189779b40813c6f38c88163b50d600c11dfef3bd9d3105aebe094f2d30d11a30ed
+1bfbc17ea863435bc6d729afbb8c1b1f5e8444a1013822a0590187a9017828336332333336316133626231323831353339643730363162393062373238303438
+33386366356431027828356135363935356132653662316230353465616161306264313232383066343334303062383961323a00474450584000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003a0047445353a2
+3a00011171665472757374793a00011175f63a00474452584006417c18593a59894540571d9490f4c28612f9e9185c3c5f1766d90c8a599b2a24729345535c5c
+79386239e26a3bdc3c53686bdfdd056b6ec82b7b33cdda4c653a0047445458400000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000003a0047445641013a00474457582da501010327048102200621582061bc1c9879
+d719f873d23e7496be5017c48cb11ebca98666c5e1a9f4d79d8a723a00474458412058602359011601afa4e25e35eb7d37ebe8694cf5a376c39c086d20147afe
+b7cc1bf7065c2c54995407fc7197fef2e85fed7fe08a30df66a9707f151d51d94b49290fedc6397dc93b2ac2c3c4d3a1445423cb6b51d6e4994ab707f7e81655
+6f33ce448443a10127a059018fa90178283561353639353561326536623162303534656161613062643132323830663433343030623839613202782830643738
+3262613837333464333632353635633263613737666465643135313037633062383861353a004744505840959b75c5097cd65e6fe08451cb651ba9aea9a46aea
+596a50d4906a4f65c3b35e483c3f5c1bf054cb57d2ec0b161f3b38a50757750f07136f071d2b41439a56f83a00474453581aa33a00011171634156423a000111
+721a1c0001863a00011175f63a004744525840c9e1f8dc00e3d1f240a70e81cd7098c75cb90f1e2cb3413d6c1c8be0643eb6382aabed6a9a6efd1e3e6d2fa00c
+8de8b17f954b6a2d217145576675586443bbdb3a0047445458400000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000003a0047445641023a00474457582da50101032704810220062158205d3a92c2e80713bff05242
+1c67eb0b4d2fc3099e65a27b9ab5c52c1de94474f53a004744584120584019b9b9b5355241e14029801e5bffaf738a97f1a30733c10f89c3a957f052c291d60b
+7a0bd5810a3317e66565b1c6539d46df21b1addf74e7dad4c67458d19b0a8443a10127a0590197a9017828306437383262613837333464333632353635633263
+61373766646564313531303763306238386135027828373865363863643162626464336461306236373337653830666565343765363066393331373735383a00
+47445058400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000003a004744535822a23a000111717550726f74656374656420564d206669726d776172653a00011175f63a004744525840b4ba98f943eca055a4fd20
+e39a910563c51fac39048ad6adf063e1f8dacf763074d432a33e579aabcba6c0d34263e824cbee82780e4d629b44981eb2840f2ad13a00474454584000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003a004744
+5641013a00474457582da501010327048102200621582040b1383532841b7c51d3cea1c5b97793027d76c39fa1a2eed66aa6b73186f7703a0047445841205840
+861d3aec10bf86e5dff3f38a09fe733b4b67ef6c02f9629d3672e14f72cd22720ed3c7f46f58971b6de1b09302a45818a6a5e7bd738877b63db03054995f500d
+8443a10127a0590189a9017828373865363863643162626464336461306236373337653830666565343765363066393331373735380278283263386433323338
+63643065313663346238386331653332626133306637396664323830636163613a00474450584067e0300ed6589af2454d17c87252011a3c63b9b903e8246c95
+00e7a22eb9aa4e90a42aa7ba5c256f837c269fcc7ddf6f98296004e4ab970106e98cb48a0abed23a0047445355a23a0001117168766d5f656e7472793a000111
+74013a0047445258401ff8ea59f5b855899b48ff91a06de215abd2442482477a38a37b05b4bc2bb52fe2fd8be968cf82f13e2383aa02432faa0b2dc8b7187b46
+6e90ddf652380625153a0047445458409a4d102721e327ee74350517c8b65d4e23b6a8d463c6fcc8525d26e088be55f6d3688e5e5d63b4a112f181d852b52cd8
+fc69d5f7bbe3c8147e4217fd83dd8b9b3a0047445641023a00474457582da5010103270481022006215820ec5720747d7894bef54ccab599f9784720f8d44d19
+2b84ef228b86fc3f7a0bd93a004744584120584071b3ce82ea990adf081bf9ddb6f37a69687ddafdb4cd681b470d9ae26c7404c61e7a5a18233012d6f95d6007
+0f8a6077105e6eddbbd44230228e00716955a60b8443a10127a05902c7a901782832633864333233386364306531366334623838633165333262613330663739
+666432383063616361027828333266333664643934323430626639326433333430376165343931343737373233656434663233303a004744505840761d06c37f
+56d2fee6c894b172e64efdc856ea784241327664d57f09588dcbaefdbb00b79f711f2de9ca9b8425a7f590c4d0e94b4aa2b6dd2e5bbc06d964fa093a00474453
+590151a33a00011171724d6963726f64726f6964207061796c6f61643a00011558a101781a4d6963726f64726f6964546573744e61746976654c69622e736f3a
+0001155982a401781f61706b3a636f6d2e616e64726f69642e6d6963726f64726f69642e74657374020503582032736ff573168099ac7634dd1b008357043fdf
+34878f553e89317c2a229e814f0458403ccdcd8908b08953041696911a71e55d4e3d14eb7bce8da2124f90ae247f33d5df54cf460b9142710e68cb1b49fd1b28
+28032afcf33214e215746faabbf9425ba40175617065783a636f6d2e616e64726f69642e61646264021a14ddf3100358201f565eec8b4a57f7382b91e6d0fd5c
+ab0edf02d411b233dad054ec2c6ee6e4930458401222483ad48bd0692d89c5adbb0d73526742d8adb18b1f2fb08c5fc783251717994ff24f725af5855890eca3
+72617113b8f9a1ba32e91feada312a26d05daf5d3a004744525840dfd40be0b29334dabd4592172db271c86ac1a18cee4f7ee67d07b44d77d82957e7b6f72e57
+e9add8aa3c80569b681b977d532e9dda97f6cd2a69fc6b639c0f083a004744545840af53c235e90bb476f3ea351e2d782c4efda9c1c9e7b8e360b357d316cf41
+0593dd3254c6f8b6ce6c8913c6d238a9ae085b2203abcca44e15f276a6965108b6d53a0047445641023a00474457582da5010103270481022006215820b89c2d
+06d6c3478f82777eeeedc72986d3e4ec328686c77c4d564f0a859b956b3a0047445841205840fcd12dadb5b2ad0e43d98da8980ee44a00468bb86c01bef7f886
+f7ef0033b57068af75b6a1892305b198111dc23c8cc57c205deeff94bc170a05fd7c68c3eb04
\ No newline at end of file