signature=622be37089ce9941219effaa6174b9e9,c++ - Verify XML Signature with libxmlsec1 - Stack Overfl...

I can verify a XML Signature with Apache Santuario XML security for Java. The code is like:

ByteArrayInputStream bais = new ByteArrayInputStream(readData("signature.xml"));

DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();

f.setNamespaceAware(true);

Document doc = f.newDocumentBuilder().parse(bais);

bais.close();

NodeList nodes = doc.getElementsByTagNameNS(Constants.SignatureSpecNS, Constants._TAG_SIGNATURE);

Element sigElement = (Element) nodes.item(0);

XMLSignature signature = new XMLSignature(sigElement, "");

signature.addResourceResolver(new ResolverWidget(this));

X509Certificate cert = signature.getKeyInfo().getX509Certificate();

signature.checkSignatureValue(cert);

Now, I want to implement it in C++. I've tried Apache Santuario XML security for C++, but it failed because it said that it doesn't support c14n11 (I hope I'm wrong). So, I changed to use libxmlsec1, but the problem is I don't know how to implement with libxmlsec1. It doesn't have to verify all the files of Reference element. I just want to verify SignedInfo element. I've only done the following code.

xmlDocPtr doc = xmlParseFile("signature.xml");

xmlNodePtr node = xmlSecFindNode(xmlDocGetRootElement(doc), xmlSecNodeX509Certificate, xmlSecDSigNs);

xmlNodePtr data = node->children;

mngr = xmlSecKeysMngrCreate();

xmlSecCryptoAppDefaultKeysMngrInit(mngr);

xmlSecCryptoAppKeysMngrCertLoadMemory(mngr, data->content, size, xmlSecKeyDataFormatPem, xmlSecKeyDataTypeTrusted);

It fails with the following errors:

func=xmlSecOpenSSLAppCertLoadBIO:file=app.c:line=1254:obj=unknown:subj=PEM_read_bio_X509_AUX:error=4:crypto library function failed:

func=xmlSecOpenSSLAppKeysMngrCertLoadBIO:file=app.c:line=1139:obj=unknown:subj=xmlSecOpenSSLAppCertLoadBIO:error=1:xmlsec library function failed:

func=xmlSecOpenSSLAppKeysMngrCertLoadMemory:file=app.c:line=1091:obj=unknown:subj=xmlSecOpenSSLAppKeysMngrCertLoadBIO:error=1:xmlsec library function failed:

Please does anyone know how to make xmlsec1 read all the x509Certificate elements from the signature.xml, and verify signature.xml?

The following is signature.xml.

ddnUD1cNeIG1a3uj96Y/VS+WBC5qT24PL/j/91Tfl/0=

I+Sv8L0e9Px1aMAdlo5a2uQjXecYjv7wIyJxP50h8Fk=

HVThAjM5iEcTVJB6dgC5zehhQjYVu1JV7oN+OyezI2Y=

rf75zmIiY5uFijILpSBnhNEZA+5twK1OqDhjA/yri/A=

Kbbugd59Tj/M1MhsWySrQAeTwz8zhf4RqQsO+xRInqsdDQdhv5vqaNqJOAWStYcr

g26RD426JcJc3P7qy2C8VHuZMQ30krrwCbaQcNIptjBD83xAbOzUu2ZiHmadNJFQ

MY1Uc5RAdJmxBZ0AaNKQaZ6n7NBkm/AM/G9OU9rNJ5AdjyeQIy81P3T6eTSVC4U3

6y++A3/FpWwHJyX6mFuNrgAXZENjBWUuPrpIFCgSvXKr0X8U4q7TMvGCntd+TMsl

YtSnRYdFokzCSuoY5Xi7qDnC9u91BPBiMDrwVvJk8cWKQ5QRRyO035QPwwv2+BaN

jd67IdmbzRr6jpPx4A/H9w==

MIIDlDCCAnygAwIBAgIBAjANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQGEwJVSzEQ

MA4GA1UECBMHRW5nbGFuZDEMMAoGA1UEChMDVzNDMRAwDgYDVQQLEwdXZWJhcHBz

MQ4wDAYDVQQDEwUyLnJzYTAeFw0xMTA1MjUxNDI1MjRaFw0zMTA1MjAxNDI1MjRa

ME8xCzAJBgNVBAYTAlVLMRAwDgYDVQQIEwdFbmdsYW5kMQwwCgYDVQQKEwNXM0Mx

EDAOBgNVBAsTB1dlYmFwcHMxDjAMBgNVBAMTBTMucnNhMIIBIjANBgkqhkiG9w0B

AQEFAAOCAQ8AMIIBCgKCAQEAtgkBd9V2J1o+Ezsmvko8EiiTPtGwm3ZYkR8oxFje

4h1z6clJqCz20bdbjTb5flbq/sPt2cn0b9YY9cYuALJNq8ydtHtYfraltKodqtNj

2jZIAYrbUk2EXsNjISUyJamDHMKxz2ssUscQzPYulFLx+ZfSpaZdOIKV4ChOmXZw

WjW4TaEjh8DkAvS/qkTOW+2CKk8b//Q+VmxhCyeLgqqj3AX9hO3+ZB62zUEZekes

sQNT2ZudgM0M2pOAcAieBjEi7rXj59w89MRMF3rekp9UeXMmlTBPQbDD+yBi/bQh

DOYLr+nORI2AlBosKsqCb9+Qttpmk4XpGJWtqzDfxCRHAwIDAQABo3sweTAJBgNV

HRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZp

Y2F0ZTAdBgNVHQ4EFgQUCP3WcRe6mbgSPueiisha3Lzd4WIwHwYDVR0jBBgwFoAU

frSCRp58oUe+iPCV3IgbnoTtf40wDQYJKoZIhvcNAQELBQADggEBABC5cDDE4SgP

z1w1OUrsBJ+d3ceU/2AKnu5iYfmkg8plDAYW5w8gZz+ha+KlO4vJtwljBFqBEzkf

vaRGIqSv3pVKEGWO1Tl9X5CnV6Bj65x21YbkbFJadEakoNWFpAkuGQYvVaf0d6TC

GJA5rJXePW5Th6uN4vmHyZLqwgZG9VnjSRWRlYytEXYQzxeXwts3e22BNr9Dv4kt

RCGe8FNU2b2WcZqqPmA33mS0Fn97BdqhAC7KKZrgLaKSPcNFjSJJZjMrIf5v/jWm

4fdl+GxvprkHsuP9HSHuDCCPtc8YzGFM+pptS8pHYTiJP1kZjFGdguazT8jYBFw+

Vkz5ajGl/zk=

MIIDlDCCAnygAwIBAgIBAjANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQGEwJVSzEQ

MA4GA1UECBMHRW5nbGFuZDEMMAoGA1UEChMDVzNDMRAwDgYDVQQLEwdXZWJhcHBz

MQ4wDAYDVQQDEwUyLnJzYTAeFw0xMTA1MjUxNDI1MjRaFw0zMTA1MjAxNDI1MjRa

ME8xCzAJBgNVBAYTAlVLMRAwDgYDVQQIEwdFbmdsYW5kMQwwCgYDVQQKEwNXM0Mx

EDAOBgNVBAsTB1dlYmFwcHMxDjAMBgNVBAMTBTMucnNhMIIBIjANBgkqhkiG9w0B

AQEFAAOCAQ8AMIIBCgKCAQEAtgkBd9V2J1o+Ezsmvko8EiiTPtGwm3ZYkR8oxFje

4h1z6clJqCz20bdbjTb5flbq/sPt2cn0b9YY9cYuALJNq8ydtHtYfraltKodqtNj

2jZIAYrbUk2EXsNjISUyJamDHMKxz2ssUscQzPYulFLx+ZfSpaZdOIKV4ChOmXZw

WjW4TaEjh8DkAvS/qkTOW+2CKk8b//Q+VmxhCyeLgqqj3AX9hO3+ZB62zUEZekes

sQNT2ZudgM0M2pOAcAieBjEi7rXj59w89MRMF3rekp9UeXMmlTBPQbDD+yBi/bQh

DOYLr+nORI2AlBosKsqCb9+Qttpmk4XpGJWtqzDfxCRHAwIDAQABo3sweTAJBgNV

HRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZp

Y2F0ZTAdBgNVHQ4EFgQUCP3WcRe6mbgSPueiisha3Lzd4WIwHwYDVR0jBBgwFoAU

frSCRp58oUe+iPCV3IgbnoTtf40wDQYJKoZIhvcNAQELBQADggEBABC5cDDE4SgP

z1w1OUrsBJ+d3ceU/2AKnu5iYfmkg8plDAYW5w8gZz+ha+KlO4vJtwljBFqBEzkf

vaRGIqSv3pVKEGWO1Tl9X5CnV6Bj65x21YbkbFJadEakoNWFpAkuGQYvVaf0d6TC

GJA5rJXePW5Th6uN4vmHyZLqwgZG9VnjSRWRlYytEXYQzxeXwts3e22BNr9Dv4kt

RCGe8FNU2b2WcZqqPmA33mS0Fn97BdqhAC7KKZrgLaKSPcNFjSJJZjMrIf5v/jWm

4fdl+GxvprkHsuP9HSHuDCCPtc8YzGFM+pptS8pHYTiJP1kZjFGdguazT8jYBFw+

Vkz5ajGl/zk=MIIDyTCCArGgAwIBAgIBATANBgkqhkiG9w0BAQsFADBOMQ0wCwYDVQQDEwRyb290

MQswCQYDVQQGEwJVSzEQMA4GA1UECBMHRW5nbGFuZDEMMAoGA1UEChMDVzNDMRAw

DgYDVQQLEwdXZWJhcHBzMB4XDTExMDUyNTE0MjUyM1oXDTMxMDUyMDE0MjUyM1ow

TzELMAkGA1UEBhMCVUsxEDAOBgNVBAgTB0VuZ2xhbmQxDDAKBgNVBAoTA1czQzEQ

MA4GA1UECxMHV2ViYXBwczEOMAwGA1UEAxMFMi5yc2EwggEiMA0GCSqGSIb3DQEB

AQUAA4IBDwAwggEKAoIBAQDQsgjNFZrz39tYbTrfZWQ/lwSTlDWXTvFgwpCqHWCV

natYVxC20rzBBqBr1IOf1zu0AZj4U4QiEcXIJuqlRJpPpWeS1RtBVqY+4R0PN8yk

KnAuv9piCMom05sLZX4WkQhjmf3yY7XJwIHRA6KLVax3khzdmRdggqNU2bAWeC0/

7Yd7wJ2/YeV2HeomYCxgN9SX6ZmJbNhkldwSTB+JDzMLKhoCtnZhXXFGTuvkDvtx

VW4NCSK5EeSN5QVHd1fe1teWpltOQbds19R8/QZ43uu+CLWRTsmBXqjv2BXPPEnw

TNuJfQhlifnTtREM46y+Xlgg7pVMZrt6N6fWQnqapDQ9AgMBAAGjgbAwga0wHQYD

VR0OBBYEFH60gkaefKFHvojwldyIG56E7X+NMH4GA1UdIwR3MHWAFAMbQ7uilTlm

5C/ZxL6UOJwdot6qoVKkUDBOMQ0wCwYDVQQDEwRyb290MQswCQYDVQQGEwJVSzEQ

MA4GA1UECBMHRW5nbGFuZDEMMAoGA1UEChMDVzNDMRAwDgYDVQQLEwdXZWJhcHBz

ggkAxGNiSsTHmF0wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAL83h

DSYf/EdNmYtcBdN6HIGgjTFe+S0OG4+Sm7gvVR5QPbWlX8waVaSSrwnSWJ6QBSCf

3AabxE9/7Y1tw1dtj3pAraqAJP8NtqPwDyiIp8kePSmtmtPrs+D6wz6mpfw3F5pD

ZIAJYXya6GCuSWb9am3fyqbEGLBOSRe3i7Tav8KWNrv1BuGh0ytRipMXPf3DNNP1

upFqMi0+bd6I3MV8ez+YXz51mR+cgHKEXbm2pF5ek55QKKHXrR2j/VjSo3Gr/qq6

w6fTJWAFcbsleU/g5FrhSkaY2uHwaBUPda249YZILqg21q8jWVv4rqi/E8Jfl7qH

xJ8PxxIDekRJ+d78xw==MIIDyTCCArGgAwIBAgIBATANBgkqhkiG9w0BAQsFADBOMQ0wCwYDVQQDEwRyb290

MQswCQYDVQQGEwJVSzEQMA4GA1UECBMHRW5nbGFuZDEMMAoGA1UEChMDVzNDMRAw

DgYDVQQLEwdXZWJhcHBzMB4XDTExMDUyNTE0MjUyM1oXDTMxMDUyMDE0MjUyM1ow

TzELMAkGA1UEBhMCVUsxEDAOBgNVBAgTB0VuZ2xhbmQxDDAKBgNVBAoTA1czQzEQ

MA4GA1UECxMHV2ViYXBwczEOMAwGA1UEAxMFMi5yc2EwggEiMA0GCSqGSIb3DQEB

AQUAA4IBDwAwggEKAoIBAQDQsgjNFZrz39tYbTrfZWQ/lwSTlDWXTvFgwpCqHWCV

natYVxC20rzBBqBr1IOf1zu0AZj4U4QiEcXIJuqlRJpPpWeS1RtBVqY+4R0PN8yk

KnAuv9piCMom05sLZX4WkQhjmf3yY7XJwIHRA6KLVax3khzdmRdggqNU2bAWeC0/

7Yd7wJ2/YeV2HeomYCxgN9SX6ZmJbNhkldwSTB+JDzMLKhoCtnZhXXFGTuvkDvtx

VW4NCSK5EeSN5QVHd1fe1teWpltOQbds19R8/QZ43uu+CLWRTsmBXqjv2BXPPEnw

TNuJfQhlifnTtREM46y+Xlgg7pVMZrt6N6fWQnqapDQ9AgMBAAGjgbAwga0wHQYD

VR0OBBYEFH60gkaefKFHvojwldyIG56E7X+NMH4GA1UdIwR3MHWAFAMbQ7uilTlm

5C/ZxL6UOJwdot6qoVKkUDBOMQ0wCwYDVQQDEwRyb290MQswCQYDVQQGEwJVSzEQ

MA4GA1UECBMHRW5nbGFuZDEMMAoGA1UEChMDVzNDMRAwDgYDVQQLEwdXZWJhcHBz

ggkAxGNiSsTHmF0wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAL83h

DSYf/EdNmYtcBdN6HIGgjTFe+S0OG4+Sm7gvVR5QPbWlX8waVaSSrwnSWJ6QBSCf

3AabxE9/7Y1tw1dtj3pAraqAJP8NtqPwDyiIp8kePSmtmtPrs+D6wz6mpfw3F5pD

ZIAJYXya6GCuSWb9am3fyqbEGLBOSRe3i7Tav8KWNrv1BuGh0ytRipMXPf3DNNP1

upFqMi0+bd6I3MV8ez+YXz51mR+cgHKEXbm2pF5ek55QKKHXrR2j/VjSo3Gr/qq6

w6fTJWAFcbsleU/g5FrhSkaY2uHwaBUPda249YZILqg21q8jWVv4rqi/E8Jfl7qH

xJ8PxxIDekRJ+d78xw==MIID0DCCArigAwIBAgIJAMRjYkrEx5hdMA0GCSqGSIb3DQEBBQUAME4xDTALBgNV

BAMTBHJvb3QxCzAJBgNVBAYTAlVLMRAwDgYDVQQIEwdFbmdsYW5kMQwwCgYDVQQK

EwNXM0MxEDAOBgNVBAsTB1dlYmFwcHMwHhcNMTEwNTI1MTQyNTIyWhcNMzEwNTIw

MTQyNTIyWjBOMQ0wCwYDVQQDEwRyb290MQswCQYDVQQGEwJVSzEQMA4GA1UECBMH

RW5nbGFuZDEMMAoGA1UEChMDVzNDMRAwDgYDVQQLEwdXZWJhcHBzMIIBIjANBgkq

hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwA+/Qn3iCipUlvi6WY3kgrO5pyOyOP8h

yvPwCBTibxpLLJFhKiPX1mEwJoj8jKszaV4D2orRNJ7nefzpi8VoW2331v5PQNhX

IVbaNrg0fif6XWxtJYWjZ/Pi1skoSkmdL9cbDoabDs4gr7Nfb6wPq1z0KK8YFW0z

c3USst5sWePqBrlcRio/yoa/HiILnPtT9uOwpbHBTWtsfJ/f8b8+SsED9NnBl75V

ewdZO59dzYzP1L5Te0Uf9KakZYI1QavNBivUlgld9J8OBVr4brorpKKbRw477V9G

bAr3Q9cMwLlADIp3sdcBCNdwUicC6I4MpSSWjdlX/KXl73VEBkFqTQIDAQABo4Gw

MIGtMB0GA1UdDgQWBBQDG0O7opU5ZuQv2cS+lDicHaLeqjB+BgNVHSMEdzB1gBQD

G0O7opU5ZuQv2cS+lDicHaLeqqFSpFAwTjENMAsGA1UEAxMEcm9vdDELMAkGA1UE

BhMCVUsxEDAOBgNVBAgTB0VuZ2xhbmQxDDAKBgNVBAoTA1czQzEQMA4GA1UECxMH

V2ViYXBwc4IJAMRjYkrEx5hdMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD

ggEBADUEFRxMI6afI48kNn7QZF6pCyzQtANLA4+wvx5Chl+SFmxnSkj9aXWZ/fSE

zWB5IGtu/pYZVxyjFiRsxPemangYDxapcEKVzGKhBYXRu4t27jo1t8h+2JIIgaA1

ttNay/iW+mpFcdZ08W6VV+v/6m7UZ57ecBTr2aHtdglG3k1JsBT1K5zXlITiFLR8

1CFK0bEo1TJ0qIVTps4rMkygmDApJ9u1QKKlK6IUhlPl57LVfj2y+K8Ku2na4rpH

vz4eKljBcrsPAp36oRzhzmzp+a6AA5AnXoy5++P7hWClhvrtObQDNbsiJaTnXcf3

+8eOQwONqby8T25RGtwKk7ajPVU=

61622c00-0e67-11e4-aec7-af2396515bcf

2011-06-10T18:13:51.0Z

2050-01-02T10:00:00.0Z

2011-06-10T18:13:51.0Z

ax87au3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值