{"action":"opened","number":53,"pull_request":{"url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/pulls/53","id":221373898,"node_id":"MDExOlB1bGxSZXF1ZXN0MjIxMzczODk4","html_url":"https://github.com/IdentityPython/pyXMLSecurity/pull/53","diff_url":"https://github.com/IdentityPython/pyXMLSecurity/pull/53.diff","patch_url":"https://github.com/IdentityPython/pyXMLSecurity/pull/53.patch","issue_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/issues/53","number":53,"state":"open","locked":false,"title":"Do not skip pykcs11 tests","user":{"login":"c00kiemon5ter","id":97634,"node_id":"MDQ6VXNlcjk3NjM0","avatar_url":"https://avatars0.githubusercontent.com/u/97634?v=4","gravatar_id":"","url":"https://api.github.com/users/c00kiemon5ter","html_url":"https://github.com/c00kiemon5ter","followers_url":"https://api.github.com/users/c00kiemon5ter/followers","following_url":"https://api.github.com/users/c00kiemon5ter/following{/other_user}","gists_url":"https://api.github.com/users/c00kiemon5ter/gists{/gist_id}","starred_url":"https://api.github.com/users/c00kiemon5ter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/c00kiemon5ter/subscriptions","organizations_url":"https://api.github.com/users/c00kiemon5ter/orgs","repos_url":"https://api.github.com/users/c00kiemon5ter/repos","events_url":"https://api.github.com/users/c00kiemon5ter/events{/privacy}","received_events_url":"https://api.github.com/users/c00kiemon5ter/received_events","type":"User","site_admin":false},"body":"This changeset works on `.travis.yml` file in order to install the right components needed to run the `p11_test` suite. Changes include removal of P11_SPY component requirement (as it was not used), and using the latest `pykcs11`.\r\n\r\n<details>\r\n<summary>At the moment, tests fail with <a href=\"https://travis-ci.org/c00kiemon5ter/pyXMLSecurity/builds/439046509\">the following log</a>:</summary>\r\n\r\n```\r\nTraceback (most recent call last):\r\n  File \"/home/travis/build/c00kiemon5ter/pyXMLSecurity/src/xmlsec/test/p11_test.py\", line 184, in setup\r\n    '-out', signer_cert_pem], softhsm_conf=softhsm_conf)\r\n  File \"/home/travis/build/c00kiemon5ter/pyXMLSecurity/src/xmlsec/test/__init__.py\", line 36, in run_cmd\r\n    raise RuntimeError(msg)\r\nRuntimeError: [exit-code: 1] [stdout: ] [stderr: engine \"pkcs11\" set.\r\nformat not recognized!\r\nsupported formats: <id>, <slot>:<id>, id_<id>, slot_<slot>-id_<id>, label_<label>, slot_<slot>-label_<label>\r\nwhere <slot> is the slot number as normal integer,\r\nand <id> is the id number as hex string.\r\nand <label> is the textual key label string.\r\nPKCS11_get_private_key returned NULL\r\ncannot load Private Key from engine\r\n139744575288992:error:26096080:engine routines:ENGINE_load_private_key:failed loading private key:eng_pkey.c:126:\r\nunable to load Private Key]\r\nTest signing a SAML assertion using PKCS#11 and then verifying it using plain file. ... ERROR\r\nTest signing a SAML assertion using PKCS#11 and then verifying it using plain file. ... ERROR\r\ntest_bad_login (xmlsec.test.p11_test.TestPKCS11) ... ok\r\ntest_find_key (xmlsec.test.p11_test.TestPKCS11) ... FAIL\r\ntest_open_session (xmlsec.test.p11_test.TestPKCS11) ... ok\r\ntest_open_session_no_pin (xmlsec.test.p11_test.TestPKCS11) ... ok\r\ntest_two_sessions (xmlsec.test.p11_test.TestPKCS11) ... ok\r\nLoad files from the resource path and store them in dict. ... ok\r\nTest https://duo.com/blog/duo-finds-saml-vulnerabilities-affecting-multiple-implementations ... ok\r\ntest_edugain_with_xmlsec1 (xmlsec.test.sign_verify_test.TestSignVerify) ... ok\r\ntest_mm1 (xmlsec.test.sign_verify_test.TestSignVerify) ... ok\r\ntest_mm2 (xmlsec.test.sign_verify_test.TestSignVerify) ... ok\r\ntest_mm_with_inner_signature (xmlsec.test.sign_verify_test.TestSignVerify) ... ok\r\ntest_mm_with_java (xmlsec.test.sign_verify_test.TestSignVerify) ... ok\r\ntest_mm_with_java_alt (xmlsec.test.sign_verify_test.TestSignVerify) ... ok\r\ntest_mm_with_xmlsec1 (xmlsec.test.sign_verify_test.TestSignVerify) ... ok\r\nTest signing a SAML assertion, and compare resulting signature with that of another implementation (xmlsec1). ... ok\r\nTest signing a SAML assertion using sha256, and compare resulting signature with that of another implementation (xmlsec1). ... ok\r\nTest signing a SAML assertion, and making sure we can verify it. ... ok\r\nTest signing a SAML assertion using sha256, and making sure we can verify it. ... ok\r\nTest signing a SAML assertion, and return verified data. ... ok\r\nTest that we can sign an already signed document without breaking the first signature ... ok\r\nTest that we can verify signatures created by another implementation (xmlsec1). ... ok\r\nTest that we reject a modified XML document. ... ok\r\ntest_verify_href (xmlsec.test.sign_verify_test.TestSignVerify) ... ok\r\nTest resistance to attempted wrapping attack ... ok\r\nRun through all testcases, sign and verify using xmlsec1 ... ok\r\ntest_verify_all (xmlsec.test.sign_verify_test.TestVerify) ... ok\r\nLoad files from the resource path and store them in dict. ... ok\r\nTest that whitespaces and newlines are removed properly. ... ok\r\nTest that whitespaces and newlines are removed properly. ... ok\r\nTest that whitespaces and newlines are removed properly with comments retained. ... ok\r\ntest_enveloped1 (xmlsec.test.transform_test.TestTransforms) ... ok\r\n======================================================================\r\nERROR: Test signing a SAML assertion using PKCS#11 and then verifying it using plain file.\r\n----------------------------------------------------------------------\r\nTraceback (most recent call last):\r\n  File \"/home/travis/build/c00kiemon5ter/pyXMLSecurity/src/xmlsec/test/p11_test.py\", line 332, in test_SAML_sign_with_pkcs11\r\n    res = xmlsec.verify(signed, signer_cert_pem)\r\n  File \"/home/travis/build/c00kiemon5ter/pyXMLSecurity/src/xmlsec/__init__.py\", line 343, in verify\r\n    return len(_verify(t, keyspec, sig_path)) > 0\r\n  File \"/home/travis/build/c00kiemon5ter/pyXMLSecurity/src/xmlsec/__init__.py\", line 305, in _verify\r\n    this_cert = xmlsec.crypto.from_keyspec(keyspec, signature_element=sig)\r\n  File \"/home/travis/build/c00kiemon5ter/pyXMLSecurity/src/xmlsec/crypto.py\", line 66, in from_keyspec\r\n    key = _load_keyspec(keyspec, private, signature_element)\r\n  File \"/home/travis/build/c00kiemon5ter/pyXMLSecurity/src/xmlsec/crypto.py\", line 235, in _load_keyspec\r\n    return XMLSecCryptoFile(keyspec, private)\r\n  File \"/home/travis/build/c00kiemon5ter/pyXMLSecurity/src/xmlsec/crypto.py\", line 143, in __init__\r\n    self.key = load_pem_x509_certificate(file.read(), backend=default_backend())\r\n  File \"/home/travis/virtualenv/python2.7.14/lib/python2.7/site-packages/cryptography/x509/base.py\", line 43, in load_pem_x509_certificate\r\n    return backend.load_pem_x509_certificate(data)\r\n  File \"/home/travis/virtualenv/python2.7.14/lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/backend.py\", line 1138, in load_pem_x509_certificate\r\n    raise ValueError(\"Unable to load certificate\")\r\nValueError: Unable to load certificate\r\n-------------------- >> begin captured stdout << ---------------------\r\nXML input :\r\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<ns0:Assertion xmlns:ns0=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:ns1=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ID=\"id11111\" IssueInstant=\"2009-10-30T13:20:28Z\" Version=\"2.0\">\r\n  <ns1:Signature Id=\"Signature1\">\r\n    <ns1:SignedInfo>\r\n      <ns1:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/>\r\n      <ns1:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/>\r\n      <ns1:Reference URI=\"#id11111\">\r\n        <ns1:Transforms>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/>\r\n        </ns1:Transforms>\r\n        <ns1:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/>\r\n        <ns1:DigestValue/>\r\n      </ns1:Reference>\r\n    </ns1:SignedInfo>\r\n    <ns1:SignatureValue/>\r\n    <ns1:KeyInfo>\r\n      <ns1:X509Data>\r\n        <ns1:X509Certificate>MIICsDCCAhmgAwIBAgIJAJrzqSSwmDY9MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMDkxMDA2MTk0OTQxWhcNMDkxMTA1MTk0OTQxWjBFMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJg2cms7MqjniT8Fi/XkNHZNPbNVQyMUMXE9tXOdqwYCA1cc8vQdzkihscQMXy3iPw2cMggBu6gjMTOSOxECkuvX5ZCclKr8pXAJM5cY6gVOaVO2PdTZcvDBKGbiaNefiEw5hnoZomqZGp8wHNLAUkwtH9vjqqvxyS/vclc6k2ewIDAQABo4GnMIGkMB0GA1UdDgQWBBRePsKHKYJsiojE78ZWXccK9K4aJTB1BgNVHSMEbjBsgBRePsKHKYJsiojE78ZWXccK9K4aJaFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAJrzqSSwmDY9MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAJSrKOEzHO7TL5cy6h3qh+3+JAk8HbGBW+cbX6KBCAw/mzU8flK25vnWwXS3dv2FF3Aod0/S7AWNfKib5U/SA9nJaz/mWeF9S0farz9AQFc8/NSzAzaVq7YbM4F6f6N2FRl7GikdXRCed45j6mrPzGzk3ECbupFnqyREH3+ZPSdk=</ns1:X509Certificate>\r\n      </ns1:X509Data>\r\n    </ns1:KeyInfo>\r\n  </ns1:Signature>\r\n  <ns0:AttributeStatement>\r\n    <ns0:Attribute FriendlyName=\"givenName\" NameFormat=\"\">\r\n      <ns0:AttributeValue xsi:nil=\"true\" xsi:type=\"xs:string\">Bar</ns0:AttributeValue>\r\n    </ns0:Attribute>\r\n    <ns0:Attribute FriendlyName=\"surName\" NameFormat=\"\">\r\n      <ns0:AttributeValue xsi:nil=\"true\" xsi:type=\"xs:string\">Foo</ns0:AttributeValue>\r\n    </ns0:Attribute>\r\n  </ns0:AttributeStatement>\r\n</ns0:Assertion>\r\n--------------------- >> end captured stdout << ----------------------\r\n-------------------- >> begin captured logging << --------------------\r\nroot: DEBUG: Creating test pkcs11 token using softhsm\r\nroot: DEBUG: Generating softhsm.conf\r\nroot: DEBUG: Initializing the token\r\nroot: DEBUG: The token has been initialized.\r\nroot: DEBUG: Generating 1024 bit RSA key in token\r\nroot: ERROR: Using slot with index 0 (0x0)\r\nroot: DEBUG: Key pair generated:\r\nPrivate Key Object; RSA \r\n  label:      test\r\n  ID:         a1b2\r\n  Usage:      decrypt, sign, unwrap\r\nPublic Key Object; RSA 1024 bits\r\n  label:      test\r\n  ID:         a1b2\r\n  Usage:      encrypt, verify, wrap\r\nroot: ERROR: Using slot 0 with a present token (0x0)\r\nroot: DEBUG: Public Key Object; RSA 1024 bits\r\n  label:      test\r\n  ID:         a1b2\r\n  Usage:      encrypt, verify, wrap\r\nPrivate Key Object; RSA \r\n  label:      test\r\n  ID:         a1b2\r\n  Usage:      decrypt, sign, unwrap\r\nroot: DEBUG: Generating OpenSSL config\r\nroot: DEBUG: Generating self-signed certificate\r\nroot: ERROR: engine \"pkcs11\" set.\r\nformat not recognized!\r\nsupported formats: <id>, <slot>:<id>, id_<id>, slot_<slot>-id_<id>, label_<label>, slot_<slot>-label_<label>\r\nwhere <slot> is the slot number as normal integer,\r\nand <id> is the id number as hex string.\r\nand <label> is the textual key label string.\r\nPKCS11_get_private_key returned NULL\r\ncannot load Private Key from engine\r\n139744575288992:error:26096080:engine routines:ENGINE_load_private_key:failed loading private key:eng_pkey.c:126:\r\nunable to load Private Key\r\nroot: WARNING: PKCS11 tests disabled: unable to initialize test token: [exit-code: 1] [stdout: ] [stderr: engine \"pkcs11\" set.\r\nformat not recognized!\r\nsupported formats: <id>, <slot>:<id>, id_<id>, slot_<slot>-id_<id>, label_<label>, slot_<slot>-label_<label>\r\nwhere <slot> is the slot number as normal integer,\r\nand <id> is the id number as hex string.\r\nand <label> is the textual key label string.\r\nPKCS11_get_private_key returned NULL\r\ncannot load Private Key from engine\r\n139744575288992:error:26096080:engine routines:ENGINE_load_private_key:failed loading private key:eng_pkey.c:126:\r\nunable to load Private Key]\r\nroot: DEBUG: parsed pkcs11 uri: ParseResult(scheme='pkcs11', netloc='', path='/usr/lib/softhsm/libsofthsm.so/test', params='', query='pin=secret1', fragment='')\r\nroot: DEBUG: returning /usr/lib/softhsm/libsofthsm.so None test {'pin': 'secret1'}\r\nroot: DEBUG: loading library /usr/lib/softhsm/libsofthsm.so\r\nroot: DEBUG: Found pkcs11 object: CKA_ALWAYS_AUTHENTICATE: (0L,)\r\nCKA_ALWAYS_SENSITIVE: True\r\nCKA_CLASS: CKO_PRIVATE_KEY\r\nCKA_DECRYPT: True\r\nCKA_DERIVE: False\r\nCKA_END_DATE: ()\r\nCKA_EXTRACTABLE: (0L,)\r\nCKA_ID: (161L, 178L)\r\nCKA_KEY_GEN_MECHANISM: 0\r\nCKA_KEY_TYPE: CKK_RSA\r\nCKA_LABEL: test\r\nCKA_LOCAL: True\r\nCKA_MODIFIABLE: True\r\nCKA_MODULUS: (230L, 188L, 251L, 226L, 86L, 135L, 221L, 239L, 215L, 57L, 176L, 79L, 10L, 98L, 197L, 136L, 98L, 232L, 66L, 178L, 18L, 85L, 2L, 119L, 22L, 139L, 193L, 20L, 145L, 126L, 67L, 111L, 86L, 81L, 23L, 41L, 107L, 24L, 190L, 44L, 13L, 21L, 67L, 14L, 87L, 4L, 141L, 123L, 212L, 174L, 113L, 144L, 79L, 193L, 20L, 253L, 253L, 185L, 45L, 243L, 75L, 198L, 100L, 1L, 44L, 3L, 187L, 24L, 179L, 43L, 119L, 244L, 67L, 64L, 224L, 43L, 17L, 205L, 56L, 139L, 11L, 184L, 244L, 54L, 157L, 149L, 10L, 95L, 12L, 226L, 215L, 165L, 140L, 140L, 0L, 109L, 43L, 207L, 28L, 58L, 131L, 55L, 41L, 159L, 192L, 234L, 196L, 166L, 91L, 73L, 223L, 77L, 253L, 132L, 47L, 89L, 50L, 221L, 113L, 89L, 107L, 207L, 96L, 144L, 239L, 28L, 38L, 47L)\r\nCKA_NEVER_EXTRACTABLE: True\r\nCKA_PRIVATE: True\r\nCKA_PUBLIC_EXPONENT: (1L, 0L, 1L)\r\nCKA_SENSITIVE: True\r\nCKA_SIGN: True\r\nCKA_SIGN_RECOVER: True\r\nCKA_START_DATE: ()\r\nCKA_SUBJECT: ()\r\nCKA_TOKEN: True\r\nCKA_UNWRAP: True\r\nCKA_WRAP_WITH_TRUSTED: (1L,)\r\nroot: DEBUG: Using pkcs11 signing key: <function <lambda> at 0x7f4343ccb9b0>\r\nroot: DEBUG: processing sig template: <ns1:Signature xmlns:ns1=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:ns0=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" Id=\"Signature1\">\r\n    <ns1:SignedInfo>\r\n      <ns1:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/>\r\n      <ns1:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/>\r\n      <ns1:Reference URI=\"#id11111\">\r\n        <ns1:Transforms>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/>\r\n        </ns1:Transforms>\r\n        <ns1:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/>\r\n        <ns1:DigestValue/>\r\n      </ns1:Reference>\r\n    </ns1:SignedInfo>\r\n    <ns1:SignatureValue/>\r\n    <ns1:KeyInfo>\r\n      <ns1:X509Data>\r\n        <ns1:X509Certificate>MIICsDCCAhmgAwIBAgIJAJrzqSSwmDY9MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMDkxMDA2MTk0OTQxWhcNMDkxMTA1MTk0OTQxWjBFMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJg2cms7MqjniT8Fi/XkNHZNPbNVQyMUMXE9tXOdqwYCA1cc8vQdzkihscQMXy3iPw2cMggBu6gjMTOSOxECkuvX5ZCclKr8pXAJM5cY6gVOaVO2PdTZcvDBKGbiaNefiEw5hnoZomqZGp8wHNLAUkwtH9vjqqvxyS/vclc6k2ewIDAQABo4GnMIGkMB0GA1UdDgQWBBRePsKHKYJsiojE78ZWXccK9K4aJTB1BgNVHSMEbjBsgBRePsKHKYJsiojE78ZWXccK9K4aJaFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAJrzqSSwmDY9MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAJSrKOEzHO7TL5cy6h3qh+3+JAk8HbGBW+cbX6KBCAw/mzU8flK25vnWwXS3dv2FF3Aod0/S7AWNfKib5U/SA9nJaz/mWeF9S0farz9AQFc8/NSzAzaVq7YbM4F6f6N2FRl7GikdXRCed45j6mrPzGzk3ECbupFnqyREH3+ZPSdk=</ns1:X509Certificate>\r\n      </ns1:X509Data>\r\n    </ns1:KeyInfo>\r\n  </ns1:Signature>\r\n  \r\nroot: DEBUG: Looking for #id11111 using id attribute 'ID'\r\nroot: DEBUG: using hash algorithm SHA1\r\nroot: DEBUG: computed SHA1 digest LN4yILKOKwC22ueQUU1R3mfrs68= for ref #id11111\r\nroot: DEBUG: replacing digest in <ns1:DigestValue xmlns:ns1=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:ns0=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"/>\r\n      \r\nroot: DEBUG: transform http://www.w3.org/2001/10/xml-exc-c14n# on <ns1:SignedInfo xmlns:ns1=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:ns0=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\r\n      <ns1:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/>\r\n      <ns1:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/>\r\n      <ns1:Reference URI=\"#id11111\">\r\n        <ns1:Transforms>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/>\r\n        </ns1:Transforms>\r\n        <ns1:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/>\r\n        <ns1:DigestValue>LN4yILKOKwC22ueQUU1R3mfrs68=</ns1:DigestValue>\r\n      </ns1:Reference>\r\n    </ns1:SignedInfo>\r\n    \r\nroot: DEBUG: SignedInfo C14N: <ns1:SignedInfo xmlns:ns1=\"http://www.w3.org/2000/09/xmldsig#\">\r\n      <ns1:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"></ns1:CanonicalizationMethod>\r\n      <ns1:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"></ns1:SignatureMethod>\r\n      <ns1:Reference URI=\"#id11111\">\r\n        <ns1:Transforms>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"></ns1:Transform>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"></ns1:Transform>\r\n        </ns1:Transforms>\r\n        <ns1:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"></ns1:DigestMethod>\r\n        <ns1:DigestValue>LN4yILKOKwC22ueQUU1R3mfrs68=</ns1:DigestValue>\r\n      </ns1:Reference>\r\n    </ns1:SignedInfo>\r\nroot: DEBUG: SignedInfo digest: K905bgHxT8AKQeeOTycPNNeLKrA=\r\nroot: DEBUG: signing 35 bytes using <PyKCS11.Mechanism object at 0x7f4343ca5250>\r\nroot: DEBUG: SignatureValue: wMPLr9fofF4sdbMUl82pv3KIJdj42ahF0g5nmqNXLoigiRLweAQxRvT2LEYP0AUtd9LBUgyWL5Z3tQzMSZLo2mqtaDbcjgv3u1clfqkDPX3WiZg7VQ36G62n3NHIXBnv0ShPsMAHmC3ggppRzhfsZUskZoVefXC9Y2FUH+6aHqY=\r\nroot: DEBUG: SignatureValue: wMPLr9fofF4sdbMUl82pv3KIJdj42ahF0g5nmqNXLoigiRLweAQxRvT2LEYP0AUtd9LBUgyWL5Z3tQzMSZLo2mqtaDbcjgv3u1clfqkDPX3WiZg7VQ36G62n3NHIXBnv0ShPsMAHmC3ggppRzhfsZUskZoVefXC9Y2FUH+6aHqY=\r\n--------------------- >> end captured logging << ---------------------\r\n======================================================================\r\nERROR: Test signing a SAML assertion using PKCS#11 and then verifying it using plain file.\r\n----------------------------------------------------------------------\r\nTraceback (most recent call last):\r\n  File \"/home/travis/build/c00kiemon5ter/pyXMLSecurity/src/xmlsec/test/p11_test.py\", line 350, in test_SAML_sign_with_pkcs11_cert\r\n    res = xmlsec.verify(signed, signer_cert_pem)\r\n  File \"/home/travis/build/c00kiemon5ter/pyXMLSecurity/src/xmlsec/__init__.py\", line 343, in verify\r\n    return len(_verify(t, keyspec, sig_path)) > 0\r\n  File \"/home/travis/build/c00kiemon5ter/pyXMLSecurity/src/xmlsec/__init__.py\", line 305, in _verify\r\n    this_cert = xmlsec.crypto.from_keyspec(keyspec, signature_element=sig)\r\n  File \"/home/travis/build/c00kiemon5ter/pyXMLSecurity/src/xmlsec/crypto.py\", line 66, in from_keyspec\r\n    key = _load_keyspec(keyspec, private, signature_element)\r\n  File \"/home/travis/build/c00kiemon5ter/pyXMLSecurity/src/xmlsec/crypto.py\", line 235, in _load_keyspec\r\n    return XMLSecCryptoFile(keyspec, private)\r\n  File \"/home/travis/build/c00kiemon5ter/pyXMLSecurity/src/xmlsec/crypto.py\", line 143, in __init__\r\n    self.key = load_pem_x509_certificate(file.read(), backend=default_backend())\r\n  File \"/home/travis/virtualenv/python2.7.14/lib/python2.7/site-packages/cryptography/x509/base.py\", line 43, in load_pem_x509_certificate\r\n    return backend.load_pem_x509_certificate(data)\r\n  File \"/home/travis/virtualenv/python2.7.14/lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/backend.py\", line 1138, in load_pem_x509_certificate\r\n    raise ValueError(\"Unable to load certificate\")\r\nValueError: Unable to load certificate\r\n-------------------- >> begin captured stdout << ---------------------\r\nXML input :\r\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<ns0:Assertion xmlns:ns0=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:ns1=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ID=\"id11111\" IssueInstant=\"2009-10-30T13:20:28Z\" Version=\"2.0\">\r\n  <ns1:Signature Id=\"Signature1\">\r\n    <ns1:SignedInfo>\r\n      <ns1:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/>\r\n      <ns1:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/>\r\n      <ns1:Reference URI=\"#id11111\">\r\n        <ns1:Transforms>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/>\r\n        </ns1:Transforms>\r\n        <ns1:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/>\r\n        <ns1:DigestValue/>\r\n      </ns1:Reference>\r\n    </ns1:SignedInfo>\r\n    <ns1:SignatureValue/>\r\n  </ns1:Signature>\r\n  <ns0:AttributeStatement>\r\n    <ns0:Attribute FriendlyName=\"givenName\" NameFormat=\"\">\r\n      <ns0:AttributeValue xsi:nil=\"true\" xsi:type=\"xs:string\">Bar</ns0:AttributeValue>\r\n    </ns0:Attribute>\r\n    <ns0:Attribute FriendlyName=\"surName\" NameFormat=\"\">\r\n      <ns0:AttributeValue xsi:nil=\"true\" xsi:type=\"xs:string\">Foo</ns0:AttributeValue>\r\n    </ns0:Attribute>\r\n  </ns0:AttributeStatement>\r\n</ns0:Assertion>\r\nXML output :\r\n<ns0:Assertion xmlns:ns0=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:ns1=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ID=\"id11111\" IssueInstant=\"2009-10-30T13:20:28Z\" Version=\"2.0\">\r\n  <ns1:Signature Id=\"Signature1\">\r\n    <ns1:SignedInfo>\r\n      <ns1:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/>\r\n      <ns1:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/>\r\n      <ns1:Reference URI=\"#id11111\">\r\n        <ns1:Transforms>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/>\r\n        </ns1:Transforms>\r\n        <ns1:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/>\r\n        <ns1:DigestValue>LN4yILKOKwC22ueQUU1R3mfrs68=</ns1:DigestValue>\r\n      </ns1:Reference>\r\n    </ns1:SignedInfo>\r\n    <ns1:SignatureValue>wMPLr9fofF4sdbMUl82pv3KIJdj42ahF0g5nmqNXLoigiRLweAQxRvT2LEYP0AUtd9LBUgyWL5Z3tQzMSZLo2mqtaDbcjgv3u1clfqkDPX3WiZg7VQ36G62n3NHIXBnv0ShPsMAHmC3ggppRzhfsZUskZoVefXC9Y2FUH+6aHqY=</ns1:SignatureValue>\r\n  </ns1:Signature>\r\n  <ns0:AttributeStatement>\r\n    <ns0:Attribute FriendlyName=\"givenName\" NameFormat=\"\">\r\n      <ns0:AttributeValue xsi:nil=\"true\" xsi:type=\"xs:string\">Bar</ns0:AttributeValue>\r\n    </ns0:Attribute>\r\n    <ns0:Attribute FriendlyName=\"surName\" NameFormat=\"\">\r\n      <ns0:AttributeValue xsi:nil=\"true\" xsi:type=\"xs:string\">Foo</ns0:AttributeValue>\r\n    </ns0:Attribute>\r\n  </ns0:AttributeStatement>\r\n</ns0:Assertion>\r\n--------------------- >> end captured stdout << ----------------------\r\n-------------------- >> begin captured logging << --------------------\r\nroot: DEBUG: parsed pkcs11 uri: ParseResult(scheme='pkcs11', netloc='', path='/usr/lib/softhsm/libsofthsm.so/test', params='', query='pin=secret1', fragment='')\r\nroot: DEBUG: returning /usr/lib/softhsm/libsofthsm.so None test {'pin': 'secret1'}\r\nroot: DEBUG: already loaded: /usr/lib/softhsm/libsofthsm.so: <PyKCS11.PyKCS11Lib object at 0x7f434572bb90>\r\nroot: DEBUG: Found pkcs11 object: CKA_ALWAYS_AUTHENTICATE: (0L,)\r\nCKA_ALWAYS_SENSITIVE: True\r\nCKA_CLASS: CKO_PRIVATE_KEY\r\nCKA_DECRYPT: True\r\nCKA_DERIVE: False\r\nCKA_END_DATE: ()\r\nCKA_EXTRACTABLE: (0L,)\r\nCKA_ID: (161L, 178L)\r\nCKA_KEY_GEN_MECHANISM: 0\r\nCKA_KEY_TYPE: CKK_RSA\r\nCKA_LABEL: test\r\nCKA_LOCAL: True\r\nCKA_MODIFIABLE: True\r\nCKA_MODULUS: (230L, 188L, 251L, 226L, 86L, 135L, 221L, 239L, 215L, 57L, 176L, 79L, 10L, 98L, 197L, 136L, 98L, 232L, 66L, 178L, 18L, 85L, 2L, 119L, 22L, 139L, 193L, 20L, 145L, 126L, 67L, 111L, 86L, 81L, 23L, 41L, 107L, 24L, 190L, 44L, 13L, 21L, 67L, 14L, 87L, 4L, 141L, 123L, 212L, 174L, 113L, 144L, 79L, 193L, 20L, 253L, 253L, 185L, 45L, 243L, 75L, 198L, 100L, 1L, 44L, 3L, 187L, 24L, 179L, 43L, 119L, 244L, 67L, 64L, 224L, 43L, 17L, 205L, 56L, 139L, 11L, 184L, 244L, 54L, 157L, 149L, 10L, 95L, 12L, 226L, 215L, 165L, 140L, 140L, 0L, 109L, 43L, 207L, 28L, 58L, 131L, 55L, 41L, 159L, 192L, 234L, 196L, 166L, 91L, 73L, 223L, 77L, 253L, 132L, 47L, 89L, 50L, 221L, 113L, 89L, 107L, 207L, 96L, 144L, 239L, 28L, 38L, 47L)\r\nCKA_NEVER_EXTRACTABLE: True\r\nCKA_PRIVATE: True\r\nCKA_PUBLIC_EXPONENT: (1L, 0L, 1L)\r\nCKA_SENSITIVE: True\r\nCKA_SIGN: True\r\nCKA_SIGN_RECOVER: True\r\nCKA_START_DATE: ()\r\nCKA_SUBJECT: ()\r\nCKA_TOKEN: True\r\nCKA_UNWRAP: True\r\nCKA_WRAP_WITH_TRUSTED: (1L,)\r\nroot: DEBUG: Using pkcs11 signing key: <function <lambda> at 0x7f4342191aa0>\r\nroot: DEBUG: processing sig template: <ns1:Signature xmlns:ns1=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:ns0=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" Id=\"Signature1\">\r\n    <ns1:SignedInfo>\r\n      <ns1:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/>\r\n      <ns1:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/>\r\n      <ns1:Reference URI=\"#id11111\">\r\n        <ns1:Transforms>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/>\r\n        </ns1:Transforms>\r\n        <ns1:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/>\r\n        <ns1:DigestValue/>\r\n      </ns1:Reference>\r\n    </ns1:SignedInfo>\r\n    <ns1:SignatureValue/>\r\n  </ns1:Signature>\r\n  \r\nroot: DEBUG: Looking for #id11111 using id attribute 'ID'\r\nroot: DEBUG: using hash algorithm SHA1\r\nroot: DEBUG: computed SHA1 digest LN4yILKOKwC22ueQUU1R3mfrs68= for ref #id11111\r\nroot: DEBUG: replacing digest in <ns1:DigestValue xmlns:ns1=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:ns0=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"/>\r\n      \r\nroot: DEBUG: transform http://www.w3.org/2001/10/xml-exc-c14n# on <ns1:SignedInfo xmlns:ns1=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:ns0=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\r\n      <ns1:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/>\r\n      <ns1:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/>\r\n      <ns1:Reference URI=\"#id11111\">\r\n        <ns1:Transforms>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/>\r\n        </ns1:Transforms>\r\n        <ns1:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/>\r\n        <ns1:DigestValue>LN4yILKOKwC22ueQUU1R3mfrs68=</ns1:DigestValue>\r\n      </ns1:Reference>\r\n    </ns1:SignedInfo>\r\n    \r\nroot: DEBUG: SignedInfo C14N: <ns1:SignedInfo xmlns:ns1=\"http://www.w3.org/2000/09/xmldsig#\">\r\n      <ns1:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"></ns1:CanonicalizationMethod>\r\n      <ns1:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"></ns1:SignatureMethod>\r\n      <ns1:Reference URI=\"#id11111\">\r\n        <ns1:Transforms>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"></ns1:Transform>\r\n          <ns1:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"></ns1:Transform>\r\n        </ns1:Transforms>\r\n        <ns1:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"></ns1:DigestMethod>\r\n        <ns1:DigestValue>LN4yILKOKwC22ueQUU1R3mfrs68=</ns1:DigestValue>\r\n      </ns1:Reference>\r\n    </ns1:SignedInfo>\r\nroot: DEBUG: SignedInfo digest: K905bgHxT8AKQeeOTycPNNeLKrA=\r\nroot: DEBUG: signing 35 bytes using <PyKCS11.Mechanism object at 0x7f4343ca5250>\r\nroot: DEBUG: SignatureValue: wMPLr9fofF4sdbMUl82pv3KIJdj42ahF0g5nmqNXLoigiRLweAQxRvT2LEYP0AUtd9LBUgyWL5Z3tQzMSZLo2mqtaDbcjgv3u1clfqkDPX3WiZg7VQ36G62n3NHIXBnv0ShPsMAHmC3ggppRzhfsZUskZoVefXC9Y2FUH+6aHqY=\r\nroot: DEBUG: SignatureValue: wMPLr9fofF4sdbMUl82pv3KIJdj42ahF0g5nmqNXLoigiRLweAQxRvT2LEYP0AUtd9LBUgyWL5Z3tQzMSZLo2mqtaDbcjgv3u1clfqkDPX3WiZg7VQ36G62n3NHIXBnv0ShPsMAHmC3ggppRzhfsZUskZoVefXC9Y2FUH+6aHqY=\r\n--------------------- >> end captured logging << ---------------------\r\n======================================================================\r\nFAIL: test_find_key (xmlsec.test.p11_test.TestPKCS11)\r\n----------------------------------------------------------------------\r\nTraceback (most recent call last):\r\n  File \"/home/travis/build/c00kiemon5ter/pyXMLSecurity/src/xmlsec/test/p11_test.py\", line 312, in test_find_key\r\n    raise ex\r\nAssertionError: \r\n>>  raise AssertionError()\r\n    \r\n-------------------- >> begin captured logging << --------------------\r\nroot: DEBUG: parsed pkcs11 uri: ParseResult(scheme='pkcs11', netloc='', path='/usr/lib/softhsm/libsofthsm.so/test', params='', query='pin=secret1', fragment='')\r\nroot: DEBUG: returning /usr/lib/softhsm/libsofthsm.so None test {'pin': 'secret1'}\r\nroot: DEBUG: already loaded: /usr/lib/softhsm/libsofthsm.so: <PyKCS11.PyKCS11Lib object at 0x7f434572bb90>\r\nroot: DEBUG: Found pkcs11 object: CKA_ALWAYS_AUTHENTICATE: (0L,)\r\nCKA_ALWAYS_SENSITIVE: True\r\nCKA_CLASS: CKO_PRIVATE_KEY\r\nCKA_DECRYPT: True\r\nCKA_DERIVE: False\r\nCKA_END_DATE: ()\r\nCKA_EXTRACTABLE: (0L,)\r\nCKA_ID: (161L, 178L)\r\nCKA_KEY_GEN_MECHANISM: 0\r\nCKA_KEY_TYPE: CKK_RSA\r\nCKA_LABEL: test\r\nCKA_LOCAL: True\r\nCKA_MODIFIABLE: True\r\nCKA_MODULUS: (230L, 188L, 251L, 226L, 86L, 135L, 221L, 239L, 215L, 57L, 176L, 79L, 10L, 98L, 197L, 136L, 98L, 232L, 66L, 178L, 18L, 85L, 2L, 119L, 22L, 139L, 193L, 20L, 145L, 126L, 67L, 111L, 86L, 81L, 23L, 41L, 107L, 24L, 190L, 44L, 13L, 21L, 67L, 14L, 87L, 4L, 141L, 123L, 212L, 174L, 113L, 144L, 79L, 193L, 20L, 253L, 253L, 185L, 45L, 243L, 75L, 198L, 100L, 1L, 44L, 3L, 187L, 24L, 179L, 43L, 119L, 244L, 67L, 64L, 224L, 43L, 17L, 205L, 56L, 139L, 11L, 184L, 244L, 54L, 157L, 149L, 10L, 95L, 12L, 226L, 215L, 165L, 140L, 140L, 0L, 109L, 43L, 207L, 28L, 58L, 131L, 55L, 41L, 159L, 192L, 234L, 196L, 166L, 91L, 73L, 223L, 77L, 253L, 132L, 47L, 89L, 50L, 221L, 113L, 89L, 107L, 207L, 96L, 144L, 239L, 28L, 38L, 47L)\r\nCKA_NEVER_EXTRACTABLE: True\r\nCKA_PRIVATE: True\r\nCKA_PUBLIC_EXPONENT: (1L, 0L, 1L)\r\nCKA_SENSITIVE: True\r\nCKA_SIGN: True\r\nCKA_SIGN_RECOVER: True\r\nCKA_START_DATE: ()\r\nCKA_SUBJECT: ()\r\nCKA_TOKEN: True\r\nCKA_UNWRAP: True\r\nCKA_WRAP_WITH_TRUSTED: (1L,)\r\n--------------------- >> end captured logging << ---------------------\r\n----------------------------------------------------------------------\r\nRan 33 tests in 0.787s\r\nFAILED (errors=2, failures=1)\r\nThe command \"coverage run --source=xmlsec setup.py nosetests -vv -d\" exited with 1.\r\n```\r\n</details>\r\n\r\n---\r\n\r\nThis part seems important\r\n\r\n```\r\nengine \"pkcs11\" set.\r\nformat not recognized!\r\nsupported formats: <id>, <slot>:<id>, id_<id>, slot_<slot>-id_<id>, label_<label>, slot_<slot>-label_<label>\r\nwhere <slot> is the slot number as normal integer,\r\nand <id> is the id number as hex string.\r\nand <label> is the textual key label string.\r\nPKCS11_get_private_key returned NULL\r\ncannot load Private Key from engine\r\n139744575288992:error:26096080:engine routines:ENGINE_load_private_key:failed loading private key:eng_pkey.c:126:\r\nunable to load Private Key\r\n```","created_at":"2018-10-09T09:48:25Z","updated_at":"2018-10-09T09:48:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/pulls/53/commits","review_comments_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/pulls/53/comments","review_comment_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/pulls/comments{/number}","comments_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/issues/53/comments","statuses_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/statuses/18fa84d8d8b0048e7ea9561170bd777037e88a95","head":{"label":"c00kiemon5ter:feature-fix-pykcs11-tests","ref":"feature-fix-pykcs11-tests","sha":"18fa84d8d8b0048e7ea9561170bd777037e88a95","user":{"login":"c00kiemon5ter","id":97634,"node_id":"MDQ6VXNlcjk3NjM0","avatar_url":"https://avatars0.githubusercontent.com/u/97634?v=4","gravatar_id":"","url":"https://api.github.com/users/c00kiemon5ter","html_url":"https://github.com/c00kiemon5ter","followers_url":"https://api.github.com/users/c00kiemon5ter/followers","following_url":"https://api.github.com/users/c00kiemon5ter/following{/other_user}","gists_url":"https://api.github.com/users/c00kiemon5ter/gists{/gist_id}","starred_url":"https://api.github.com/users/c00kiemon5ter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/c00kiemon5ter/subscriptions","organizations_url":"https://api.github.com/users/c00kiemon5ter/orgs","repos_url":"https://api.github.com/users/c00kiemon5ter/repos","events_url":"https://api.github.com/users/c00kiemon5ter/events{/privacy}","received_events_url":"https://api.github.com/users/c00kiemon5ter/received_events","type":"User","site_admin":false},"repo":{"id":147179861,"node_id":"MDEwOlJlcG9zaXRvcnkxNDcxNzk4NjE=","name":"pyXMLSecurity","full_name":"c00kiemon5ter/pyXMLSecurity","private":false,"owner":{"login":"c00kiemon5ter","id":97634,"node_id":"MDQ6VXNlcjk3NjM0","avatar_url":"https://avatars0.githubusercontent.com/u/97634?v=4","gravatar_id":"","url":"https://api.github.com/users/c00kiemon5ter","html_url":"https://github.com/c00kiemon5ter","followers_url":"https://api.github.com/users/c00kiemon5ter/followers","following_url":"https://api.github.com/users/c00kiemon5ter/following{/other_user}","gists_url":"https://api.github.com/users/c00kiemon5ter/gists{/gist_id}","starred_url":"https://api.github.com/users/c00kiemon5ter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/c00kiemon5ter/subscriptions","organizations_url":"https://api.github.com/users/c00kiemon5ter/orgs","repos_url":"https://api.github.com/users/c00kiemon5ter/repos","events_url":"https://api.github.com/users/c00kiemon5ter/events{/privacy}","received_events_url":"https://api.github.com/users/c00kiemon5ter/received_events","type":"User","site_admin":false},"html_url":"https://github.com/c00kiemon5ter/pyXMLSecurity","description":"python XML security (xml-dsig)","fork":true,"url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity","forks_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/forks","keys_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/keys{/key_id}","collaborators_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/teams","hooks_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/hooks","issue_events_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/issues/events{/number}","events_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/events","assignees_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/assignees{/user}","branches_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/branches{/branch}","tags_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/tags","blobs_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/git/refs{/sha}","trees_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/git/trees{/sha}","statuses_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/statuses/{sha}","languages_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/languages","stargazers_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/stargazers","contributors_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/contributors","subscribers_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/subscribers","subscription_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/subscription","commits_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/commits{/sha}","git_commits_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/git/commits{/sha}","comments_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/comments{/number}","issue_comment_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/issues/comments{/number}","contents_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/contents/{+path}","compare_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/compare/{base}...{head}","merges_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/merges","archive_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/downloads","issues_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/issues{/number}","pulls_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/pulls{/number}","milestones_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/milestones{/number}","notifications_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/labels{/name}","releases_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/releases{/id}","deployments_url":"https://api.github.com/repos/c00kiemon5ter/pyXMLSecurity/deployments","created_at":"2018-09-03T09:10:06Z","updated_at":"2018-09-03T09:10:09Z","pushed_at":"2018-10-09T09:32:29Z","git_url":"git://github.com/c00kiemon5ter/pyXMLSecurity.git","ssh_url":"git@github.com:c00kiemon5ter/pyXMLSecurity.git","clone_url":"https://github.com/c00kiemon5ter/pyXMLSecurity.git","svn_url":"https://github.com/c00kiemon5ter/pyXMLSecurity","homepage":null,"size":503,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"NOASSERTION","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"IdentityPython:master","ref":"master","sha":"c553d832b8b62c7c72d336657a53527405c22e4c","user":{"login":"IdentityPython","id":29101624,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI5MTAxNjI0","avatar_url":"https://avatars3.githubusercontent.com/u/29101624?v=4","gravatar_id":"","url":"https://api.github.com/users/IdentityPython","html_url":"https://github.com/IdentityPython","followers_url":"https://api.github.com/users/IdentityPython/followers","following_url":"https://api.github.com/users/IdentityPython/following{/other_user}","gists_url":"https://api.github.com/users/IdentityPython/gists{/gist_id}","starred_url":"https://api.github.com/users/IdentityPython/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IdentityPython/subscriptions","organizations_url":"https://api.github.com/users/IdentityPython/orgs","repos_url":"https://api.github.com/users/IdentityPython/repos","events_url":"https://api.github.com/users/IdentityPython/events{/privacy}","received_events_url":"https://api.github.com/users/IdentityPython/received_events","type":"Organization","site_admin":false},"repo":{"id":5567931,"node_id":"MDEwOlJlcG9zaXRvcnk1NTY3OTMx","name":"pyXMLSecurity","full_name":"IdentityPython/pyXMLSecurity","private":false,"owner":{"login":"IdentityPython","id":29101624,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI5MTAxNjI0","avatar_url":"https://avatars3.githubusercontent.com/u/29101624?v=4","gravatar_id":"","url":"https://api.github.com/users/IdentityPython","html_url":"https://github.com/IdentityPython","followers_url":"https://api.github.com/users/IdentityPython/followers","following_url":"https://api.github.com/users/IdentityPython/following{/other_user}","gists_url":"https://api.github.com/users/IdentityPython/gists{/gist_id}","starred_url":"https://api.github.com/users/IdentityPython/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IdentityPython/subscriptions","organizations_url":"https://api.github.com/users/IdentityPython/orgs","repos_url":"https://api.github.com/users/IdentityPython/repos","events_url":"https://api.github.com/users/IdentityPython/events{/privacy}","received_events_url":"https://api.github.com/users/IdentityPython/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/IdentityPython/pyXMLSecurity","description":"python XML security (xml-dsig)","fork":false,"url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity","forks_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/forks","keys_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/keys{/key_id}","collaborators_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/teams","hooks_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/hooks","issue_events_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/issues/events{/number}","events_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/events","assignees_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/assignees{/user}","branches_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/branches{/branch}","tags_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/tags","blobs_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/git/refs{/sha}","trees_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/git/trees{/sha}","statuses_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/statuses/{sha}","languages_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/languages","stargazers_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/stargazers","contributors_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/contributors","subscribers_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/subscribers","subscription_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/subscription","commits_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/commits{/sha}","git_commits_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/git/commits{/sha}","comments_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/comments{/number}","issue_comment_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/issues/comments{/number}","contents_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/contents/{+path}","compare_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/compare/{base}...{head}","merges_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/merges","archive_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/downloads","issues_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/issues{/number}","pulls_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/pulls{/number}","milestones_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/milestones{/number}","notifications_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/labels{/name}","releases_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/releases{/id}","deployments_url":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/deployments","created_at":"2012-08-27T07:28:54Z","updated_at":"2018-10-08T22:22:22Z","pushed_at":"2018-10-08T22:22:21Z","git_url":"git://github.com/IdentityPython/pyXMLSecurity.git","ssh_url":"git@github.com:IdentityPython/pyXMLSecurity.git","clone_url":"https://github.com/IdentityPython/pyXMLSecurity.git","svn_url":"https://github.com/IdentityPython/pyXMLSecurity","homepage":null,"size":505,"stargazers_count":10,"watchers_count":10,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":14,"mirror_url":null,"archived":false,"open_issues_count":13,"license":{"key":"other","name":"NOASSERTION","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":14,"open_issues":13,"watchers":10,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/pulls/53"},"html":{"href":"https://github.com/IdentityPython/pyXMLSecurity/pull/53"},"issue":{"href":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/issues/53"},"comments":{"href":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/issues/53/comments"},"review_comments":{"href":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/pulls/53/comments"},"review_comment":{"href":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/pulls/53/commits"},"statuses":{"href":"https://api.github.com/repos/IdentityPython/pyXMLSecurity/statuses/18fa84d8d8b0048e7ea9561170bd777037e88a95"}},"author_association":"MEMBER","merged":false,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"maintainer_can_modify":true,"commits":4,"additions":28,"deletions":37,"changed_files":4}}
{"actor":{"display_login":"c00kiemon5ter"}}