diff --git a/core/java/test/junit/resources/i2pseeds.su3 b/core/java/test/junit/resources/i2pseeds.su3 new file mode 100644 index 0000000000000000000000000000000000000000..94699305e669abfbffcdfd62af0a0c02a29105b7 Binary files /dev/null and b/core/java/test/junit/resources/i2pseeds.su3 differ diff --git a/core/java/test/junit/resources/keystore.ks b/core/java/test/junit/resources/keystore.ks new file mode 100644 index 0000000000000000000000000000000000000000..a7c2aa71934669533b48a4f06c2dceec5dc358f9 Binary files /dev/null and b/core/java/test/junit/resources/keystore.ks differ diff --git a/core/java/test/junit/resources/meeh_at_mail.i2p.crt b/core/java/test/junit/resources/meeh_at_mail.i2p.crt new file mode 100644 index 0000000000000000000000000000000000000000..6014c96f789c4ba5f2edeaca7761f1279bbc2e46 --- /dev/null +++ b/core/java/test/junit/resources/meeh_at_mail.i2p.crt @@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFeTCCA2GgAwIBAgIEZZozujANBgkqhkiG9w0BAQ0FADBtMQswCQYDVQQGEwJY +WDELMAkGA1UECBMCWFgxCzAJBgNVBAcTAlhYMR4wHAYDVQQKExVJMlAgQW5vbnlt +b3VzIE5ldHdvcmsxDDAKBgNVBAsTA0kyUDEWMBQGA1UEAwwNbWVlaEBtYWlsLmky +cDAeFw0xNDA2MjgyMjQ5MDlaFw0yNDA2MjcyMjQ5MDlaMG0xCzAJBgNVBAYTAlhY +MQswCQYDVQQIEwJYWDELMAkGA1UEBxMCWFgxHjAcBgNVBAoTFUkyUCBBbm9ueW1v +dXMgTmV0d29yazEMMAoGA1UECxMDSTJQMRYwFAYDVQQDDA1tZWVoQG1haWwuaTJw +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnVnmPE4uUvCky0yCnnVH +cJEDqzwDPupx0zr0YDlhZk5VOPPecx5haayJ/V6nXPc1aVVWn+CHfedcF2aBgN4K +5aBueS/l6l5WHcv02DofAqlTmyAws3oQeR1qoTuW24cKRtLR7h5bxv63f6bgp6e+ +RihFNez6UxErnRPuJOJEO2Im6EgVp6fz7tQ7R35zxAUeES2YILPySvzy2vYm/EEG +jXX7Ap2A5svVo90xCMOeUZ/55vLsjyIshN+tV87U4xwvAkUmwsmWVHm3BQpHkI6z +zMJie6epB8Bqm0GYm0EcElJH4OCxGTvDLoghpswbuUO7iy3JSfoL7ZCnoiQdK9K4 +yVVChj8lG+r7KaTowK96iZep+sZefjOt5VFGuW2Fi/WBv3ldiLlJAo/ZfrUM4+vG +fyNBXbl6bX87uTCGOT1p3dazo+zJMsAZ+Y93DlM/mDEWFa1kKNrs74syzaWEqF4L +KQE6VoYn80OOzafSigTVQgSwUtQtB0XGhMzJhyxU2XHWe1LFIy7Pta0B+lDiZj7c +I8nXxYjsDfEu/Elj/Ra9N6bH0awmgB5JDa+Tbir+oEM5SyDfpSaCGuatdGxjweGI +kVmFU0SqCZV/8TXbIu6MUVzTZMZVT94edifFSRad4fqw7eZbSXlPu++3d1/btn6h +ibM04nkv0mm+FxCKB/wdAkECAwEAAaMhMB8wHQYDVR0OBBYEFO7jIkSRkoXyJcho +9/Q0gDOINa5EMA0GCSqGSIb3DQEBDQUAA4ICAQBzfWO7+8HWOKLaYWToJ6XZbpNF +3wXv1yC4W/HRR80m4JSsq9r0d7838Nvd7vLVP6MY6MaVb/JnV76FdQ5WQ6ticD0Y +o3zmpqqbKVSspN0lrkig4surT88AjfVQz/vEIzKNQEbpzc3hC2LCiE2u+cK/ix4j +b9RohnaPvwLnew5RNQRpcmk+XejaNITISr2yQIwXL7TEYy8HdGCfzFSSFhKe9vkb +GsWS5ASrUzRoprswmlgRe8gEHI+d51Z7mWgna0/5mBz9bH/3QXtpxlLWm3bVV+kt +pZjQDTHE0GqG2YsD1Gmp4LU/JFhCojMTtiPCXmr9KFtpiVlx06DuKm5PC8Ak+5w+ +m/DQYYfv9z+AA5Y430bjnzwg67bhqVyyek4wcDQinFswv3h4bIB7CJujDcEqXXza +lhG1ufPPCUTMrVjh7AShohZraqlSlyQPY9vEppLwD4W1d+MqDHM7ljOH7gQYaUPi +wE30AdXEOxLZcT3aRKxkKf2esNofSuUC/+NXQvPjpuI4UJKO3eegi+M9dbnKoNWs +MPPLPpycecWPheFYM5K6Ao63cjlUY2wYwCfDTFgjA5q8i/Rp7i6Z6fLE3YWJ4VdR +WOFB7hlluQ//jMW6M1qz6IYXmlUjcXl81VEvlOH/QBNrPvX3I3SYXYgVRnVGUudB +o3eNsanvTU+TIFBh2Q== +-----END CERTIFICATE----- diff --git a/core/java/test/junit/resources/publicKeyFile.crt b/core/java/test/junit/resources/publicKeyFile.crt new file mode 100644 index 0000000000000000000000000000000000000000..b4974efeea9bb66ce9bceaacc58336232e22664b --- /dev/null +++ b/core/java/test/junit/resources/publicKeyFile.crt @@ -0,0 +1,12 @@ +-----BEGIN CERTIFICATE----- +MIIB1jCCAYagAwIBAgIIDzyykH5nzvUwBwYDK2VlBQAwUTEeMBwGA1UEBxMVSTJQ +IEFub255bW91cyBOZXR3b3JrMQwwCgYDVQQLEwNJMlAxITAfBgNVBAMMGG1lZWgu +c2NhbGF0ZXN0c0BtYWlsLmkycDAeFw0xODAzMjYxOTE0MjZaFw0yODAzMjUxOTE0 +MjZaMFExHjAcBgNVBAcTFUkyUCBBbm9ueW1vdXMgTmV0d29yazEMMAoGA1UECxMD +STJQMSEwHwYDVQQDDBhtZWVoLnNjYWxhdGVzdHNAbWFpbC5pMnAwLTAIBgMrZWQK +AQEDIQCaYkkPeLv5lxLu01fs/L0dD/rq2RYAFOMu16+1UPlbBKN3MHUwHQYDVR0O +BBYEFMdstwMszJ/2GkGGt8SYNDrYaiQ1MB8GA1UdIwQYMBaAFMdstwMszJ/2GkGG +t8SYNDrYaiQ1MA4GA1UdDwEB/wQEAwIBpjAjBgNVHREEHDAagRhtZWVoLnNjYWxh +dGVzdHNAbWFpbC5pMnAwBwYDK2VlBQADQQAagw8ZKDz0YkrVadMEo2Tq0xspe3YQ +ZKVYzhpj3dGf0JHq/K5FPuAQcRYOIc7UEsJC0ine7BMUC3bUyKq5B3IP +-----END CERTIFICATE----- diff --git a/core/java/test/scalatest/net/i2p/crypto/CertUtilSpec.scala b/core/java/test/scalatest/net/i2p/crypto/CertUtilSpec.scala new file mode 100644 index 0000000000000000000000000000000000000000..63c5d5095cb632d220432d5c8e2b32f79aaeca3b --- /dev/null +++ b/core/java/test/scalatest/net/i2p/crypto/CertUtilSpec.scala @@ -0,0 +1,30 @@ +package net.i2p.crypto + +import java.io.File +import java.security.cert.X509Certificate + +import org.scalatest.FunSpec +import org.scalatest.Matchers + + +class CertUtilSpec extends FunSpec with Matchers { + + describe("CertUtil") { + // For some stupid gradle issues, it don't copies reosurces. So hacky way. + // When added to junit directory, it get copied. Until a better way is found, + // this is the non-optimal solution. + val certFileUrl = getClass.getResource("/resources/meeh_at_mail.i2p.crt") + val certFile = new File(certFileUrl.toURI) + + it("should be able to read a certificate") { + val cert: X509Certificate = CertUtil.loadCert(certFile) + assert(cert.getSubjectDN.toString === "CN=meeh@mail.i2p, OU=I2P, O=I2P Anonymous Network, L=XX, ST=XX, C=XX") + } + + it("should be able to tell if it's revoked or not") { + val cert: X509Certificate = CertUtil.loadCert(certFile) + assert(CertUtil.isRevoked(cert) === false) + } + + } +} diff --git a/core/java/test/scalatest/net/i2p/crypto/SU3FileSpec.scala b/core/java/test/scalatest/net/i2p/crypto/SU3FileSpec.scala new file mode 100644 index 0000000000000000000000000000000000000000..a694631c1cfcded9504784ec0b558a0ff1d9f7aa --- /dev/null +++ b/core/java/test/scalatest/net/i2p/crypto/SU3FileSpec.scala @@ -0,0 +1,30 @@ +package net.i2p.crypto + +import java.io.File + +import org.scalatest.FunSpec +import org.scalatest.Matchers + + +class SU3FileSpec extends FunSpec with Matchers { + + def cheater(methodName : String, parameters: (AnyRef,Class[_])*): AnyRef = { + val parameterValues = parameters.map(_._1) + val parameterTypes = parameters.map(_._2) + val method = classOf[SU3File].getDeclaredMethod(methodName, parameterTypes:_*) + method.setAccessible(true) + method.invoke(classOf[SU3File], parameterValues:_*) + } + + describe("SU3File") { + val certFileUrl = getClass.getResource("/resources/meeh_at_mail.i2p.crt") + val certFile = new File(certFileUrl.toURI) + + val seedFileUrl = getClass.getResource("/resources/i2pseeds.su3") + val seedFile = new File(seedFileUrl.toURI) + + it("should be able to verify a valid file") { + cheater("verifySigCLI", (seedFile.getAbsolutePath, classOf[String]), (certFile.getAbsolutePath, classOf[String])) + } + } +} \ No newline at end of file