Sorry, I've received an error about the attachment, so I'm not sure you've got the e-mail. Follows the original e-mail. At the end, I've also included the PEM encoding of the P7M I tried to send you before (it was DER encoded).
Regards, Massimiliano Ziccardi On Tue, May 20, 2008 at 9:25 AM, Massimiliano Ziccardi < [EMAIL PROTECTED]> wrote: > Hi all. > > I've been able to parse the first counter signature of each signature. > At the end of this e-mail, you'll find the code I use to parse the file (no > error handling, it's just a working snippet). > > Attached you'll find my test P7M. The signature/countersignature tree is as > follows: > > SIGNATURE 1 > COUNTER SIGNATURE 1 > COUNTER SIGNATURE 2 > SIGNATURE 2 > COUNTER SIGNATURE 1 > > Can someone please give me an advice about the changes I've to make to the > following code to parse the COUNTER SIGNATURE 2 too? > > Many thanks. > > #include <openssl/pkcs7.h> > #include <openssl/bio.h> > #include <openssl/err.h> > #include <openssl/x509.h> > > void parse(char *pszFileName) > { > // Parsing PKCS#7 file > BIO *foo = BIO_new_file(pszFileName, "rb"); > > PKCS7* pP7 = d2i_PKCS7_bio(foo,NULL); > > STACK_OF(X509) *pSigners = PKCS7_get0_signers(pP7, NULL, 0); > > STACK_OF(PKCS7_SIGNER_INFO) *pSignerInfos = PKCS7_get_signer_info(pP7); > > // Looping through the signatures > for (int i = 0; i < sk_PKCS7_SIGNER_INFO_num(pSignerInfos); i++) > { > PKCS7_SIGNER_INFO *si = sk_PKCS7_SIGNER_INFO_value(pSignerInfos, > i); > X509* pSignerCert = sk_X509_value(pSigners, i); > > printf ("FOUND SIGNATURE : %p\n", si); > // Parsing counter signatures > ASN1_TYPE *pCounterSignatureAttribute = PKCS7_get_attribute(si, > NID_pkcs9_countersignature); > > ASN1_STRING *pSequence = > pCounterSignatureAttribute->value.sequence; > > if (pSequence != NULL) > { > unsigned char *ps = NULL; > ps = pSequence->data; > > PKCS7_SIGNER_INFO *cs = d2i_PKCS7_SIGNER_INFO(NULL, (const > unsigned char**)&ps, pSequence->length); > printf ("FOUND COUNTER SIGNATURE: %p\n", si); > } > } > } > > Regards, > Massimiliano Ziccardi > Here is the PEM ENCODED P7M file -----BEGIN PKCS7----- MIIf8AYJKoZIhvcNAQcCoIIf4TCCH90CAQExCzAJBgUrDgMCGgUAMCQGCSqGSIb3 DQEHAaAXBBVEb2N1bWVudG8gZGkgcHJvdmEuDQqgghmTMIIE+TCCA+GgAwIBAgIE Q51TGTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJJVDEaMBgGA1UEChMRSW4u VGUuUy5BLiBTLnAuQS4xLTArBgNVBAMTJEluLlRlLlMuQS4gLSBDZXJ0aWZpY2F0 aW9uIEF1dGhvcml0eTAeFw0wNzAxMTcxNDAxMDFaFw0wODAxMTcxNDAxMDFaMIIB HjELMAkGA1UEBhMCSVQxVzBVBgNVBAoMTklOLlRFLlMuQS4gLSBJbml6aWF0aXZl IFRlbGVtYXRpY2hlIHBlciBTZXJ2aXppIEFwcGxpY2F0aXZpIFMucC5BLi8wNTI2 Mjg5MDAxNDEPMA0GA1UEBwwGTUlMQU5PMREwDwYDVQQLDAhERUxJVkVSWTEfMB0G A1UECwwWRUJJIFNPTFVUSU9OICYgU1VQUE9SVDEaMBgGA1UEAwwRUk9CRVJUIEJF VFRBw6dTQ0kxEzARBgNVBAQMCkJFVFRBw6dTQ0kxDzANBgNVBCoMBlJPQkVSVDEc MBoGA1UEBRMTSVQ6VFJQRlJVNzZBMDNaMTE0TTERMA8GA1UELhMIMDAwMDI2Njcw gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM3kx9UFiChtOXe1kCHOqxJiZ1Wh s9zzMfMowRuYGFkx22hmasSKivNolrWlfF6IzqeZ98UicUM/GYMaV2ngFJ9hAbKH 8JgiphmNzKuN2rQzzvxrjCzxxkb6ayLzntaZjTF7+/Wi6FiWNO+TgJdpfIvq9l8J emQynyjGdxPZzfRXAgMBAAGjggGFMIIBgTAbBgNVHREEFDASgRB1ZmZfcmFAaW50 ZXNhLml0MC8GCCsGAQUFBwEDBCMwITAIBgYEAI5GAQEwCwYGBACORgEDAgEUMAgG BgQAjkYBBDA/BgNVHSAEODA2MDQGBytMFQEBARQwKTAnBggrBgEFBQcCARYbaHR0 cDovL2UtdHJ1c3Rjb20uaW50ZXNhLml0MA4GA1UdDwEB/wQEAwIGQDCBgwYDVR0j BHwweoAUGQkDltG4xVgbfhDkbsT2oBIJEKihXKRaMFgxCzAJBgNVBAYTAklUMRow GAYDVQQKExFJbi5UZS5TLkEuIFMucC5BLjEtMCsGA1UEAxMkSW4uVGUuUy5BLiAt IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ80QETMDsGA1UdHwQ0MDIwMKAuoCyG Kmh0dHA6Ly9lLXRydXN0Y29tLmludGVzYS5pdC9DUkwvSU5URVNBLmNybDAdBgNV HQ4EFgQUXG6de+FvzxE04M9RAkvmkTqxI+MwDQYJKoZIhvcNAQEFBQADggEBAABg H2zAAuQeEqfIimzEdDlvfmx2b0lE5q/3JQwhiGjuoJXyyyZ/gg14t9Yqlox+lYIe WJR6vlVRFSBsqW/3rADTzFday3Mfe0LLA3Tm2sAqJXEge4Kl6iMI9qT7Fdr4xBNz iUvyCx5WH12aht7oWubYtFZi9Qo8HEM1ECtV4yW3oi825JoaCcSWscOt7j+wqCgp K+qCuZUYAUB1vUcbdh+We+Dps2bfglGJA+uglDT5MiLEcI8k/pzVRPNsy+305aKr 9cZ42l45sm+k7G0BXO1rmEF3XYNqEiqXCvKGE0oqFoXClia4XlmY/0eICie4M6ve gkYRNjq17c1qh82qz44wggVKMIIEMqADAgECAgRGkjFRMA0GCSqGSIb3DQEBBQUA MF4xCzAJBgNVBAYTAml0MSAwHgYDVQQKExdCYW5jYSBkJ0l0YWxpYSBDb2xsYXVk bzEtMCsGA1UECxMkU2Vydml6aSBkaSBjZXJ0aWZpY2F6aW9uZSAtIENvbGxhdWRv MB4XDTA3MDkyNzEwMjgxOVoXDTEwMDkyNzEwNTgxOVowgYYxCzAJBgNVBAYTAmRl MRUwEwYDVQQKEwxub24gcHJlc2VudGUxYDAKBgNVBC4TAzMzMzANBgNVBCoTBlNB TkRSQTAPBgNVBAQTCFNURUhMSU5HMBYGA1UEAxMPU1RFSExJTkcgU0FORFJBMBoG A1UEBRMTREU6U1RIU0RSODFCNDlaMTEySzCBnzANBgkqhkiG9w0BAQEFAAOBjQAw gYkCgYEAs1JENYmcDylCESe0x3QnWjhwfjw5xXbJUb+kE/2pTicFEBxBmBJ2J9Cj zC26L7XSWwFW9n+cjT7xoh1b5s8wvKAWx5VL5lwUGPm58G7yTr04wXSZ/4+NaXgX 9QDkWbwEZQqMMtAoZt1qP3Gubx8rljhvE2CrmUbhJOy+knyMjJkCAwEAAaOCAmkw ggJlMA4GA1UdDwEB/wQEAwIGQDArBgNVHRAEJDAigA8yMDA3MDkyNzEwMjgxOVqB DzIwMTAwOTI3MTA1ODE5WjAvBggrBgEFBQcBAwQjMCEwCAYGBACORgEBMAsGBgQA jkYBAwIBCjAIBgYEAI5GAQQwQQYDVR0gBDowODA2BgsrBgEEAetCAgACATAnMCUG CCsGAQUFBwIBFhlodHRwOi8vY2EuYmFuY2FkaXRhbGlhLml0MIIBcAYDVR0fBIIB ZzCCAWMwdaBzoHGkbzBtMQswCQYDVQQGEwJpdDEgMB4GA1UEChMXQmFuY2EgZCdJ dGFsaWEgQ29sbGF1ZG8xLTArBgNVBAsTJFNlcnZpemkgZGkgY2VydGlmaWNhemlv bmUgLSBDb2xsYXVkbzENMAsGA1UEAxMEQ1JMMjCB6aCB5qCB44aBoGxkYXA6Ly9s ZGFwLmNvbGxhdWRvLmNlcnRpZmljYXppb25lLmJhbmNhZGl0YWxpYS5pdC9vdT1T ZXJ2aXppJTIwZGklMjBjZXJ0aWZpY2F6aW9uZSUyMC0lMjBDb2xsYXVkbyxvPUJh bmNhJTIwZCdJdGFsaWElMjBDb2xsYXVkbyxjPWl0P2NlcnRpZmljYXRlUmV2b2Nh dGlvbkxpc3SGPmh0dHA6Ly93d3cuY29sbGF1ZG8uY2VydGlmaWNhemlvbmUuYmFu Y2FkaXRhbGlhLml0L2NybC9jcmwuY3JsMB8GA1UdIwQYMBaAFD9zrK5oOGrzLb6c pn+UzhOB+QMgMB0GA1UdDgQWBBR1wLbUx7cSPZzU6Yjje7asgrpn0DANBgkqhkiG 9w0BAQUFAAOCAQEAcBiHHatOcdX9WzNFWQ4DRzxzKBJQih/LocX8Rl1MJ7TrNu42 Gk5smbcIqOKJJnROy7YgVSvtEQa6wqbzoE2MOqht35DxDaFwkvlMpiY/XdZadAvK hHoXZDk4xepQ3TtzKB2H4vYYdi0HiZk/E9rkdfWPU33sXT/r9JWa7g1v9bAZx/kn omthO9YImQvRw0OzhR9uMegO7hO1aTZkE6s3aCVA7YhR2iXEnTBXrhJVaAeykQDW Q7I0ZfnNb9j7AbvfcUWgtsLDW+F15tqOWpj8KOyYHgmumUEDcycM1Oso8rZIyamS yDps3W2HdOrRAz+hNhp8Tl1Rlt5p5sbawn1NvTCCBUowggQyoAMCAQICBEaSMVEw DQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCaXQxIDAeBgNVBAoTF0JhbmNhIGQn SXRhbGlhIENvbGxhdWRvMS0wKwYDVQQLEyRTZXJ2aXppIGRpIGNlcnRpZmljYXpp b25lIC0gQ29sbGF1ZG8wHhcNMDcwOTI3MTAyODE5WhcNMTAwOTI3MTA1ODE5WjCB hjELMAkGA1UEBhMCZGUxFTATBgNVBAoTDG5vbiBwcmVzZW50ZTFgMAoGA1UELhMD MzMzMA0GA1UEKhMGU0FORFJBMA8GA1UEBBMIU1RFSExJTkcwFgYDVQQDEw9TVEVI TElORyBTQU5EUkEwGgYDVQQFExNERTpTVEhTRFI4MUI0OVoxMTJLMIGfMA0GCSqG SIb3DQEBAQUAA4GNADCBiQKBgQCzUkQ1iZwPKUIRJ7THdCdaOHB+PDnFdslRv6QT /alOJwUQHEGYEnYn0KPMLbovtdJbAVb2f5yNPvGiHVvmzzC8oBbHlUvmXBQY+bnw bvJOvTjBdJn/j41peBf1AORZvARlCowy0Chm3Wo/ca5vHyuWOG8TYKuZRuEk7L6S fIyMmQIDAQABo4ICaTCCAmUwDgYDVR0PAQH/BAQDAgZAMCsGA1UdEAQkMCKADzIw MDcwOTI3MTAyODE5WoEPMjAxMDA5MjcxMDU4MTlaMC8GCCsGAQUFBwEDBCMwITAI BgYEAI5GAQEwCwYGBACORgEDAgEKMAgGBgQAjkYBBDBBBgNVHSAEOjA4MDYGCysG AQQB60ICAAIBMCcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9jYS5iYW5jYWRpdGFsaWEu aXQwggFwBgNVHR8EggFnMIIBYzB1oHOgcaRvMG0xCzAJBgNVBAYTAml0MSAwHgYD VQQKExdCYW5jYSBkJ0l0YWxpYSBDb2xsYXVkbzEtMCsGA1UECxMkU2Vydml6aSBk aSBjZXJ0aWZpY2F6aW9uZSAtIENvbGxhdWRvMQ0wCwYDVQQDEwRDUkwyMIHpoIHm oIHjhoGgbGRhcDovL2xkYXAuY29sbGF1ZG8uY2VydGlmaWNhemlvbmUuYmFuY2Fk aXRhbGlhLml0L291PVNlcnZpemklMjBkaSUyMGNlcnRpZmljYXppb25lJTIwLSUy MENvbGxhdWRvLG89QmFuY2ElMjBkJ0l0YWxpYSUyMENvbGxhdWRvLGM9aXQ/Y2Vy dGlmaWNhdGVSZXZvY2F0aW9uTGlzdIY+aHR0cDovL3d3dy5jb2xsYXVkby5jZXJ0 aWZpY2F6aW9uZS5iYW5jYWRpdGFsaWEuaXQvY3JsL2NybC5jcmwwHwYDVR0jBBgw FoAUP3Osrmg4avMtvpymf5TOE4H5AyAwHQYDVR0OBBYEFHXAttTHtxI9nNTpiON7 tqyCumfQMA0GCSqGSIb3DQEBBQUAA4IBAQBwGIcdq05x1f1bM0VZDgNHPHMoElCK H8uhxfxGXUwntOs27jYaTmyZtwio4okmdE7LtiBVK+0RBrrCpvOgTYw6qG3fkPEN oXCS+UymJj9d1lp0C8qEehdkOTjF6lDdO3MoHYfi9hh2LQeJmT8T2uR19Y9Tfexd P+v0lZruDW/1sBnH+Seia2E71giZC9HDQ7OFH24x6A7uE7VpNmQTqzdoJUDtiFHa JcSdMFeuElVoB7KRANZDsjRl+c1v2PsBu99xRaC2wsNb4XXm2o5amPwo7JgeCa6Z QQNzJwzU6yjytkjJqZLIOmzdbYd06tEDP6E2GnxOXVGW3mnmxtrCfU29MIIE+TCC A+GgAwIBAgIEQ51TGTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJJVDEaMBgG A1UEChMRSW4uVGUuUy5BLiBTLnAuQS4xLTArBgNVBAMTJEluLlRlLlMuQS4gLSBD ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNzAxMTcxNDAxMDFaFw0wODAxMTcx NDAxMDFaMIIBHjELMAkGA1UEBhMCSVQxVzBVBgNVBAoMTklOLlRFLlMuQS4gLSBJ bml6aWF0aXZlIFRlbGVtYXRpY2hlIHBlciBTZXJ2aXppIEFwcGxpY2F0aXZpIFMu cC5BLi8wNTI2Mjg5MDAxNDEPMA0GA1UEBwwGTUlMQU5PMREwDwYDVQQLDAhERUxJ VkVSWTEfMB0GA1UECwwWRUJJIFNPTFVUSU9OICYgU1VQUE9SVDEaMBgGA1UEAwwR Uk9CRVJUIEJFVFRBw6dTQ0kxEzARBgNVBAQMCkJFVFRBw6dTQ0kxDzANBgNVBCoM BlJPQkVSVDEcMBoGA1UEBRMTSVQ6VFJQRlJVNzZBMDNaMTE0TTERMA8GA1UELhMI MDAwMDI2NjcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM3kx9UFiChtOXe1 kCHOqxJiZ1Whs9zzMfMowRuYGFkx22hmasSKivNolrWlfF6IzqeZ98UicUM/GYMa V2ngFJ9hAbKH8JgiphmNzKuN2rQzzvxrjCzxxkb6ayLzntaZjTF7+/Wi6FiWNO+T gJdpfIvq9l8JemQynyjGdxPZzfRXAgMBAAGjggGFMIIBgTAbBgNVHREEFDASgRB1 ZmZfcmFAaW50ZXNhLml0MC8GCCsGAQUFBwEDBCMwITAIBgYEAI5GAQEwCwYGBACO RgEDAgEUMAgGBgQAjkYBBDA/BgNVHSAEODA2MDQGBytMFQEBARQwKTAnBggrBgEF BQcCARYbaHR0cDovL2UtdHJ1c3Rjb20uaW50ZXNhLml0MA4GA1UdDwEB/wQEAwIG QDCBgwYDVR0jBHwweoAUGQkDltG4xVgbfhDkbsT2oBIJEKihXKRaMFgxCzAJBgNV BAYTAklUMRowGAYDVQQKExFJbi5UZS5TLkEuIFMucC5BLjEtMCsGA1UEAxMkSW4u VGUuUy5BLiAtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ80QETMDsGA1UdHwQ0 MDIwMKAuoCyGKmh0dHA6Ly9lLXRydXN0Y29tLmludGVzYS5pdC9DUkwvSU5URVNB LmNybDAdBgNVHQ4EFgQUXG6de+FvzxE04M9RAkvmkTqxI+MwDQYJKoZIhvcNAQEF BQADggEBAABgH2zAAuQeEqfIimzEdDlvfmx2b0lE5q/3JQwhiGjuoJXyyyZ/gg14 t9Yqlox+lYIeWJR6vlVRFSBsqW/3rADTzFday3Mfe0LLA3Tm2sAqJXEge4Kl6iMI 9qT7Fdr4xBNziUvyCx5WH12aht7oWubYtFZi9Qo8HEM1ECtV4yW3oi825JoaCcSW scOt7j+wqCgpK+qCuZUYAUB1vUcbdh+We+Dps2bfglGJA+uglDT5MiLEcI8k/pzV RPNsy+305aKr9cZ42l45sm+k7G0BXO1rmEF3XYNqEiqXCvKGE0oqFoXClia4XlmY /0eICie4M6vegkYRNjq17c1qh82qz44wggT5MIID4aADAgECAgRDnVMZMA0GCSqG SIb3DQEBBQUAMFgxCzAJBgNVBAYTAklUMRowGAYDVQQKExFJbi5UZS5TLkEuIFMu cC5BLjEtMCsGA1UEAxMkSW4uVGUuUy5BLiAtIENlcnRpZmljYXRpb24gQXV0aG9y aXR5MB4XDTA3MDExNzE0MDEwMVoXDTA4MDExNzE0MDEwMVowggEeMQswCQYDVQQG EwJJVDFXMFUGA1UECgxOSU4uVEUuUy5BLiAtIEluaXppYXRpdmUgVGVsZW1hdGlj aGUgcGVyIFNlcnZpemkgQXBwbGljYXRpdmkgUy5wLkEuLzA1MjYyODkwMDE0MQ8w DQYDVQQHDAZNSUxBTk8xETAPBgNVBAsMCERFTElWRVJZMR8wHQYDVQQLDBZFQkkg U09MVVRJT04gJiBTVVBQT1JUMRowGAYDVQQDDBFST0JFUlQgQkVUVEHDp1NDSTET MBEGA1UEBAwKQkVUVEHDp1NDSTEPMA0GA1UEKgwGUk9CRVJUMRwwGgYDVQQFExNJ VDpUUlBGUlU3NkEwM1oxMTRNMREwDwYDVQQuEwgwMDAwMjY2NzCBnzANBgkqhkiG 9w0BAQEFAAOBjQAwgYkCgYEAzeTH1QWIKG05d7WQIc6rEmJnVaGz3PMx8yjBG5gY WTHbaGZqxIqK82iWtaV8XojOp5n3xSJxQz8ZgxpXaeAUn2EBsofwmCKmGY3Mq43a tDPO/GuMLPHGRvprIvOe1pmNMXv79aLoWJY075OAl2l8i+r2Xwl6ZDKfKMZ3E9nN 9FcCAwEAAaOCAYUwggGBMBsGA1UdEQQUMBKBEHVmZl9yYUBpbnRlc2EuaXQwLwYI KwYBBQUHAQMEIzAhMAgGBgQAjkYBATALBgYEAI5GAQMCARQwCAYGBACORgEEMD8G A1UdIAQ4MDYwNAYHK0wVAQEBFDApMCcGCCsGAQUFBwIBFhtodHRwOi8vZS10cnVz dGNvbS5pbnRlc2EuaXQwDgYDVR0PAQH/BAQDAgZAMIGDBgNVHSMEfDB6gBQZCQOW 0bjFWBt+EORuxPagEgkQqKFcpFowWDELMAkGA1UEBhMCSVQxGjAYBgNVBAoTEUlu LlRlLlMuQS4gUy5wLkEuMS0wKwYDVQQDEyRJbi5UZS5TLkEuIC0gQ2VydGlmaWNh dGlvbiBBdXRob3JpdHmCBDzRARMwOwYDVR0fBDQwMjAwoC6gLIYqaHR0cDovL2Ut dHJ1c3Rjb20uaW50ZXNhLml0L0NSTC9JTlRFU0EuY3JsMB0GA1UdDgQWBBRcbp17 4W/PETTgz1ECS+aROrEj4zANBgkqhkiG9w0BAQUFAAOCAQEAAGAfbMAC5B4Sp8iK bMR0OW9+bHZvSUTmr/clDCGIaO6glfLLJn+CDXi31iqWjH6Vgh5YlHq+VVEVIGyp b/esANPMV1rLcx97QssDdObawColcSB7gqXqIwj2pPsV2vjEE3OJS/ILHlYfXZqG 3uha5ti0VmL1CjwcQzUQK1XjJbeiLzbkmhoJxJaxw63uP7CoKCkr6oK5lRgBQHW9 Rxt2H5Z74OmzZt+CUYkD66CUNPkyIsRwjyT+nNVE82zL7fTloqv1xnjaXjmyb6Ts bQFc7WuYQXddg2oSKpcK8oYTSioWhcKWJrheWZj/R4gKJ7gzq96CRhE2OrXtzWqH zarPjjGCBgwwggIlAgEBMGYwXjELMAkGA1UEBhMCaXQxIDAeBgNVBAoTF0JhbmNh IGQnSXRhbGlhIENvbGxhdWRvMS0wKwYDVQQLEyRTZXJ2aXppIGRpIGNlcnRpZmlj YXppb25lIC0gQ29sbGF1ZG8CBEaSMVEwCQYFKw4DAhoFADANBgkqhkiG9w0BAQEF AASBgAWhDDjZgmDwtTcRf/ZJ0NUdh88t2ahDdiX8CjTUe9FdxeEUt0yswbxDm8mh Vh5XcM/UMQs3JORKelPguVcMP3qReC1NxWaLTiaf+22+32oppNXNUj2OH8sFmEew SNFIxIPs/d0m/7EuJGGu5KVNCqQZzgbRysFyP+HFWIgTYLa1oYIBGTCCARUGCSqG SIb3DQEJBjGCAQYwggECAgEBMGAwWDELMAkGA1UEBhMCSVQxGjAYBgNVBAoTEUlu LlRlLlMuQS4gUy5wLkEuMS0wKwYDVQQDEyRJbi5UZS5TLkEuIC0gQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkCBEOdUxkwCQYFKw4DAhoFADANBgkqhkiG9w0BAQEFAASB gGevokdlti/6Dz62GwAE2tXjzXooE18MRe1C0nIM5yTtKPMsQFbpnF0OlVTgBfo7 hntKEYFxjTx4iGtrrGE9pGLajEbOJCop86moYbGQis+QImNVBTicjcJA9azSLMm5 uOKH6wXEN3ZKpxLdwGe+Bq/s2oczkw4j71qsEEytNRuqMIID3wIBATBgMFgxCzAJ BgNVBAYTAklUMRowGAYDVQQKExFJbi5UZS5TLkEuIFMucC5BLjEtMCsGA1UEAxMk SW4uVGUuUy5BLiAtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5AgRDnVMZMAkGBSsO AwIaBQCggbEwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUx DxcNMDcxMjA1MTYyNDU1WjAjBgkqhkiG9w0BCQQxFgQUG6R3BCizMuRiiBkoN3+f WGKa+PIwUgYJKoZIhvcNAQkPMUUwQzAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgIC AIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwDQYJKoZI hvcNAQEBBQAEgYCbUAkRGIg78gpvqdmj5i5OWac/EnXdlddIjJ/lpgunpSDJeDLk 8yELY3jwOlek+YgJhjjUyqII43r6xpbjjbQ+BpIdvYyPC/1JBxyxlli8ghnCMfG4 9TxDX65mt0cYb5Ai5ebhYSMFbflnedg7wWtdYkyzL4HCAhok9HKGfM/XbqGCAiUw ggIhBgkqhkiG9w0BCQYxggISMIIBAgIBATBgMFgxCzAJBgNVBAYTAklUMRowGAYD VQQKExFJbi5UZS5TLkEuIFMucC5BLjEtMCsGA1UEAxMkSW4uVGUuUy5BLiAtIENl cnRpZmljYXRpb24gQXV0aG9yaXR5AgRDnVMZMAkGBSsOAwIaBQAwDQYJKoZIhvcN AQEBBQAEgYB0ClpuofnHs1ULju0cyusUmun/iBfneC7fay3fWJtshlj31ZBMXn+j W7hbpGv4vxS6PjFe3WRAbP5dSyjyM3f6fcOzM/s83maSDKs6255hyif6dN4y+fYS Sv5Z7oertsW7BZiF4XXmQ144JdWL0t0c5YoqLy4vt5FUodoC96RpiTCCAQgCAQEw ZjBeMQswCQYDVQQGEwJpdDEgMB4GA1UEChMXQmFuY2EgZCdJdGFsaWEgQ29sbGF1 ZG8xLTArBgNVBAsTJFNlcnZpemkgZGkgY2VydGlmaWNhemlvbmUgLSBDb2xsYXVk bwIERpIxUTAJBgUrDgMCGgUAMA0GCSqGSIb3DQEBAQUABIGAFDLOeCLO00Rd0K/k 2lwWwmJCaAcCfTD3oCt/1IdXRIQB4HuTT0JmgKsov/jtnjNGFUZYEeM2fVYv+JC4 rQtHuhJm545iRhKI8WPb0qB3rsCHE/ulKi/uz/ael+l6cgr3F9oU3vlNrs+L8ocv PMahH8kXFsqJJlTBkyeUWneR39A= -----END PKCS7-----