From 55f1a8f39711397cc175d2e07201b864978a5dad Mon Sep 17 00:00:00 2001 From: Aidan Lee Date: Sat, 17 Aug 2024 14:31:59 +0100 Subject: [PATCH] Add more tests --- src/hx/libs/ssl/windows/Cert.cpp | 59 +++++------ src/hx/libs/ssl/windows/Digest.cpp | 4 +- test/std/Test.hx | 12 +-- test/std/resources.hxml | 18 +++- test/std/resources/pkcs1/private.key | 9 ++ .../pkcs1/private_3des_encrypted.key | 30 ++++++ .../resources/pkcs1/private_aes_encrypted.key | 12 +++ test/std/resources/pkcs1/public.key | 4 + test/std/resources/pkcs8/private.key | 28 ----- test/std/resources/pkcs8/private_aes.key | 30 ------ test/std/resources/pkcs8/private_ecdsa.pem | 5 + .../pkcs8/private_ecdsa_3des_encrypted.pem | 7 ++ .../pkcs8/private_ecdsa_aes_encrypted.pem | 8 ++ test/std/resources/pkcs8/private_rsa.pem | 28 +++++ .../pkcs8/private_rsa_3des_encrypted.pem | 29 +++++ .../pkcs8/private_rsa_aes_encrypted.pem | 30 ++++++ test/std/resources/pkcs8/public.key | 9 -- test/std/resources/pkcs8/public_ecdsa.pem | 4 + test/std/resources/pkcs8/public_rsa.pem | 9 ++ test/std/ssl/CertificateTests.hx | 28 ++--- test/std/ssl/DigestTests.hx | 100 ++++++++++++++---- test/std/ssl/TestPKCS1.hx | 25 +++++ test/std/ssl/TestPKCS8.hx | 32 ++++-- 23 files changed, 370 insertions(+), 150 deletions(-) create mode 100644 test/std/resources/pkcs1/private.key create mode 100644 test/std/resources/pkcs1/private_3des_encrypted.key create mode 100644 test/std/resources/pkcs1/private_aes_encrypted.key create mode 100644 test/std/resources/pkcs1/public.key delete mode 100644 test/std/resources/pkcs8/private.key delete mode 100644 test/std/resources/pkcs8/private_aes.key create mode 100644 test/std/resources/pkcs8/private_ecdsa.pem create mode 100644 test/std/resources/pkcs8/private_ecdsa_3des_encrypted.pem create mode 100644 test/std/resources/pkcs8/private_ecdsa_aes_encrypted.pem create mode 100644 test/std/resources/pkcs8/private_rsa.pem create mode 100644 test/std/resources/pkcs8/private_rsa_3des_encrypted.pem create mode 100644 test/std/resources/pkcs8/private_rsa_aes_encrypted.pem delete mode 100644 test/std/resources/pkcs8/public.key create mode 100644 test/std/resources/pkcs8/public_ecdsa.pem create mode 100644 test/std/resources/pkcs8/public_rsa.pem create mode 100644 test/std/ssl/TestPKCS1.hx diff --git a/src/hx/libs/ssl/windows/Cert.cpp b/src/hx/libs/ssl/windows/Cert.cpp index ee9710a13..795782c09 100644 --- a/src/hx/libs/ssl/windows/Cert.cpp +++ b/src/hx/libs/ssl/windows/Cert.cpp @@ -6,6 +6,31 @@ namespace { + Array FileTimeToDate(const FILETIME* time) + { + auto localTime = SYSTEMTIME(); + + hx::EnterGCFreeZone(); + + if (!FileTimeToSystemTime(time, &localTime)) + { + hx::ExitGCFreeZone(); + hx::Throw(HX_CSTRING("Failed to get system time : ") + hx::ssl::windows::utils::Win32ErrorToString(GetLastError())); + } + + hx::ExitGCFreeZone(); + + auto date = Array(6, 6); + date[0] = localTime.wYear; + date[1] = localTime.wMonth; + date[2] = localTime.wDay; + date[3] = localTime.wHour; + date[4] = localTime.wMinute; + date[5] = localTime.wSecond; + + return date; + } + void AddAltNamesFrom(hx::ssl::windows::Cert cert, const char* source, Array result) { auto ext = CertFindExtension(source, cert->ctx->pCertInfo->cExtension, cert->ctx->pCertInfo->rgExtension); @@ -242,42 +267,12 @@ Array _hx_ssl_cert_get_altnames(Dynamic hcert) Array _hx_ssl_cert_get_notbefore(Dynamic hcert) { - auto cert = hcert.Cast(); - auto sysTime = SYSTEMTIME(); - - if (!FileTimeToSystemTime(&cert->ctx->pCertInfo->NotBefore, &sysTime)) - { - hx::Throw(HX_CSTRING("Failed to get system time : ") + hx::ssl::windows::utils::Win32ErrorToString(GetLastError())); - } - - auto result = Array(6, 6); - result[0] = sysTime.wYear; - result[1] = sysTime.wMonth; - result[2] = sysTime.wDay - 1; - result[3] = sysTime.wHour; - result[4] = sysTime.wMinute; - result[5] = sysTime.wSecond; - return result; + return FileTimeToDate(&hcert.Cast()->ctx->pCertInfo->NotBefore); } Array _hx_ssl_cert_get_notafter(Dynamic hcert) { - auto cert = hcert.Cast(); - auto sysTime = SYSTEMTIME(); - - if (!FileTimeToSystemTime(&cert->ctx->pCertInfo->NotAfter, &sysTime)) - { - hx::Throw(HX_CSTRING("Failed to get system time : ") + hx::ssl::windows::utils::Win32ErrorToString(GetLastError())); - } - - auto result = Array(6, 6); - result[0] = sysTime.wYear; - result[1] = sysTime.wMonth; - result[2] = sysTime.wDay; - result[3] = sysTime.wHour; - result[4] = sysTime.wMinute; - result[5] = sysTime.wSecond; - return result; + return FileTimeToDate(&hcert.Cast()->ctx->pCertInfo->NotAfter); } Dynamic _hx_ssl_cert_get_next(Dynamic hcert) diff --git a/src/hx/libs/ssl/windows/Digest.cpp b/src/hx/libs/ssl/windows/Digest.cpp index 9f7e8066a..11621464a 100644 --- a/src/hx/libs/ssl/windows/Digest.cpp +++ b/src/hx/libs/ssl/windows/Digest.cpp @@ -37,7 +37,7 @@ Array _hx_ssl_dgst_sign(Array buffer, Dynamic hpke if (ERROR_SUCCESS != (result = NCryptSignHash(key->ctx, &padding, reinterpret_cast(hashed.data()), hashed.size(), nullptr, 0, &signatureLength, BCRYPT_PAD_PKCS1))) { hx::ExitGCFreeZone(); - hx::Throw(HX_CSTRING("Failed to signature length : ") + hx::ssl::windows::utils::NTStatusErrorToString(result)); + hx::Throw(HX_CSTRING("Failed to calculate signature length : ") + hx::ssl::windows::utils::HResultErrorToString(result)); } hx::ExitGCFreeZone(); @@ -47,7 +47,7 @@ Array _hx_ssl_dgst_sign(Array buffer, Dynamic hpke if (ERROR_SUCCESS != (result = NCryptSignHash(key->ctx, &padding, reinterpret_cast(hashed.data()), hashed.size(), reinterpret_cast(signature->GetBase()), signature->length, &signatureLength, BCRYPT_PAD_PKCS1))) { hx::ExitGCFreeZone(); - hx::Throw(HX_CSTRING("Failed to sign hash : ") + hx::ssl::windows::utils::NTStatusErrorToString(result)); + hx::Throw(HX_CSTRING("Failed to sign hash : ") + hx::ssl::windows::utils::HResultErrorToString(result)); } hx::ExitGCFreeZone(); diff --git a/test/std/Test.hx b/test/std/Test.hx index 06d8dd045..a6c22de15 100644 --- a/test/std/Test.hx +++ b/test/std/Test.hx @@ -766,12 +766,12 @@ class Test extends utest.Test new Test(), new ssl.CertificateLoadingTests(), new ssl.CertificateTests(), - new ssl.DigestTests.MD5Tests(), - new ssl.DigestTests.SHA1Tests(), - new ssl.DigestTests.SHA256Tests(), - new ssl.DigestTests.SHA512Tests(), - new ssl.DigestTests.RIPEMD160Tests(), - new ssl.TestPKCS8() + new ssl.TestPKCS8(), + new ssl.TestPKCS1(), + new ssl.DigestTests.RsaMD5Tests(), + new ssl.DigestTests.RsaSHA1Tests(), + new ssl.DigestTests.RsaSHA256Tests(), + new ssl.DigestTests.RsaSHA512Tests(), ]); } } diff --git a/test/std/resources.hxml b/test/std/resources.hxml index f5f63b7e5..afb703f8c 100644 --- a/test/std/resources.hxml +++ b/test/std/resources.hxml @@ -1,6 +1,18 @@ --r resources/pkcs8/public.key@pkcs8_public_key --r resources/pkcs8/private.key@pkcs8_private_key --r resources/pkcs8/private_aes.key@pkcs8_aes_private_key +-r resources/pkcs8/public_rsa.pem@pkcs8_rsa_public_key +-r resources/pkcs8/public_ecdsa.pem@pkcs8_ecdsa_public_key + +-r resources/pkcs8/private_rsa.pem@pkcs8_rsa_private_key +-r resources/pkcs8/private_ecdsa.pem@pkcs8_ecdsa_private_key + +-r resources/pkcs8/private_rsa_aes_encrypted.pem@pkcs8_rsa_aes_encrypted_private_key +-r resources/pkcs8/private_rsa_3des_encrypted.pem@pkcs8_rsa_3des_encrypted_private_key +-r resources/pkcs8/private_ecdsa_aes_encrypted.pem@pkcs8_ecdsa_aes_encrypted_private_key +-r resources/pkcs8/private_ecdsa_3des_encrypted.pem@pkcs8_ecdsa_3des_encrypted_private_key + +-r resources/pkcs1/public.key@pkcs1_public_key +-r resources/pkcs1/private.key@pkcs1_private_key +-r resources/pkcs1/private_aes_encrypted.key@pkcs1_private_aes_encrypted_key +-r resources/pkcs1/private_3des_encrypted.key@pkcs1_private_3des_encrypted_key -r resources/certs/rootkey.pem@rootkey -r resources/certs/rootcert.pem@rootcert diff --git a/test/std/resources/pkcs1/private.key b/test/std/resources/pkcs1/private.key new file mode 100644 index 000000000..b47ec8296 --- /dev/null +++ b/test/std/resources/pkcs1/private.key @@ -0,0 +1,9 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6Ppy1tPf9Cnzj4p4WGeKLs1Pt8Qu +KUpRKfFLfRYC9AIKjbJTWit+CqvjWYzvQwECAwEAAQJAIJLixBy2qpFoS4DSmoEm +o3qGy0t6z09AIJtH+5OeRV1be+N4cDYJKffGzDa88vQENZiRm0GRq6a+HPGQMd2k +TQIhAKMSvzIBnni7ot/OSie2TmJLY4SwTQAevXysE2RbFDYdAiEBCUEaRQnMnbp7 +9mxDXDf6AU0cN/RPBjb9qSHDcWZHGzUCIG2Es59z8ugGrDY+pxLQnwfotadxd+Uy +v/Ow5T0q5gIJAiEAyS4RaI9YG8EWx/2w0T67ZUVAw8eOMB6BIUg0Xcu+3okCIBOs +/5OiPgoTdSy7bcF9IGpSE8ZgGKzgYQVZeN97YE00 +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/test/std/resources/pkcs1/private_3des_encrypted.key b/test/std/resources/pkcs1/private_3des_encrypted.key new file mode 100644 index 000000000..d6fbd40c1 --- /dev/null +++ b/test/std/resources/pkcs1/private_3des_encrypted.key @@ -0,0 +1,30 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: DES-EDE3-CBC,AE34A89AA63FDD47 + +/kUM/ePW36lW0pg7X6bujFLISlf6r2u28VJ6sZ2TzS4o6x6o8imzX7q0lmTMYCJa +fpjWp9DJPhY6p1a6uEJoyuIJIWKeb1Hc40cpyrC216kHSkdbizlkcqBVGvSZfL1f +KTuLgM3JvRi/i0YYxI6FlLZcAHPQ5mIwr7Jf45azcotNHKlEf0y5RJEzoOGfAAgK +wsVTU7tvJ7E0NJy+DxTuNKzja95jDiCA/DtCqOHVBRkw1sFSOQEISza5HnPce9PG +/bjwI/I9c/UV0hSRo2clSOslljnH3HsroZw94Ek9OJbHWSTcY7/YHyXVI5bbcU9d +fOATh3RLuaRQ6NxgHGLVbcJL6cM+ZqSnLDEAft3UFfxd1KOFDKj6XCJtnJd/UZYv +rq4hEY6RJI8SzbUs3LVnVrNaZjLop+tCK45a2kwWuZztGGMGPZSn3VP0VAts2Iyo +221a9NN+gzQ2CekU/cz1hi8SiRN6g7zwZwwcFZwFUzTdt4ARZTDbf0GSBaqp9QFK +t8LpPR0SsKOFcrpyFDTJ0Ik0YS9K0hruvYWa1g2bcYVRK5hI1qVPgBP46+CwocPA +bUOdenpC3wpAeqrPsRY9jCYc1yeClZaceLe7aRUJkOggyrzRzDn6kbO20IuSRXBS +CSgYNOnoQD2tSqEXq5ui2Ti/JL7qybHYNG4GMhz3waKyyOl1JdmyvqxI91kp2Iwh +SwG1KfWejIvL1UUvuyZI4qrzUnub498vEmqe2l3U7yS8ggu6D3k6lT42LQ6Rzgey +SqOvWugED/b91dP5AXPq0VJAT1A0Rn75YYYpBuq8SFZRfXmFr5K3qgeCFA3hB+TD +qVHxjirxIGM6umV8tJXWeRLWgIPRoBjTi6zYvckhy5hDCw17GCgwe9jHb3xDfpyx +uoTYcPADk4kwq0ylsp4HIsfZ5AjPMDEXi+2A0a9wREJpK8jAF56SaSHRIAfQNeGn +iuihj9fqM6pDL4jx0lIAMH4c8vypraGFTWO4amMtd/67tVMhO4V1el5w61U5qXXl +RYFVQ6TExpX3uKXgomIcWvs214c1ZOdmpC/OZciqv1ga8+zaswQ4zsIuAQD8BYRe +TBEwNUhRg5PqE0Z6I+beWtkD1giLeaKweJ0Dymh9D2mhX7e1WJIuI9j0m8+kT6/k +jURamNaQYLDnIOpUDPm4TqQ4kH6PYX/I7XHx78cfL+Ki58tyCR0Kgk8TJH4o05pZ +hujvigWTp7WM4bL/0GGVTTsGGT36a300rronkOJGh1gWX9HtSAk3QdnxiNJqrhP6 +ZP3mWHaa/qZUr2tfvk5pg7vQ9u1Qny9Xo7JkrNWMUCfvgimYE37BgO8uGsKwjx1a +IMsFlGStF+KKUeCrt2nI+JUFPvQtu//kmnHuqP4dNvr3GTHigS7t2MFYHzKpyIsC +ObNZXrv+q5eMpineWTTetTwfMXX/4oVfAED415i2frAbDeGEH7MFEZcJmkcQY88M +wuvjR5hB9UTMYQPZvRVysrTzCBskKVafMarAeGat42gHVDBKTc5FJ3D4FeQnHN9T +LidMKXdXhV2XNArLSksIaqO3HWiCVwHCsXhwNuYaHuwi2/S2pS6uuzur74fQLYjw +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/test/std/resources/pkcs1/private_aes_encrypted.key b/test/std/resources/pkcs1/private_aes_encrypted.key new file mode 100644 index 000000000..778f3fdd9 --- /dev/null +++ b/test/std/resources/pkcs1/private_aes_encrypted.key @@ -0,0 +1,12 @@ +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: AES-128-CBC,5C724CE55C702828F3F74B555F594366 + +odKAmV6AbsoWsyL3thUoYVDEJAsQl8RrH+JuQ9HWUnDLunDdLEM6oNl15XP1xLOH +z3bEq1rvATiQmAByKNOiVujd1gsq7JxfQYDdHRzDhZZrUstnetvGTDBtMHmhzbBX +Oih+1q3eA2RMQ5izXOEkyMKrWWlcKMWVJzMSYjFeFJB8D8wJNmq1ArNCO3uXfwkZ +uMnMhYhx/OYvCs4sMWKe5/etyR2gz0Fvp6VDUa0jNRvoad+8/pHK7KDxB8nW5Kgm +pSjfkl1Ut3zChtwEuAFnSDuypbrODBdphZHD40WmX0f69VKKs44vsKCHr8nzJ8R5 +dw+2Ggyq5W5hl3PDTMTqn8Pc+cwmPdVe4bkNqxbCHe2omZXpNIgC31wrMBvkyUYv +pY8rMoBXqgm9hC5JsXzn6Z6X1kpGFhDjkNSdzx4jYzw= +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/test/std/resources/pkcs1/public.key b/test/std/resources/pkcs1/public.key new file mode 100644 index 000000000..9b786a9b6 --- /dev/null +++ b/test/std/resources/pkcs1/public.key @@ -0,0 +1,4 @@ +-----BEGIN RSA PUBLIC KEY----- +MEgCQQCo9+BpMRYQ/dL3DS2CyJxRF+j6ctbT3/Qp84+KeFhnii7NT7fELilKUSnx +S30WAvQCCo2yU1orfgqr41mM70MBAgMBAAE= +-----END RSA PUBLIC KEY----- \ No newline at end of file diff --git a/test/std/resources/pkcs8/private.key b/test/std/resources/pkcs8/private.key deleted file mode 100644 index f96f9c6b2..000000000 --- a/test/std/resources/pkcs8/private.key +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDqCqmsRAoBvJyh -IwjGVBeqbJosz6O02LnnJ+1DXeoan2HazWHmoAzBGkbHZlkmXQ9oZXeOkmUoDGpr -LygR4pc35z7+eTMsMmY0bZnyJgMqa45iLa0JS3hMzId9Qi8Ssm+HMyUkxRdSxTRo -djvL7AqglUi6iv/0CBFj7rr5eMA7+ECEhDKe2pIKTKNLAYdVFqihAKJsgRePBI/Z -rlieqc7W/rFtVyuGgw3yswgDaB3aqmWolja7of/0f8x3IuJtOnE1bKAF5ROmci4Q -sLdtfi3bUxyg5sTyy6XhYV7+QKnqbK/XWs1ND/JiiusPiNc+dp1NJoZtIuM3lLsd -UK4PmH7JAgMBAAECggEAGn79iYqkZWDwjI+WUTm4+irUY4lYW8ODfGd5RXyu4be0 -kNxanoz1FLGAXNe59Q1pDqUaHXJ2cEvDioHqs+emvgX4jD+1auYDyyCzYoYqKpXF -p1jLc7dvFaa8GhKxmJjJ5pEEPf7wLocz8TWdfG8rHtX3x2KwKnT1Xw5qbY7dmIxB -eOy4+0sjZG65VKWf72DxL3hxD8MwUohRBH85E61PiChHKydHzZtAioOc1SEVdM2P -YQVDCn6iRD8Eu8QiDY8rT4OFTjh4gMxyVKmYIFSJNal0AArHmnOq0PGzhdVHi+6m -nHF6Gq+dnTg4c3hYGsk0GbWqCSE3iB9y1jv/KXE15wKBgQD2i76dqx9jzC4wNchw -cWPbOCEhwqaYEEzFIeqFcqg4dLDLaFXuKCk8lqaFKoCdnKciQ02Q76B7JN/DRQvm -YhEtWbxZ3eTZLXCK8s/VreYTbvg2oHw0CGXs4I0FYM8ynn7PxsSfZcZXfWCeNUCP -2acKTkfuIwO/pHUHT3T8gmo8PwKBgQDzBCsligZo09OM3JHLp3EoLLG7fDa5Mdsw -31UVMriWdEC09StexaK8ecS7RQqsq2xfV0DQLQHJKr1QIBnJHAsG74RJwOlhFxqd -BeamtxnEQsFZ/GMOd2v50IYUYdhO7++DPyV0RKEuqa/Fkw57jxE0QGICys/GYsSC -svfi+ugi9wKBgE+6/ZfroSka/Mzmd721Tb+1NTG/yzReARW3VCp32+L2Cb6eLTvp -jPxlE9D438MYyAwSi+EVPWbVk++IQsLsb/WkkX7WfY2mXkDxKTlHFaKvPmIcIE6L -cLrcG37jwd3y17vF4gxSU4Qzra08N3bNwnFYw3ZFqI6vVpFYptKKMmTtAoGAfOgW -mTvhYX4HDS7NzURqGAEo9Tm6EuQ6SltwKu4gDE0CeUBOo26n34IjCTJKc0fE8xgw -2w9XDKPoHEfzmPfN/yma8CG0ks/CQRUoYWZZWxQIt4zPCT9+gy+XyuAjwyb2D5qk -UKd5xTc4fi/A0OdPK3EwL0k5FDnt0VPVr5fROy8CgYBcuDWAc72sris8THUcXoAk -nAtUM4NuN2RG6M5UUX03QPhwXUQCeDRl3EByAVh6bqqreQRba7fif+OLN/YtfPUV -iGAD1R/FqdMIn0oPeI3Iu+TY613DnJ2P5nnNvOCufUyR5baIST9ir13QtUPOoI2q -yoSuzu8QbYx9wDiTa/5gqw== ------END PRIVATE KEY----- \ No newline at end of file diff --git a/test/std/resources/pkcs8/private_aes.key b/test/std/resources/pkcs8/private_aes.key deleted file mode 100644 index 0b449b66f..000000000 --- a/test/std/resources/pkcs8/private_aes.key +++ /dev/null @@ -1,30 +0,0 @@ ------BEGIN ENCRYPTED PRIVATE KEY----- -MIIFHzBJBgkqhkiG9w0BBQ0wPDAbBgkqhkiG9w0BBQwwDgQIE5zl+LjRt2wCAggA -MB0GCWCGSAFlAwQBAgQQBObFJI+NtSI8jNzTwSCltgSCBNBUJvrbCtbufEAhHduN -59BFVqEoyTW59M/w7AmWhMRCYlRqG/drW+x4KDmNFzJ7wNMgBEJhhzR1KleoDUMC -iWH+NMypl/qI983mboa5vksEU+8Q0A+eJpVZcTRvN31I3Pg6L/mA6mQOOp/sE9+N -loPcY3QvbFZ58F7ep/X1gpwcAIGGOHbYhgLUh+y7P0BTf0uYfbimiaBjlRBbfxIu -AtL+vLW1jQBpZVOklqI7kY4J58DoTiLnkQxZeFyWfBW/JSS5/oK/tFE6jDH+CuQA -2fL+xyTCI64P/204uznDDGEPUNFa9IvPek+ddo3rfsQzQNlDPBDEU2lTErCLBrbY -PKvHu4x7BNm2Ahe5ALhXP/XGDnxlzJMpkHnye952S0ckhA9E0ycTbxOcSay+NubC -4MCjk+JFEbjlKndTl6gUrG0DvUqPd2oJk2XC8qRN2vkzeUuhupXmf56u00xrO4Nf -AF7HHTIIP4RdyQ/s1ur4W5X+TrPXmsK4IEMTtNIpRTS9OhJ5Wkw/BvlrkKep4dxe -pNV7UIchs5iIc5KW5pCW2EGjWv1cmkcchhztGkWpPXZk+UH04X1ZeAdnevnXnCqz -JDRQuhpMKGsJdbY4W13+yALz5NvCjG16VYImCIQtKQr6dkXt58wJFMV+eDDsH+Qx -BV/RmMf/3gEVbu2YZOu5zFFj9jrpOTY7kfkiOjUwBRlWwwVEiDErMZ7BHwsEDKZt -sHP9xp7auEXML7hagMR6Cd4MKsbIxX3HbLc737FgWmIgLjnvOxQuvzXnEKWNtD/F -27VFfnZZVnVUbB7kjPj/N/zVTgWQ5h/SBYK9JdlZe6cff1B+ETfNjM9lJg8Ujpwt -MkUjdhuQl1gW5dNw64yAd5318U6tDeF41LZb4n01Pv6t/u0dZSgkmY9E9cYmWu6g -IPUVVrNkfglvgh4QVtUgOGlrEDKPqreiosGGykGyjCpkVV2yyg2j/MAu6TYbW8+H -PFxSphA5p0LQe/j8hRwGjYD0w6EMko8ZrpvDVV2YnMmyXPkE6rx4JAXY8WWzfe4K -8//m+NNX905TR64GFAJimDECrQDSFYrsdOuY6of0KgXrOpgM/DJR9j9ZLjB1dya5 -NOEIXv17S2hrzAwnkQLe8G+hXcaeowzx+BPWDZieO/x5NBQmADW+htWEa8BBxkCV -nsEnIYf/my9cpgfd0yK7Sg/Ecq39iabe0IfOqrxrvyXGjXRgjX56Et1gIIy7o5mg -HnaJpjsYYv2evfzPLDniXX+weH1fG4+epQxftLxELAEmC6Q+A//VQ+t7VX2+tj9X -LC433E8P7c2j97SIsatfPvEnKGjFm9Z+npwZ5wqKCDWYlbrOEcICY2A6h0yXxlEJ -h6paGGVdzdwAOWA3PzlbG1O5kQS9+u70kcsdVB9YU33mupKw9WXO3TcDbYBek87o -oy34R30pHf3p8oqscMAlJAE0d9M7PJG95ofuumJprZrl7sBjkbfv+A5tGkeFKfGk -+wpch3IlMvacV7TR/z2AP4Dsv2Ha1NxXawT2fJq6ma4Fl9j3zUXXDnbAK7xpfi0a -286pQgXPnV7QVVllkWB41ghDuO7X5WaWMHNlbte4z+iroe3gHD3EdjIYE8gVJWAn -FFVDfE4sV7h8DLINp9MMpGdMsQ== ------END ENCRYPTED PRIVATE KEY----- diff --git a/test/std/resources/pkcs8/private_ecdsa.pem b/test/std/resources/pkcs8/private_ecdsa.pem new file mode 100644 index 000000000..3b197e4cc --- /dev/null +++ b/test/std/resources/pkcs8/private_ecdsa.pem @@ -0,0 +1,5 @@ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgzKDTY2ZHpA4xhH76 +MOUg7gF/hzEuhbTp69t1yC8FfPehRANCAAT19dp5Q/L3Fyckmgle8G4CBkaQIJE6 +HHLY2pIMK2LrCLb1MnIlhzCvgGk0KdDZnDSYjxpBhCAZbb7ls12/qt5P +-----END PRIVATE KEY----- \ No newline at end of file diff --git a/test/std/resources/pkcs8/private_ecdsa_3des_encrypted.pem b/test/std/resources/pkcs8/private_ecdsa_3des_encrypted.pem new file mode 100644 index 000000000..41de121d5 --- /dev/null +++ b/test/std/resources/pkcs8/private_ecdsa_3des_encrypted.pem @@ -0,0 +1,7 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIHJMBwGCiqGSIb3DQEMAQMwDgQIKN/vqeb6sFcCAgMgBIGoA5cLV5cPS33P9FzR +AL163+rtyqdSopgO12Q4EmYYKYalWi4ocpYR6CESsChadHtDYIIDp3fhsIORpa5B +NYID+8TmsvVFdtT7WaJwGkS70i5z+IdGh2+aoRQFYvEGfGTdvSKtfObQOssL6AlO +pj/RGIQIp8AOiZvPPwMhhy0E31aPVTNjwxtvrZTEdezesA5MIBtSMh9YFyzgWA6B +C8PHmtZkX7d0NhHL +-----END ENCRYPTED PRIVATE KEY----- \ No newline at end of file diff --git a/test/std/resources/pkcs8/private_ecdsa_aes_encrypted.pem b/test/std/resources/pkcs8/private_ecdsa_aes_encrypted.pem new file mode 100644 index 000000000..41adec5e4 --- /dev/null +++ b/test/std/resources/pkcs8/private_ecdsa_aes_encrypted.pem @@ -0,0 +1,8 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIBFDBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQWMU+2/NOqil+nloT +VW20DQICAyAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEObxagy4cbg2pJES +lZIFQe0EgbBJIrDontUP22RlUMdYCmg0ZKd7xIQVe/x0iM+gv/fwNcQYD54qy0tn +rcnDeYwX7tZpZxfK01K5Z60dYwrwzkT4gW7DL/8HcTYN/H1HcFZJNhPtpD9aBa0R +f2yG1qGTh4yyHYyLYPehlcZa6zs/3xJysXmj+BR/D/bPikyXKD9ehnkG0gHKWZ/G +/8up6zmHsJIfbXBIHKv+lBhyi4EPyr2rP07amksUFwVQTsf6gBHlTQ== +-----END ENCRYPTED PRIVATE KEY----- \ No newline at end of file diff --git a/test/std/resources/pkcs8/private_rsa.pem b/test/std/resources/pkcs8/private_rsa.pem new file mode 100644 index 000000000..e3c380dd0 --- /dev/null +++ b/test/std/resources/pkcs8/private_rsa.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQChUya73q5xqpBa +JocOtnY5UC7ANDJ3CHw4wA+Qm2sMD4yQH0ARp2CNCHGL9txY4TFz3t5qeuCRp9Uk +7RB0P5BKrcqVfeH1WSupnHGVelpZ/wRNNIEsbTrdC/G9kM8nr6Ga00KKaSr5qHEI +wLh0vFVDqSrwQKKin+aHUQwVMHoQxokPmjDb5DdSzaBc+2/enp13fWl26bPXYDZe +ebosG/UD0jooVQ35BTGEa16+zKFW9ewF9zpUpUpqkCd177l8V04URifi5SVU39ss +7/83IGaGOsG/Spz6M9Hs2+Q6L3IHoCozqLy5WTs9M3d7JCetg8319seGyoTjqjia +vdire4tlAgMBAAECggEAPq1FoTwU3kh8KOpLEqZFLGNApqAg8yoyyQGlinM3lcn8 +vInHpJQ46NJc+xn/5fAn/HKcSxZOZYilQOFxwRhpAPqgeJAd1+q7EfycDI0qyUhQ +7YX2ocIWWocndpTqRurviG2HrqrJbZHJyLLHd2MsZUs2SX1zMmeZcv1ECn95DUbX +E7Iaoet8iDVmmGo9nkBl1xb4qVFKJ/VLRc7RFaKRD562u2NEXssAsApEsWsBtHU2 +8d1YKmLm4+xIFEkCnaZsdJ2Y4AiFKNPuTmQ49ZqxPW+gHpIn6eM0oh3eQttGoB6I +05G5aIuHsoz13+BdYdPy0lEs3BMwmuWI06fel07RyQKBgQDXBSWGWm8YMJ72RQ6k +RnOPgWZDAAZbAr9uFv45vWuCasC8wuuC3vVhIceWHK4xDeKwQ1OAc6K0QK54MUkd +Ipe/FHgzwFOGltPBHIqpzWWhbyX6a1bfHQ6couO+FZKRB4DM37tgQBNun9uaCtFe +Cx7b03UTBtEwVl9m5hBE3ukvVwKBgQDAEjSoX7wKFUX7aeYEt6hjpfhtV/Y77Bmf +Fg4aYLKDBkylK2ZJygQ8nkqyNy96r9cDyayxspGvaVT3T5QusV7Gm84PLz5CQBPK +u7Gmyx43r8aPuetFagN2BlHUIjl9AeutLV+1NZk02xHDShhMvTnEPqiQEi59c5ei +0jXUUKtxowKBgHnnrRKzCvFH/5fYJyjz2GiwEG5EAVZwBGBCIPhTcDSMmaFrUWLt +TWk4YZO1xvyAxtjwEtNsu/49/ayfJLij+CyZSlzs2W4g7QU7TVJf5RLVlU6YtLPi +IXqkz0HhsSsQefGtlupG6b16XGLFZ1ZOL7yp8mJLJyakkYohPXAOgV4ZAoGABgvM +qoww8CRRSqO/wOBDJbfgxRhiwOoiuFZKZVwr4mH9YamnE6WPUpUtBsUj8nm8i/r6 +O7HCUkI/kXVo1btxn1DiQKodDJrVxKj546U7M0eOOZIBrPK0Xy+9va7CHoRD9fSa +saqZQweuXHZlo2zFd779MWPRINPVryNs3F0ZuH8CgYB+7t1FEfkS4ioeLdZN1H0h +Qx29ES9t/GIK0tcWrUYwKeF68PjJdFrt5wI4POnh12F3OT7HTYK7aGp6uVxZukX6 +LT2ZxaYHPPSOKkHnwsjtDp2Mktuicxc0JzX2CX398DpAB+uZjkLihJxmeIfMFiDH +xzcD36BXYkeT+xNj64aFqw== +-----END PRIVATE KEY----- \ No newline at end of file diff --git a/test/std/resources/pkcs8/private_rsa_3des_encrypted.pem b/test/std/resources/pkcs8/private_rsa_3des_encrypted.pem new file mode 100644 index 000000000..107fb5eaa --- /dev/null +++ b/test/std/resources/pkcs8/private_rsa_3des_encrypted.pem @@ -0,0 +1,29 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIE8jAkBgoqhkiG9w0BDAEDMBYEEFChXx05dclF6XWpcGIsmS8CAgMgBIIEyAr+ +WQhEgLV0viprmfxvRYlG8Vc7kpIAw19G8mq0X9Ra5JeHIHlUF3Vf/6SSv/Y5IfRk +Kx1ZyOSE3YE5ZcNa6dLfBHVWBPotBE+sZW3GgICRzSUW8NVD6nBCQ/AkT1IxckMe +YxQ6+WVG6hxxMjtys31hcUm2PVhgwAKpZK7iD1MjOIxHaQu4KeYi+xxeVLP+5aii +1oOeaeEeReWSzb2fNcdyUn95uDmXJC3Sa3bZPyfWmNe5RTrlhiT5dJslGCQrU+d9 +cwaZBI7QggPui0dSQls0ZrNzVehhEElxEGxhbNqUOsRAWWeu2eZBPTVDoWK4tlFU +AvyjCxi3Q2WSQY2wWVH0DYyemnl4G/qObYZw/yzlXHmbkWsbimqJI8JiEerGj6qj +9gz5eKoS1cMsvIZcX4WGN640MlBezUkFO3ZDzUXLMhrKNdmAP1NNqEjzsRmuxvIL +F9pzYJegMJPGZjo8H5YD5SK4konx+vi/JwSbeJzoSgs5h5lKsUE9FwOm1jZuvT3C +0QokmXh+HYFVyevRk3GNHhAClXXNIypeZkUHFIWTh9Sd2nbMu81E8EFbkqKmzNL6 +PjwaQm6+x7hw5nRLifW5XhTi52R6x5WSiOya+n669w8Y7Ns5LANh0kssxbc1u3MI +7fofIyzZyl1yAHLYmuoy/lQ8MRV0GwOJ6o38yt/aY0uqSRSP6N0Ur5tpbWMSkcUW +NJIgwa+zMXfdYhnjPaFAiJYPKiZ9EgvUrc1mxVf8XSKCxenI9wkltopI4hVBElSN +Vgs43E9tO+pGfarIC525wAH9dc8TGiuPv36iQu0elD79Z0HXnAZNT9JDXHoNxuk9 +lwBLpi2VUFiSlgV/3eL3ZhOPZmJDxsUsHUjWZ4E8qeQ0sSLxVqtvTduYCKME2Vg9 +iGxuGGDSF6Ef670E5v8bQcqkOvTlUk9+FYuMKpK5139Pv6Ig16PYNym8+WaMFGg1 +SGk1mTUm9AiAi0DZLxbN/mEAZ/8E+2GS0LNYxWLMbSNmcjDkVVw9i/3MsaqciGWY +CgtUV0dZQ8r6ygiWwsQZAu1HSF8HinPSVGUFRVFdlErgqiVSwKyw51VN6Rfse9EI +j9moBDb/m+NFwtsx74zSFYdDFoVHiU8Jo5ilk1L011GAQkeyJkF1uEcOSTvfYfQq +Y28kevOHoLBTaGVc32bm51fgcGqmK6jjDJP8amfMCOQREhLJOhmcsvvInHAFUhyL +9T9O9aJOKpAenm7iRFfuAvEnchMxey3XU5g8yN9+tVSEBjLyoavbxTyZWSQExyzK +qOeW2q2ihrHRo1oglJAgoED3fbe2pAWLwHWEMXJJscRTNbylvfeKXaTejioA5pSg +LJ2VyUMO0E9hkGF6M0K4pyKGpLDL2UhlKfP3ZhVZRiusMYCbtP4+3/N1pqltpzu+ +3vg8ZVeEDtK1Ie6lkN1KRRaqNYo5DU1TKF4MmkPzjhTtlkZW2GURPg4s8G+6JyF3 +DWI3eM1jKDT9Vcop5YRwun+eIleIzSA00z7xeCCAJKTpendslcuaqRnDBKmvFz4r +QNqd1APBg44oKj2LJAtUKEDPafJ/Qunos8oJUJdz1eyl5EPRP9gcV8gdLkmYVoZW +2ZjUGRiJ5D1gib8M5Bw2kDgWxqA6Bg== +-----END ENCRYPTED PRIVATE KEY----- \ No newline at end of file diff --git a/test/std/resources/pkcs8/private_rsa_aes_encrypted.pem b/test/std/resources/pkcs8/private_rsa_aes_encrypted.pem new file mode 100644 index 000000000..b5caafebc --- /dev/null +++ b/test/std/resources/pkcs8/private_rsa_aes_encrypted.pem @@ -0,0 +1,30 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIFNTBfBgkqhkiG9w0BBQ0wUjAxBgkqhkiG9w0BBQwwJAQQLfAdPg87soZMH1mn +0qikLQICAyAwDAYIKoZIhvcNAgkFADAdBglghkgBZQMEASoEEF9Xz17YqXSXN0FY +diRE9mUEggTQtD4/+vrAQ4o6gKEWct1Mr3VsBAECJFp1ACUY0kF1EOT9VBTq/PDk +Wel3AenMTIomibHpX+AJIhGXi5HmiWxLIA1bo+Ncsyl3IkJHMRBWKIHgEb+GqM8j +B3wfbhSX4lJr32ntDQOikFh69B9Li5taHkWV9VH5mGf6T6I9hLwik5wlixC2nBNS +zRcSPjrhgAexb9vALN6/r/+7pksteW9EO0rhEQU2A9FGeCbKAHl9UKfkDh6fSZWT +q0JyJ+QkQKq5Es52vLPuZk/ls/LIXCejLVgBxhC4DAV+DKX+TYscbtrrfvKUjtpu +Pi9M62cVPB9zijNoQ7/P/upPm4TzRMbWvarLbyuHKswO+a/N2s6JHGyhGQFGqmuy +EQVNxh9KeWa+QElSMnDd2oEYIEHUyI32J8MpxHmeuCebACQ2iRhm+R+Aa7J6u0cH +gTaK8KeOrJXXfJc9KjttNdC+gLg9Kk/LDINaBVHXJ2tD9OQO6xRD+nflokLGpM/k +z+Ny2QM+eoIjVwyo+a7I6sFi1Iq2c6CjUvamkWpDgGr9oK+xJ/fICg4M/46RyGY/ +MkU5f4k2vJ4sZ8Zluevyt/xsi0eCwfFsx7EexfvPQgZHxYigSBFu+7oNvh0sqUeH +MM0V7i24RTaZhq5n7F8qIImmuiZ+bMtX8EYHbRwtTV6YB8d3BC8cPpgUinNM6uSF +JkU693zYDQwDpFbcY2yQoCbqT/jc3JbxHXIhqoDd/AtU0Lw/66hhCWYntNros9Y3 +A/oRWD/4ZH9nzkaQo4oCEHT0b8+T+LC/5HZ5wur1hknTfnvqxA3OnM8NV0OvKLJU +L7PW+0KALSASSujuI8A7tD1vitkWPp87fVKFhRsLeeWCpnDGNJFnNvvyqnRSX8bB +3dBGSiV/FxTabTdn75A6SMtr2cFGRtsnLACQDxSoXE2u9OA85hi00YwoAQ0LbBYs +tQJxOhnnu1N8UMc3xHqQE59GZBhP+7vKmjrLTWHWwI/hCnJ1XHctEH2RgAUAV+Xd +QJ4U3i10ICYrPwVIe+0L2wU1Sh31MtFiLtH3FUJ8JQ2Zs7BkqRMercHKt43lE/hV +lur/WBD+Nm4K6NPrcnPaUftyI0Js22A0xqAaCCGtdLIv/BlD0tcfL6wyJD8S+CEM +SsQigk0Ue7PuVXS3qhEjsgcS8k9zSJZlAsWPRB0BdfJaaYyJFf9QdcZwSjphT3S1 +r6hqD8SfCWkv8n2V5DsXWP+p/JC4bIhX9TPMCmed4mVR51YDpvrTVV2NEtC2+0dL +qr8dhtIgw/pvH2t3JzRrAPQr0XvQI21bc9ysYYtvT3E6OkGWaJeAfjfXvYY6O9ps +Ju49yKn/Avj97UgPyT/rumXo0wPTqhtMz+u+cXlkCFsQTJmDm2RYWWP8EeeWNwo9 ++TKg2Xqa/3SLeovEYfy/QxQUp1VLHu/GT96RP+rMoiYSRTcXSWrmreUTAWQjXRiR +4rOapyHEQw7Y8ZQYICiowBGKM3+cxjvgDq1x+IyVM8H6PN/V/ZpTn/0Suh0mZVAw +4zzFyoXhHw3XrT+bhkB9+1HBCOj4fnxSYHnVrO/eWEDv4678Y1bCBASIA3wCQu8X +4THzaIL4SSfAd8WbjHJk5Uo0w0jPLXXgdVTlD+KtZ1osbRSiaHkPxEA= +-----END ENCRYPTED PRIVATE KEY----- \ No newline at end of file diff --git a/test/std/resources/pkcs8/public.key b/test/std/resources/pkcs8/public.key deleted file mode 100644 index ad908eae3..000000000 --- a/test/std/resources/pkcs8/public.key +++ /dev/null @@ -1,9 +0,0 @@ ------BEGIN PUBLIC KEY----- -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6gqprEQKAbycoSMIxlQX -qmyaLM+jtNi55yftQ13qGp9h2s1h5qAMwRpGx2ZZJl0PaGV3jpJlKAxqay8oEeKX -N+c+/nkzLDJmNG2Z8iYDKmuOYi2tCUt4TMyHfUIvErJvhzMlJMUXUsU0aHY7y+wK -oJVIuor/9AgRY+66+XjAO/hAhIQyntqSCkyjSwGHVRaooQCibIEXjwSP2a5YnqnO -1v6xbVcrhoMN8rMIA2gd2qplqJY2u6H/9H/MdyLibTpxNWygBeUTpnIuELC3bX4t -21McoObE8sul4WFe/kCp6myv11rNTQ/yYorrD4jXPnadTSaGbSLjN5S7HVCuD5h+ -yQIDAQAB ------END PUBLIC KEY----- \ No newline at end of file diff --git a/test/std/resources/pkcs8/public_ecdsa.pem b/test/std/resources/pkcs8/public_ecdsa.pem new file mode 100644 index 000000000..fd939588f --- /dev/null +++ b/test/std/resources/pkcs8/public_ecdsa.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE9fXaeUPy9xcnJJoJXvBuAgZGkCCR +Ohxy2NqSDCti6wi29TJyJYcwr4BpNCnQ2Zw0mI8aQYQgGW2+5bNdv6reTw== +-----END PUBLIC KEY----- \ No newline at end of file diff --git a/test/std/resources/pkcs8/public_rsa.pem b/test/std/resources/pkcs8/public_rsa.pem new file mode 100644 index 000000000..9a2039f84 --- /dev/null +++ b/test/std/resources/pkcs8/public_rsa.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoVMmu96ucaqQWiaHDrZ2 +OVAuwDQydwh8OMAPkJtrDA+MkB9AEadgjQhxi/bcWOExc97eanrgkafVJO0QdD+Q +Sq3KlX3h9VkrqZxxlXpaWf8ETTSBLG063QvxvZDPJ6+hmtNCimkq+ahxCMC4dLxV +Q6kq8ECiop/mh1EMFTB6EMaJD5ow2+Q3Us2gXPtv3p6dd31pdumz12A2Xnm6LBv1 +A9I6KFUN+QUxhGtevsyhVvXsBfc6VKVKapAnde+5fFdOFEYn4uUlVN/bLO//NyBm +hjrBv0qc+jPR7NvkOi9yB6AqM6i8uVk7PTN3eyQnrYPN9fbHhsqE46o4mr3Yq3uL +ZQIDAQAB +-----END PUBLIC KEY----- \ No newline at end of file diff --git a/test/std/ssl/CertificateTests.hx b/test/std/ssl/CertificateTests.hx index cdfac7ae0..a93fed910 100644 --- a/test/std/ssl/CertificateTests.hx +++ b/test/std/ssl/CertificateTests.hx @@ -16,7 +16,7 @@ class CertificateTests extends Test { function testNonExistingSubject() { final cert = Certificate.fromString(Resource.getString('x509sample')); - Assert.exception(() -> cert.subject('QQ')); + Assert.isNull(cert.subject('QQ')); } function testSubjectCommonName() { @@ -46,7 +46,7 @@ class CertificateTests extends Test { function testNonExistingIssuer() { final cert = Certificate.fromString(Resource.getString('x509sample')); - Assert.exception(() -> cert.issuer('QQ')); + Assert.isNull(cert.issuer('QQ')); } function testIssuerCommonName() { @@ -94,25 +94,25 @@ class CertificateTests extends Test { function testBefore() { final cert = Certificate.fromString(Resource.getString('x509sample')); - Assert.equals(2012, cert.notBefore.getUTCFullYear()); - Assert.equals(7, cert.notBefore.getUTCMonth()); - Assert.equals(22, cert.notBefore.getUTCDate()); + Assert.equals(2012, cert.notBefore.getFullYear()); + Assert.equals(7, cert.notBefore.getMonth()); + Assert.equals(22, cert.notBefore.getDate()); - Assert.equals(0, cert.notBefore.getUTCSeconds()); - Assert.equals(28, cert.notBefore.getUTCMinutes()); - Assert.equals(6, cert.notBefore.getUTCHours()); + Assert.equals(0, cert.notBefore.getSeconds()); + Assert.equals(28, cert.notBefore.getMinutes()); + Assert.equals(5, cert.notBefore.getHours()); } function testAfter() { final cert = Certificate.fromString(Resource.getString('x509sample')); - Assert.equals(2017, cert.notAfter.getUTCFullYear()); - Assert.equals(7, cert.notAfter.getUTCMonth()); - Assert.equals(21, cert.notAfter.getUTCDate()); + Assert.equals(2017, cert.notAfter.getFullYear()); + Assert.equals(7, cert.notAfter.getMonth()); + Assert.equals(21, cert.notAfter.getDate()); - Assert.equals(0, cert.notAfter.getUTCSeconds()); - Assert.equals(28, cert.notAfter.getUTCMinutes()); - Assert.equals(6, cert.notAfter.getUTCHours()); + Assert.equals(0, cert.notAfter.getSeconds()); + Assert.equals(28, cert.notAfter.getMinutes()); + Assert.equals(5, cert.notAfter.getHours()); } function testNext() { diff --git a/test/std/ssl/DigestTests.hx b/test/std/ssl/DigestTests.hx index 6b5152b33..3031d53bf 100644 --- a/test/std/ssl/DigestTests.hx +++ b/test/std/ssl/DigestTests.hx @@ -16,12 +16,18 @@ abstract class DigestTests extends Test { final expected : Bytes; - function new(hash, expected) { + final publicKey : String; + + final privateKey : String; + + function new(hash, expected, publicKey, privateKey) { super(); - this.input = Bytes.ofString("Hello, World!"); - this.hash = hash; - this.expected = expected; + this.input = Bytes.ofString("Hello, World!"); + this.hash = hash; + this.expected = expected; + this.publicKey = publicKey; + this.privateKey = privateKey; } public function testHash() { @@ -29,7 +35,7 @@ abstract class DigestTests extends Test { } function testSign() { - final key = Key.readPEM(Resource.getString('pkcs8_private_key'), false); + final key = Key.readPEM(Resource.getString(privateKey), false); final result = Digest.sign(input, key, hash); if (Assert.notNull(result)) { @@ -38,58 +44,112 @@ abstract class DigestTests extends Test { } function testVerify() { - final privateKey = Key.readPEM(Resource.getString('pkcs8_private_key'), false); - final publicKey = Key.readPEM(Resource.getString('pkcs8_public_key'), true); + final privateKey = Key.readPEM(Resource.getString(privateKey), false); + final publicKey = Key.readPEM(Resource.getString(publicKey), true); final signature = Digest.sign(input, privateKey, hash); Assert.isTrue(Digest.verify(input, signature, publicKey, hash)); } function testVerifySameKey() { - final privateKey = Key.readPEM(Resource.getString('pkcs8_private_key'), false); + final privateKey = Key.readPEM(Resource.getString(privateKey), false); final signature = Digest.sign(input, privateKey, hash); Assert.isTrue(Digest.verify(input, signature, privateKey, hash)); } } -class MD5Tests extends DigestTests { +abstract class MD5Tests extends DigestTests { + + public function new(publicKey, privateKey) { + super(MD5, Bytes.ofHex('65a8e27d8879283831b664bd8b7f0ad4'), publicKey, privateKey); + } +} + +class RsaMD5Tests extends MD5Tests { + public function new() { + super('pkcs8_rsa_public_key', 'pkcs8_rsa_private_key'); + } +} +class EcdsaMD5Tests extends MD5Tests { public function new() { - super(MD5, Bytes.ofHex('65a8e27d8879283831b664bd8b7f0ad4')); + super('pkcs8_ecdsa_public_key', 'pkcs8_ecdsa_private_key'); } } -class SHA1Tests extends DigestTests { +abstract class SHA1Tests extends DigestTests { + public function new(publicKey, privateKey) { + super(SHA1, Bytes.ofHex('0a0a9f2a6772942557ab5355d76af442f8f65e01'), publicKey, privateKey); + } +} + +class RsaSHA1Tests extends SHA1Tests { + public function new() { + super('pkcs8_rsa_public_key', 'pkcs8_rsa_private_key'); + } +} + +class EcdsaSHA1Tests extends SHA1Tests { public function new() { - super(SHA1, Bytes.ofHex('0a0a9f2a6772942557ab5355d76af442f8f65e01')); + super('pkcs8_ecdsa_public_key', 'pkcs8_ecdsa_private_key'); } } -class SHA256Tests extends DigestTests { +abstract class SHA256Tests extends DigestTests { + public function new(publicKey, privateKey) { + super(SHA256, Bytes.ofHex('dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f'), publicKey, privateKey); + } +} + +class RsaSHA256Tests extends SHA256Tests { + public function new() { + super('pkcs8_rsa_public_key', 'pkcs8_rsa_private_key'); + } +} + +class EcdsaSHA256Tests extends SHA256Tests { public function new() { - super(SHA256, Bytes.ofHex('dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f')); + super('pkcs8_ecdsa_public_key', 'pkcs8_ecdsa_private_key'); + } +} + +abstract class SHA384Tests extends DigestTests { + + public function new(publicKey, privateKey) { + super(SHA384, Bytes.ofHex('5485cc9b3365b4305dfb4e8337e0a598a574f8242bf17289e0dd6c20a3cd44a089de16ab4ab308f63e44b1170eb5f515'), publicKey, privateKey); } } -class SHA384Tests extends DigestTests { +class RsaSHA384Tests extends SHA384Tests { + public function new() { + super('pkcs8_rsa_public_key', 'pkcs8_rsa_private_key'); + } +} +class EcdsaSHA384Tests extends SHA384Tests { public function new() { - super(SHA384, Bytes.ofHex('5485cc9b3365b4305dfb4e8337e0a598a574f8242bf17289e0dd6c20a3cd44a089de16ab4ab308f63e44b1170eb5f515')); + super('pkcs8_ecdsa_public_key', 'pkcs8_ecdsa_private_key'); } } -class SHA512Tests extends DigestTests { +abstract class SHA512Tests extends DigestTests { + + public function new(publicKey, privateKey) { + super(SHA512, Bytes.ofHex('374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387'), publicKey, privateKey); + } +} +class RsaSHA512Tests extends SHA512Tests { public function new() { - super(SHA512, Bytes.ofHex('374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387')); + super('pkcs8_rsa_public_key', 'pkcs8_rsa_private_key'); } } -class RIPEMD160Tests extends DigestTests { +class EcdsaSHA512Tests extends SHA512Tests { public function new() { - super(RIPEMD160, Bytes.ofHex('527a6a4b9a6da75607546842e0e00105350b1aaf')); + super('pkcs8_ecdsa_public_key', 'pkcs8_ecdsa_private_key'); } } diff --git a/test/std/ssl/TestPKCS1.hx b/test/std/ssl/TestPKCS1.hx new file mode 100644 index 000000000..58823beab --- /dev/null +++ b/test/std/ssl/TestPKCS1.hx @@ -0,0 +1,25 @@ +package ssl; + +import haxe.Resource; +import sys.ssl.Key; +import utest.Test; + +import utest.Assert; + +class TestPKCS1 extends Test { + function testPemPublicKey() { + Assert.notNull(Key.readPEM(Resource.getString('pkcs1_public_key'), true)); + } + + function testPemPrivateKey() { + Assert.notNull(Key.readPEM(Resource.getString('pkcs1_private_key'), false)); + } + + function testPemPrivateEncryptedKey() { + Assert.notNull(Key.readPEM(Resource.getString('pkcs1_private_aes_encrypted_key'), false, 'demo')); + } + + function testPemPrivateEncryptedKey3DES() { + Assert.notNull(Key.readPEM(Resource.getString('pkcs1_private_3des_encrypted_key'), false, 'testpassword')); + } +} diff --git a/test/std/ssl/TestPKCS8.hx b/test/std/ssl/TestPKCS8.hx index 63b64c4e7..c97d01b39 100644 --- a/test/std/ssl/TestPKCS8.hx +++ b/test/std/ssl/TestPKCS8.hx @@ -7,15 +7,35 @@ import utest.Test; import utest.Assert; class TestPKCS8 extends Test { - function testPemPublicKey() { - Assert.notNull(Key.readPEM(Resource.getString('pkcs8_public_key'), true)); + function testPemRsaPublicKey() { + Assert.notNull(Key.readPEM(Resource.getString('pkcs8_rsa_public_key'), true)); } - function testPemPrivateKey() { - Assert.notNull(Key.readPEM(Resource.getString('pkcs8_private_key'), false)); + function testPemEcPublicKey() { + Assert.notNull(Key.readPEM(Resource.getString('pkcs8_ecdsa_public_key'), true)); } - function testPemAesEncryptedPrivateKey() { - Assert.notNull(Key.readPEM(Resource.getString('pkcs8_aes_private_key'), false, 'password')); + function testPemRsaPrivateKey() { + Assert.notNull(Key.readPEM(Resource.getString('pkcs8_rsa_private_key'), false)); + } + + function testPemEcPrivateKey() { + Assert.notNull(Key.readPEM(Resource.getString('pkcs8_ecdsa_private_key'), false)); + } + + function testPemRsaAesEncryptedPrivateKey() { + Assert.notNull(Key.readPEM(Resource.getString('pkcs8_rsa_aes_encrypted_private_key'), false, 'demo')); + } + + function testPemRsa3desEncryptedPrivateKey() { + Assert.notNull(Key.readPEM(Resource.getString('pkcs8_rsa_3des_encrypted_private_key'), false, 'demo')); + } + + function testPemEcdsaAesEncryptedPrivateKey() { + Assert.notNull(Key.readPEM(Resource.getString('pkcs8_ecdsa_aes_encrypted_private_key'), false, 'demo')); + } + + function testPemEcdsa3desEncryptedPrivateKey() { + Assert.notNull(Key.readPEM(Resource.getString('pkcs8_ecdsa_3des_encrypted_private_key'), false, 'demo')); } }