diff --git a/certifikaty/klient/vygenerovany_certifikat.pem b/certifikaty/klient/vygenerovany_certifikat.pem index f148627..bac18e9 100644 --- a/certifikaty/klient/vygenerovany_certifikat.pem +++ b/certifikaty/klient/vygenerovany_certifikat.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIIC9TCCAl6gAwIBAgIQbFsMsUpL4cQYvdnPsNfEozANBgkqhkiG9w0BAQsFADBz +MIIC9TCCAl6gAwIBAgIQD7QN9LZVR1zGQgnk5Ibj8jANBgkqhkiG9w0BAQsFADBz MQswCQYDVQQGEwJTSzEKMAgGA1UECAwBLTEPMA0GA1UEBwwGS29zaWNlMREwDwYD VQQKDAhBdXRvcml0YTESMBAGA1UEAwwJbG9jYWwuZGV2MSAwHgYJKoZIhvcNAQkB -FhFhdXRvcml0YUB0dWtlLmNvbTAiGA8yMDIwMDMxODEwMzUwOFoYDzIwMjUwMzE4 -MTAzNTA4WjB3MQswCQYDVQQGEwJTUjEKMAgGA1UECAwBLTEPMA0GA1UEBwwGS29z +FhFhdXRvcml0YUB0dWtlLmNvbTAiGA8yMDIwMDUxNjEwNDY1NFoYDzIwMjUwNTE2 +MTA0NjU0WjB3MQswCQYDVQQGEwJTUjEKMAgGA1UECAwBLTEPMA0GA1UEBwwGS29z aWNlMQowCAYDVQQKDAEtMQowCAYDVQQLDAEtMRIwEAYDVQQDDAlsb2NhbC5kZXYx -HzAdBgkqhkiG9w0BCQEWEGtsaWVudEBrbGllbnQuc2swggEiMA0GCSqGSIb3DQEB -AQUAA4IBDwAwggEKAoIBAQDwvJLGxRiSsplAIeOWOeMa4xeh8mVwTVZgJjuOK2xv -Gze6NZ/or9OGHqBMat3rfW9xZazAg+UoL4TzqokVyjo1KQxGwbHuZQdqQ3/MgWnm -1h2cdLicF8hMQtawYhqp1me9+Xh89y+tiBBAAilzGzPRQayYoMoEd9Ics8XPbSX/ -qEzSdVeuqb7AIQIDZ7v4DTnQIarJDFtzE4Rd37Dq+ThMiipe292FKbRqfyhU5974 -QtAfTQ6ReYzuRnO5bveAx20iOHXqhM2ckUNzuAKRk8DKEdh/ucPpJTF5rkJYVmU0 -6qpVAPdfSrovuNe6r3v9JGBCWOb8XPq9cLE0PwRd2U1nAgMBAAEwDQYJKoZIhvcN -AQELBQADgYEAUFd0OaWxtikqd5MRx8LfOKfIoadPxnm7/os6fR8D1K8HMVuinbc4 -6My0jDwVIQQP0ovlGHhntbH+EsXwoB15O2EPtfh5kQjgocKdZitfH3jgaW3ndm1B -RAKOmCfs29IBHN/ZUX8hBaoSfUWJPvwL2DcxzwoeI+h5VRHY68f6cI4= +HzAdBgkqhkiG9w0BCQEWEHNlcnZlckBzZXJ2ZXIuc2swggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCyo30ux5wnoKt7Ew3gLSfjsU9/QUSW44pVMWPLbq61 +eGspm9JsFtLdjDD4EwcE6f8VKKprpzmIXGvgwEcOw+i8eXs/awu9xH+BjlU9fLLS +FVbK3qMoDBlzxx+apsZGj3KRajHGRbapuHM+UxZyHMRKV+w2mBobt+GQ9Wl3dzBG +SfyLcGLNn/cVacWYuBnAqD3edKZjurZpvgjWzSNYI5uKJk3u3uPwECtk1VjUOGgv +yH0/vAbGPhp40Kaz9hl7keQqBmz5fOpNNCR9k8wCnSL7+cSmkXuOHzTgEvFcL1H+ +v4Oq1xcwpS2r2Dt1O2seDVpdpp4/GukPgL35w9ARHI5nAgMBAAEwDQYJKoZIhvcN +AQELBQADgYEALK4Urx0CfKH8+z7NH7GoNtye0KEYAXZuAV86GyASp6Ts9Cf8Oz3s +CizMkG6VcQ9Jm1jMqUKhR/izVDshoBPvdjslBnNVy2frQivx5vDumaYvdPiSxu8P +0SjqybTiBvonOKls/ovOtXKAGmgDv4mo2X5eIB7k5q+4nH6O3IDu2GU= -----END CERTIFICATE----- diff --git a/certifikaty/klient/vygenerovany_kluc.key b/certifikaty/klient/vygenerovany_kluc.key index f3014ba..5ac1683 100644 --- a/certifikaty/klient/vygenerovany_kluc.key +++ b/certifikaty/klient/vygenerovany_kluc.key @@ -1,27 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEA8LySxsUYkrKZQCHjljnjGuMXofJlcE1WYCY7jitsbxs3ujWf -6K/Thh6gTGrd631vcWWswIPlKC+E86qJFco6NSkMRsGx7mUHakN/zIFp5tYdnHS4 -nBfITELWsGIaqdZnvfl4fPcvrYgQQAIpcxsz0UGsmKDKBHfSHLPFz20l/6hM0nVX -rqm+wCECA2e7+A050CGqyQxbcxOEXd+w6vk4TIoqXtvdhSm0an8oVOfe+ELQH00O -kXmM7kZzuW73gMdtIjh16oTNnJFDc7gCkZPAyhHYf7nD6SUxea5CWFZlNOqqVQD3 -X0q6L7jXuq97/SRgQljm/Fz6vXCxND8EXdlNZwIDAQABAoIBAAIcLun+V9xL53aB -eU2IwwGixFnSP9ReuaOI/n2kjfjoom4W2T1a6xDPkDSpYsj+i49CGXMoiYIrsaKM -xvguuCgR5S9jHai0bKRrmRnJ8EBBG44aE7E6zTHa3ph2MVKFIX97DXTP5X+0vkjl -lGzITe8OtRqNu6eTfSxdwuj1zQwkG6hISEjIQuqy01wZLKGxLqp9FXfT1wSmpHCI -BTqSrVAnwrDVQxkDS7+B2bipy48JMRIZ1TOjkC+ELNiMEZgpMOhTM/0WjYUP0elC -SoxdeDN9oo8IWoyL8wEMVl9apMRpoT3e2eI7GFHhvGyJpY/PIBpevbKEmxUeYnKu -2pI1eRUCgYEA+NBPc8WyRDhcDwm+pdcvpozOv9JuEkX6hLqTSAeqYLFSZDoei4bs -6nkFHHE9OCwQ2xtoP4dz/BZRW/sO9nU04FmNLqPS/pfxEUN3BSABhi5lvwh7bgf4 -jw1P2IixA4AYkOAaJGl8LGor3GIJ5RnjxNYj7eNDbfVL01jwVMvKvlMCgYEA97CK -zOdtB07oCav4lcMMGqbGsDQFJ9x+lGUHs/OXCTNf7MgaxHErw5hk/GPqM7YrA93V -arpa5PG/y0fy3IswjhMHwVwHKw8yOWN6oV+Ud4yAXUYurNNpkv9BTEKrSpy/vvM6 -et5NPXki1UqkkzzCAL6hSdrmvYUTPzAl38pzih0CgYEA5huw/z786P6+lOHMQY/L -b9qVcu3oAlpZn9r1Tw5X0ejsa+kcSqnT/d1CjtVjasnGJP0p4mchKyhwwgJkCibH -ah0n5tR31CEtP2wHbOP2xOOwEYaEsHQKujHzgCyamMQk9Adt5fLwdhsSyVSaFhll -fqsUu3MM72qGX8XHLoTy0iUCgYAx7AI9xFNEStIXyPKEdNiGsqCPORzk6NsWW7qO -uYTylMk7tyU1/L1eYePQvu6gV5IZ6GcwaLkTNep7NVgsvV0e9ZT1ku/a7OgpivRX -fCU3ZzkkE5YqvT2lJA9sKG/PzQIUoX9i7lVRE45CwRWkm3VaoxFtClLBVgYIEVNA -5NQevQKBgCv+Gl7uk1N9VrlD2XwwmHCWooqVr3FPOq6ztX4014DzZmxkyem9GJGZ -uyuzM4bKjb/lmk4RI19VZoExyt+7K3eWUSUQNS6Erhcjx74+vSngKOV2TNiGnByx -oJoUlKquhEijlX/pJtH8812EYGtm5COkRA2QkWfr6hb6KQtz4wq7 +MIIEpAIBAAKCAQEAsqN9LsecJ6CrexMN4C0n47FPf0FEluOKVTFjy26utXhrKZvS +bBbS3Yww+BMHBOn/FSiqa6c5iFxr4MBHDsPovHl7P2sLvcR/gY5VPXyy0hVWyt6j +KAwZc8cfmqbGRo9ykWoxxkW2qbhzPlMWchzESlfsNpgaG7fhkPVpd3cwRkn8i3Bi +zZ/3FWnFmLgZwKg93nSmY7q2ab4I1s0jWCObiiZN7t7j8BArZNVY1DhoL8h9P7wG +xj4aeNCms/YZe5HkKgZs+XzqTTQkfZPMAp0i+/nEppF7jh804BLxXC9R/r+DqtcX +MKUtq9g7dTtrHg1aXaaePxrpD4C9+cPQERyOZwIDAQABAoIBAFNZOKVE+TT8IEZy +Y3z/VKdGKaNkXo5QaFDLlJZsdBOztbxaOdm45HX+XTLCHfpK+3tx1+IWyh83kBXz +YLQg8ExQGhNC7N2D+0IFmPvxXLXswuww6Mtcqdt9Qt+zhLuTXo8+jy7FhC64Iv0n +Y0em6GcPkuT+HuBj8VjjSGw3Lkz8m/bexxbnRLUx3jnr/nEw8H1/OIpNrKJQc7ej +Q1/MxKBPjj+CBYIVLPq+mHSMa9YR08JEBAhbFUFLDyZSp3X9S2APJLrQ/FmTXQuX +XvD8u1X7KwOx2G+2HiMD5qoCVnkY9i4TLiwJiapC/di0HD1xmEWgAbZNQen7h48B +PrAf91ECgYEA6kzwn4K0aq90qn0S0MSIRc8YLto5lVz7tOvlmtsHQ0MB88TEmBUp +AHbeYEFGhmQo78Oqu9FIspV7AdQ1/QloG1iT0ETjrPgf+zgHjgeKuILEtOlnVcjf +EOa5J2EvnmJ8Nf14P7cm4f9/p3MehOgTs1de5r2Q7HvX9EtJQ5OU9vsCgYEAwy7a +mYkfDnIO/z9kcvPKoI1Ha1n3WeEZJUBKe2tgqDR80rrE6Ond0MwC5kNepfKwog/z ++LCvCKUG+godU78HZb+6Z3Fj6q3O1elm2SDVIUMvy6Z8aPfYsmxMZXu8TX46ka7V +Iu4NG7QCYPmS4wQ2liLktve140QhMr7/lTxsWoUCgYBgKpI8tjX87+TvsQRPAct4 +86ZWXKVz48VAHe6Qn8OcXN1pQ2L5lP3OPfvKACDFOkj/GA10p1KyUd46AvLh18GO +L84DlrLoJLNjtjyLlBbg4nOAWahbMmY0Fq76Nc6IsJ2Qv2dip3bjHa40eXCWVnb3 +ji3agQYBulcJ4vjALsvejwKBgQCJQPuMGHb0a5TMPcHfbDzDZlYg0aU1WSubnHhE +DiBsaGyWq6wotby8RZqMXjfCrsUzUdCYw3Zyt8oOLuqsp5sGHCty7rP6pbrbhkRC +z+nQeDS2Gx9FmXSTE8EtZDPosqlxJObQp2IkZxN9KkP2zFGuhl8bo1oOtSw7SUDl +qxXvGQKBgQDPRhUKxKk+ApDRLImWTjuG6PCBi2XhVXd+HIE6JnUgnDZSNOn2WJqH +IVWxIc/OAlg0e3rRWCbmwJAjHhZZ+pCp1gju12SjiVzBri2KIxOhVj8IucqvpIyr +kOSwd33TlO0aRq0gM3xHvLUsb31sjHJeVTTrgiKbwAVcYMzLrjoJXg== -----END RSA PRIVATE KEY----- diff --git a/certifikaty/server/vygenerovany_certifikat.pem b/certifikaty/server/vygenerovany_certifikat.pem index 4369bd4..26340ce 100644 --- a/certifikaty/server/vygenerovany_certifikat.pem +++ b/certifikaty/server/vygenerovany_certifikat.pem @@ -1,18 +1,18 @@ -----BEGIN CERTIFICATE----- -MIIC9TCCAl6gAwIBAgIQbFmaYwjF3/SehWXgHj8HwjANBgkqhkiG9w0BAQsFADBz +MIIC9TCCAl6gAwIBAgIQbqhXQUhaG0nVXxRDTCpRKzANBgkqhkiG9w0BAQsFADBz MQswCQYDVQQGEwJTSzEKMAgGA1UECAwBLTEPMA0GA1UEBwwGS29zaWNlMREwDwYD VQQKDAhBdXRvcml0YTESMBAGA1UEAwwJbG9jYWwuZGV2MSAwHgYJKoZIhvcNAQkB -FhFhdXRvcml0YUB0dWtlLmNvbTAiGA8yMDIwMDMxODEyMjkyOVoYDzIwMjUwMzE4 -MTIyOTI5WjB3MQswCQYDVQQGEwJTUjEKMAgGA1UECAwBLTEPMA0GA1UEBwwGS29z +FhFhdXRvcml0YUB0dWtlLmNvbTAiGA8yMDIwMDUxNjA5NTYyMVoYDzIwMjUwNTE2 +MDk1NjIxWjB3MQswCQYDVQQGEwJTUjEKMAgGA1UECAwBLTEPMA0GA1UEBwwGS29z aWNlMQowCAYDVQQKDAEtMQowCAYDVQQLDAEtMRIwEAYDVQQDDAlsb2NhbC5kZXYx HzAdBgkqhkiG9w0BCQEWEHNlcnZlckBzZXJ2ZXIuc2swggEiMA0GCSqGSIb3DQEB -AQUAA4IBDwAwggEKAoIBAQC2anE0gd6zuFQw2T+PLZg9KHlm9+TjrkHXc3zxFw4g -uNgGxwi4TMGoUMVyUsEWtBHYkF/Zx5fWD292RItXd5GsrvyUjOgOF9BMfAh8MkHa -HqQiFOzw7LAwbzCiNU82ZIWAbQvivnLXTmygFPbB+LlDcCLS3U738x46rrQaHuGe -wNj4BBDSMVqAeN3z966Yf1YIXIe4rPQivRTGgtJYUfjL4b9sB6dgNmBUzmI5DRil -olEwkHm9AuZ2mwfHcBUvCc24iN9q8lY6fjAqIQo0+NFYhvi2jibvUTy6dOxEUbKg -R14mye/vF+fNaT2NHMVBHqYxA0dnPw3nQQMOuR3WCt9zAgMBAAEwDQYJKoZIhvcN -AQELBQADgYEAiBxxdJm1VUxUVsY31LMpe3pIbicSVi+91rtsii02tbMEBl8o4UKQ -xfJyZaWQW0gZ3rcgcquYU/SKpsjiYwzPjx10IX8htHibmgSS4EC5L5poKBncjSmC -tWmJEILZl9dXPUrIOuJOa4hBeK54chVFsszm2mhbJsYGvOA8z0gcc94= +AQUAA4IBDwAwggEKAoIBAQCUm8dUUfjwuW/2ppSh+HlbLw+inAHk9Ha9N0So3Yfn +45DYWY9c/ZJjLeyagu5H4mHQaRHYkqVb/QEKlacCvA3RqWdTX6IKO+eQhZ9YEpMV +sO/xPzs2EAmqM8R3E2ek7mj3UPEueJMEYy6cr8vH83ILeMLtrjFUJG4T2GexKsIH +KLHAep0yKo4oEfudtpB//jm2NgYdUjuKbGogEUWElS4tQnNEvZ2bC3AN1TB9Wz81 +w7/rR+ekiOVxM19bw2nKs7QX1bG1+PbJPafqj7ysuSIkGnn0Exkqt4QDl6YQtbn9 +JwQYgbAV1lNjSEuSMihqGkptSl89z10xa2LyXm0Vbs2fAgMBAAEwDQYJKoZIhvcN +AQELBQADgYEAiQRgEyTvSfRdTFm4UKijgk5xMJGBCF7pj9H8CWmCl+Y3F2ztoyxw +iJ+qtNTA1jlQiCVKWO4OfysihqVT2jeba9UO7WMSU3+k5B+O/XRJldDKDbiefye8 +1V/qo/2i00vbf1PV8wHfGHdav96fWm9Gla1BYvxHe8xiUFp/3IGqRIE= -----END CERTIFICATE----- diff --git a/certifikaty/server/vygenerovany_kluc.key b/certifikaty/server/vygenerovany_kluc.key index 3825df2..d3f2c89 100644 --- a/certifikaty/server/vygenerovany_kluc.key +++ b/certifikaty/server/vygenerovany_kluc.key @@ -1,27 +1,27 @@ -----BEGIN RSA PRIVATE KEY----- -MIIEpAIBAAKCAQEAtmpxNIHes7hUMNk/jy2YPSh5Zvfk465B13N88RcOILjYBscI -uEzBqFDFclLBFrQR2JBf2ceX1g9vdkSLV3eRrK78lIzoDhfQTHwIfDJB2h6kIhTs -8OywMG8wojVPNmSFgG0L4r5y105soBT2wfi5Q3Ai0t1O9/MeOq60Gh7hnsDY+AQQ -0jFagHjd8/eumH9WCFyHuKz0Ir0UxoLSWFH4y+G/bAenYDZgVM5iOQ0YpaJRMJB5 -vQLmdpsHx3AVLwnNuIjfavJWOn4wKiEKNPjRWIb4to4m71E8unTsRFGyoEdeJsnv -7xfnzWk9jRzFQR6mMQNHZz8N50EDDrkd1grfcwIDAQABAoIBAAja3JPymfTvcGbO -pPSLqhA4nsFjgeDrh0FbgdJ85AVX87n11Mky21O9rVgCBw2AaugFr3bK5ualPoE8 -jTxkZCtAc1JiugEKduS/lfSGxrDn5op2VD99vdpxYKhUc3vtypfpXeJWjGHslKlQ -sInJ9nRSRTPR5RDJjyDEyklaURQmWLHAs3JcZ6pRkpLvPo8MJP5iVfoXze0QZg+4 -Zvs+xAtpoy9I06MSi+J4e6EzLTRFXXkmkVHxMK1wKw9yNl0tl1+eQ3i5lzJmiTev -noRVkmBRhATcdEnlSJVdiUOrZAmGS1As+IQiLrPyO7AKG7Ukr2lJHhLm/C6YblzR -QeHefIECgYEA5hiY4uJZxAidSzBpq/1Osan66uYC3e5FYm9KSvYQbe6GgLTM0e4d -3CRbEYLBTVf4BCtRUFyMRMMvzvme+oFZf38QdFaxdnyYwmzA1+Ls7LsZjPYF2oJE -b+oMi1UEJs8jXJkQ5tuI5SP/kasBxPRi/T1WANpduPzQCzzvjs6xxrkCgYEAyvOx -JRtqM26+2rdkQrClRAf1HFv2ej0vjyOhIuEK4WG6NFdqqm3zQzIHvxaGuAkBfyNk -g+QEQvbx8PLx5bmaDTcV48Hf40h8a4W7HFRK3sa+Zk2w+ih4iW+RC6XBOyqmTJEi -IGCXlIP/6RJZkrT9YrsyzI6edHCdatgKd9EHQYsCgYBDW3X+DQb8JQ1uwlhc2cVc -qwbiFr1GHIdBPpUABrJejBHhwYun9M3W8Omb4awWqSbYiZm/Lah+RKlNLLPGX3FE -qny1od9HcUgCunVlfW+gCVF8e1TRV4sTO++6JgQWHFMcu05AVonnkjcxfF8DOgt0 -WK1BiKshCRkaARebtZRDOQKBgQCGWxG42Q9TgUtEDAiJxduC0CnKXm8ruXnUruer -6YOEdWgJ4p0wup1CrMpIDKefCgc9nbabQcY4drbwpkTRqi979C2/m8eV9ZS4sc2P -EZaHKNc/bstssIIrqfpB1be4baGuKp6HBKsUnNY7+/PklYDxbbBRj1EDENKFuwQj -EfRVxQKBgQCIRBRzvyRJXmYMfvFXmDWeTe3koj+hjT3O8jXvojURsiBOL714Avsl -7ENawNWqWUC1ZbfsLmB5G0BrQ7GgXHBXAE1lXEXLBfxt1n43s9sUsuZMKcrw20l7 -W+NvLcec5eeXdxetkqOTqi7PG4tHMDeRKlLdgo+MumjI+Muw32iVqw== +MIIEowIBAAKCAQEAlJvHVFH48Llv9qaUofh5Wy8PopwB5PR2vTdEqN2H5+OQ2FmP +XP2SYy3smoLuR+Jh0GkR2JKlW/0BCpWnArwN0alnU1+iCjvnkIWfWBKTFbDv8T87 +NhAJqjPEdxNnpO5o91DxLniTBGMunK/Lx/NyC3jC7a4xVCRuE9hnsSrCByixwHqd +MiqOKBH7nbaQf/45tjYGHVI7imxqIBFFhJUuLUJzRL2dmwtwDdUwfVs/NcO/60fn +pIjlcTNfW8NpyrO0F9Wxtfj2yT2n6o+8rLkiJBp59BMZKreEA5emELW5/ScEGIGw +FdZTY0hLkjIoahpKbUpfPc9dMWti8l5tFW7NnwIDAQABAoIBAFcFlcbprZYBcPAF +ghoK772WpFg7dNyGzxVkTN95wkDnQIWAhHQWxOcxGFEuhKwxg8fQDzQ8Q3rHgBmb +os32Iz14LtpisPe/No2pwbKIRfs4vnkN5vV0lMRHRi/YfCPXvD2+90yYLLcwATad +tv4ir9DJ6ZPXImm8X31dhvL3L+GSbOL24V4N6ZefMC1I87h6Ntzse01WSF7uq/S0 +DnGJd0PX2WvcN7c9fBDfvdtWGO4HhmdCKHqigguF+PLAXXUvqEO3HTaQEot7J9XF +ErkOp5nlOkuM5Ksu08f5GSquG14anjRu1OFB/fJ/k1gVGJUfxXeCACYIYxH9KrqE +yDnCh0ECgYEA0bpAnR9Y0ONdKhn5VK/BycIYx9lldUnEvAu4aO7zyiMmt5+bKBc9 +6Vy+UqCTA8WuTA4LHjL+uSPbp+ad0wS/67fcRfROjM+dH4ADHm6oUBPhOQ1BT1Rj +53oTdEg/KO/4o2dnAIKc1i0B0O37ls4Ay7uiKgp2MqeYEAspvvgB+v8CgYEAtWVs +1c8CmP1g3pYAqtZJbD5nMVNRH4ZL4sFUpRLuyP3A5ZXf4co8rWYy9xxA+d78uLhg +1/QeN5odfDsLFA7VzT+oufV2IqDxT/8J8XivWeNCAsXHR9oor53ZcBvI2VHt2a8W +5sfpCiBg8wXDEYnK/ZhD8YGohr6TU8/9DGvQTWECgYEAk755tjZXAxComPgjRR1r +jw5FFsR3TODizvYSuxladJO+uqydSOjWnIbRLLQh3Q5tcvaRrnyOJS61ltpHZFh8 +OzoS2tT4YQoAzigICnA58e+PQfmsgI4asv60pb4fgF9M8Q/u59UbV2XtWZnNGreU +p/FOk/86tQSLgwHaLsXX31ECgYAaJ0J23T7pofaagRQdjYHOinzEXtfebLV6Pxee +KUmmTvfF4kMCQe9XrNmCSV+Q5zaWx3anDDpjF+RSagzh2nW2/wurrBlZSs0gFIxx +dU4K7rowviVKVcjx8RdNk6P0uVxKu3TY10/hNuPjhhwm5jAPOinpoyESNF33gpBg +fxbsYQKBgEkaKa8yXV2MibBRA97jaP8QFpE/j66ZTHrvCTA5YcDy4jlfMiWaEUAo +eIGGYUBpe5iwjWTTJa2HNvBzlHqbrb580Vj0sCEUcUzf0vHRPIEJp5pnVDRJCFmQ +nvs5EgJIXpaW6DZ8hgfGQecoNGjYGjo2yl4mHhT5KiCcCZw9NKEZ -----END RSA PRIVATE KEY----- diff --git a/kniznica/komunikacia.c b/kniznica/komunikacia.c index ab20931..bf3a001 100644 --- a/kniznica/komunikacia.c +++ b/kniznica/komunikacia.c @@ -9,20 +9,15 @@ #include "komunikacia.h" #include "kryptografia.h" -int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, const char* cesta, nastavenia_aplikacie *nastavenia) +int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, const char* cesta, nastavenia_aplikacie *nastavenia, int velkost_bloku_dat) { int uspech; - - //odoslanie nazvu (resp. cesty) suboru - uspech = 0; - while(uspech < VELKOST_CESTY) + + while(wolfSSL_write(ssl, cesta, SPRAVA_VELKOST_BUFFERA) != SPRAVA_VELKOST_BUFFERA) { - uspech = wolfSSL_write(ssl, cesta, VELKOST_CESTY); - if(uspech <= 0) - { - fprintf(stderr, "Nastala chyba pri posielani dat o subore.\n"); - return -1; - } + if(wolfSSL_want_write(ssl)) continue; + fprintf(stderr, "Nastala chyba pri posielani nazvu suboru\n"); + return -1; } //otvorenie suboru na citanie @@ -40,123 +35,143 @@ int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, const char* cesta, nastavenia_a //nastavi ukazovatel na koniec suboru //a zisti velkost suboru fseek(subor, 0, SEEK_END); - int velkost = (int)ftell(subor); - char velkost_suboru[VELKOST_SUBOR]; - sprintf(velkost_suboru, "%ld", velkost); - printf("Velkost suboru: %s bajtov\n", velkost_suboru); - uspech = 0; - while(uspech < VELKOST_SUBOR) + int velkost_suboru = (int)ftell(subor); + char velkost_suboru_retazec[SPRAVA_VELKOST_BUFFERA]; + sprintf(velkost_suboru_retazec, "%d", velkost_suboru); + printf("Velkost suboru: %s bajtov\n", velkost_suboru_retazec); + + while(wolfSSL_write(ssl, velkost_suboru_retazec, SPRAVA_VELKOST_BUFFERA) != SPRAVA_VELKOST_BUFFERA) { - uspech = wolfSSL_write(ssl, velkost_suboru, VELKOST_SUBOR); - if(uspech <= 0) - { - fprintf(stderr, "Nastala chyba pri posielani dat o velkosti suboru.\n"); - return -1; - } + if(wolfSSL_want_write(ssl)) continue; + fprintf(stderr, "Nastala chyba pri posielani velkosti suboru\n"); + return -1; } //nastavi ukazovatel na zaciatok suboru //a nacita data zo suboru do pola - unsigned char* pole = calloc(velkost, sizeof(unsigned char)); - if(pole == NULL) + unsigned char* data = calloc(velkost_suboru, sizeof(unsigned char)); + if(data == NULL) { - fprintf(stderr, "Nepodarilo sa dynamicky alokovat pamat pre pole\n"); + fprintf(stderr, "Nepodarilo sa dynamicky alokovat pamat pre pole data,\ndo ktoreho sa nacita obsah suboru\n"); return -1; } fseek(subor, 0, SEEK_SET); - fread((unsigned char*)pole, 1, velkost, subor); + fread((unsigned char*)data, 1, velkost_suboru, subor); //posielanie jednotlivych bajtov + unsigned char* data_ukazovatel = data; uspech = 0; - while(uspech < velkost) + int ostava_poslat = velkost_suboru; + for(int i = 0; i < (velkost_suboru/velkost_bloku_dat) + 1; ++i) { - uspech = wolfSSL_write(ssl, pole, velkost); - if(uspech <= 0) + if(ostava_poslat > velkost_bloku_dat) { - fprintf(stderr, "Nastala chyba pri posielani suboru.\n"); - return -1; + while(wolfSSL_write(ssl, data_ukazovatel, velkost_bloku_dat) != velkost_bloku_dat) + { + if(wolfSSL_want_write(ssl)) continue; + fprintf(stderr, "Nastala chyba pri posielani suboru\n"); + return -1; + } } + else + { + uspech = 0; + while(wolfSSL_write(ssl, data_ukazovatel, ostava_poslat) != ostava_poslat) + { + if(wolfSSL_want_write(ssl)) continue; + fprintf(stderr, "Nastala chyba pri posielani suboru\n"); + return -1; + } + } + data_ukazovatel += velkost_bloku_dat; + ostava_poslat -= velkost_bloku_dat; } printf("Subor bol uspesne odoslany.\n"); //generovanie a poslanie kontrolneho suctu serveru pre kontrolu unsigned char* kontrolny_sucet; int velkost_kontrolneho_suctu; - kontrolny_sucet = generovat_kontrolny_sucet_suboru(nastavenia, cesta, velkost, &velkost_kontrolneho_suctu); - - uspech = 0; - while(uspech < velkost_kontrolneho_suctu) + kontrolny_sucet = generovat_kontrolny_sucet_suboru(nastavenia, cesta, velkost_suboru, &velkost_kontrolneho_suctu); + + while(wolfSSL_write(ssl, kontrolny_sucet, velkost_kontrolneho_suctu) != velkost_kontrolneho_suctu) { - uspech = wolfSSL_write(ssl, kontrolny_sucet, velkost_kontrolneho_suctu); + if(wolfSSL_want_write(ssl)) continue; + fprintf(stderr, "Nastala chyba pri posielani kontrolneho suctu\n"); + return -1; } + free(kontrolny_sucet); fclose(subor); return 0; } } -int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastavenia) +int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastavenia, int velkost_bloku_dat) { int uspech; //prijem dat o subore - char* cesta = calloc(VELKOST_CESTY, sizeof(char)); - char* velkost_suboru = calloc(VELKOST_SUBOR, sizeof(char)); + char* cesta = calloc(SPRAVA_VELKOST_BUFFERA, sizeof(char)); + char* velkost_suboru_retazec = calloc(SPRAVA_VELKOST_BUFFERA, sizeof(char)); - uspech = 0; - while(uspech < VELKOST_CESTY) + while(wolfSSL_read(ssl, cesta, SPRAVA_VELKOST_BUFFERA) != SPRAVA_VELKOST_BUFFERA) { - uspech = wolfSSL_read(ssl, cesta, VELKOST_CESTY); - if(uspech <= 0) - { - fprintf(stderr, "Nastala chyba pri prijati dat o subore\n"); - return -1; - } + if(wolfSSL_want_read(ssl)) continue; + fprintf(stderr, "Nastala chyba pri prijati nazvu suboru\n"); + return -1; } printf("Prebieha prijimanie suboru %s\n", cesta); //ziskanie informacie od klienta o velkosti odoslaneho suboru - uspech = 0; - while(uspech < VELKOST_SUBOR) + while(wolfSSL_read(ssl, velkost_suboru_retazec, SPRAVA_VELKOST_BUFFERA) != SPRAVA_VELKOST_BUFFERA) { - uspech = wolfSSL_read(ssl, velkost_suboru, VELKOST_SUBOR); - if(uspech <= 0) - { - fprintf(stderr, "Nastala chyba pri prijati velkosti suboru\n"); - return -1; - } + if(wolfSSL_want_read(ssl)) continue; + fprintf(stderr, "Nastala chyba pri prijati velkosti suboru\n"); + return -1; } - int velkost = (int)atol(velkost_suboru); - if(velkost < 1) + int velkost_suboru = (int)atol(velkost_suboru_retazec); + if(velkost_suboru <= 0) { - printf("Nastala chyba pri prijati suboru\n"); + printf("Bola prijata informacia o velkosti suboru s hodnotu mensou nez 0\nPravdepodobne nastala chyba pri prenose\n"); return -1; } else { - printf("Velkost suboru: %s bajtov\n", velkost_suboru); + printf("Velkost suboru: %s bajtov\n", velkost_suboru_retazec); } - //prijem jednotlivych bajtov - unsigned char* pole = calloc(velkost, sizeof(unsigned char)); - if(pole == NULL) + unsigned char* data = calloc(velkost_suboru, sizeof(unsigned char)); + if(data == NULL) { - fprintf(stderr, "Nepodarilo sa dynamicky alokovat pamat pre pole\n"); + fprintf(stderr, "Nepodarilo sa dynamicky alokovat pamat pre pole data\ndo ktoreho sa zapisu prijate data\n"); return -1; } - unsigned char* pole_uk = pole; - - uspech = 0; - for(int i = 0; i < (velkost/16384) + 1; ++i) + + unsigned char* data_ukazovatel = data; + int ostava_prijat = velkost_suboru; + for(int i = 0; i < (velkost_suboru/velkost_bloku_dat) + 1; ++i) { - uspech = wolfSSL_read(ssl, pole_uk, velkost); - pole_uk += 16384; - if(uspech <= 0) + if(ostava_prijat > velkost_bloku_dat) + { + while(wolfSSL_read(ssl, data_ukazovatel, velkost_bloku_dat) != velkost_bloku_dat) { - fprintf(stderr, "Nastala chyba pri posielani suboru.\n"); + if(wolfSSL_want_read(ssl)) continue; + fprintf(stderr, "Nastala chyba pri prijimani suboru\n"); return -1; } + } + else + { + while(wolfSSL_read(ssl, data_ukazovatel, ostava_prijat) != ostava_prijat) + { + if(wolfSSL_want_read(ssl)) continue; + fprintf(stderr, "Nastala chyba pri prijimani suboru\n"); + return -1; + } + } + data_ukazovatel += velkost_bloku_dat; + ostava_prijat -= velkost_bloku_dat; } printf("Subor bol uspesne prijaty.\n"); @@ -165,25 +180,34 @@ int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastaveni int velkost_kontrolneho_suctu; FILE *subor = fopen(cesta, "wb+"); - int n = fwrite((unsigned char*)pole, 1, velkost, subor); + int pocet_zapisanych_bajtov = fwrite((unsigned char*)data, 1, velkost_suboru, subor); + if(pocet_zapisanych_bajtov <= 0) + { + fprintf(stderr, "Nepodarilo sa zapisat do suboru obsah prijateho suboru\n"); + return -1; + } + else if(pocet_zapisanych_bajtov < velkost_suboru) + { + fprintf(stderr, "Nepodarilo sa zapisat do suboru cely obsah prijateho suboru\n"); + return -1; + } + else + { + printf("Do suboru %s bolo zapisanych %d bajtov\n", cesta, pocet_zapisanych_bajtov); + } fclose(subor); - kontrolny_sucet = generovat_kontrolny_sucet_suboru(nastavenia, cesta, velkost, &velkost_kontrolneho_suctu); + kontrolny_sucet = generovat_kontrolny_sucet_suboru(nastavenia, cesta, velkost_suboru, &velkost_kontrolneho_suctu); - //prijem hashu, ktory vypocital server + //prijem kontrolneho suctu, ktory vypocital server char* prijaty_kontrolny_sucet = calloc(velkost_kontrolneho_suctu, sizeof(char)); - - uspech = 0; - while(uspech != velkost_kontrolneho_suctu) + + while(wolfSSL_read(ssl, (char*)prijaty_kontrolny_sucet, velkost_kontrolneho_suctu) != velkost_kontrolneho_suctu) { - uspech = wolfSSL_read(ssl, (char*)prijaty_kontrolny_sucet, velkost_kontrolneho_suctu); - if(uspech <= 0) - { - fprintf(stderr, "Nastala chyba pri prijati kontrolneho suctu.\n"); - free(prijaty_kontrolny_sucet); - return -1; - } + if(wolfSSL_want_read(ssl)) continue; + fprintf(stderr, "Nastala chyba pri prijati kontrolneho suctu\n"); + return -1; } //kontrola ci sa prijaty a vypocitany kontrolny sucet suboru zhoduju @@ -199,7 +223,7 @@ int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastaveni } free(cesta); - free(velkost_suboru); + free(velkost_suboru_retazec); free(kontrolny_sucet); free(prijaty_kontrolny_sucet); return 0; @@ -420,14 +444,19 @@ int rs232_prijat_spravu(int cislo_rozhrania, const char* komunikacny_subor) FILE* subor = fopen(komunikacny_subor, "ab+"); int uspech = 0; - int prebieha_nacitanie_velkosti_spravy = 0; - int prebieha_nacitanie_kontrolneho_suctu = 0; - int prebieha_nacitanie_dat = 0; + stav_nacitania stav; + stav = NEPREBIEHA_NACITANIE; unsigned char znak; //mnozstvo nacitanych dat int nacitane_data = 0; + //kontrolny vzor ktory jednoznacne identifikuje zaciatok spravy + unsigned char kontrolny_vzor[] = {0xAA, 0xAA, 0xAA, 0xAA}; + //urcuje kolko bajtov z kontrolneho vzoru + //uz bolo prijatych z celkoveho poctu (4) + int kontrolny_vzor_pozicia = 0; + //velkost spravy, ktora sa bude prijmat int velkost_spravy = 0; unsigned char velkost_spravy_hex[4]; @@ -443,70 +472,68 @@ int rs232_prijat_spravu(int cislo_rozhrania, const char* komunikacny_subor) int kontrolny_sucet_pozicia = 0; unsigned char* prijate_data; - - //kontrolny vzor ktory jednoznacne identifikuje zaciatok spravy - unsigned char kontrolny_vzor[] = {0xAA, 0xAA, 0xAA, 0xAA}; - int kontrolny_vzor_pozicia = 0; //aktualna pozicia v kontrolnom vzore - int velkost_kontrolneho_vzoru = sizeof(kontrolny_vzor)/sizeof(kontrolny_vzor[0]); - while(1) + while(stav != NACITANIE_UKONCENE) { uspech = RS232_PollComport(cislo_rozhrania, &znak, 1); if(uspech > 0) { - //nacitanie kontrolneho vzoru - if(!prebieha_nacitanie_velkosti_spravy && !prebieha_nacitanie_dat && !prebieha_nacitanie_kontrolneho_suctu && - znak == kontrolny_vzor[kontrolny_vzor_pozicia]) + switch(stav) { - kontrolny_vzor_pozicia++; - if(kontrolny_vzor_pozicia == 4) - { - prebieha_nacitanie_velkosti_spravy = 1; - kontrolny_vzor_pozicia = 0; - } - } - //nacitanie velkosti spravy - else if(!prebieha_nacitanie_dat && prebieha_nacitanie_velkosti_spravy) - { - velkost_spravy_hex[velkost_spravy_pozicia] = znak; - velkost_spravy_pozicia++; - if(velkost_spravy_pozicia == 4) - { - velkost_spravy = (uint32_t)velkost_spravy_hex[0] << 24 | (uint32_t)velkost_spravy_hex[1] << 16 | - (uint32_t)velkost_spravy_hex[2] << 8 | (uint32_t)velkost_spravy_hex[3]; - prebieha_nacitanie_kontrolneho_suctu = 1; - prebieha_nacitanie_velkosti_spravy = 0; - - prijate_data = calloc(velkost_spravy, sizeof(unsigned char)); - if(prijate_data == NULL) + case NEPREBIEHA_NACITANIE: + if(znak == kontrolny_vzor[kontrolny_vzor_pozicia]) { - fprintf(stderr, "Nepodarilo sa dynamicky alokovat pamat pre prijate_data\n"); - return -1; + kontrolny_vzor_pozicia++; } - } - } - //nacitanie kontrolneho vzoru - else if(!prebieha_nacitanie_dat && prebieha_nacitanie_kontrolneho_suctu) - { - kontrolny_sucet_hex[kontrolny_sucet_pozicia] = znak; - kontrolny_sucet_pozicia++; - if(kontrolny_sucet_pozicia == 4) - { - kontrolny_sucet = (uint32_t)kontrolny_sucet_hex[0] << 24 | (uint32_t)kontrolny_sucet_hex[1] << 16 | - (uint32_t)kontrolny_sucet_hex[2] << 8 | (uint32_t)kontrolny_sucet_hex[3]; - prebieha_nacitanie_dat = 1; - prebieha_nacitanie_velkosti_spravy = 0; - } - } - //nacitanie dat - else - { - if(prebieha_nacitanie_dat) - { + if(kontrolny_vzor_pozicia == 4) + { + kontrolny_vzor_pozicia = 0; + stav = PREBIEHA_NACITANIE_VELKOSTI_SPRAVY; + } + break; + case PREBIEHA_NACITANIE_VELKOSTI_SPRAVY: + velkost_spravy_hex[velkost_spravy_pozicia] = znak; + velkost_spravy_pozicia++; + if(velkost_spravy_pozicia == 4) + { + velkost_spravy = (uint32_t)velkost_spravy_hex[0] << 24 | (uint32_t)velkost_spravy_hex[1] << 16 | + (uint32_t)velkost_spravy_hex[2] << 8 | (uint32_t)velkost_spravy_hex[3]; + velkost_spravy_pozicia = 0; + stav = PREBIEHA_NACITANIE_KONTROLNEHO_SUCTU; + + //dynamicka alokacia pola s velkostou, ktora bola prijata + //do neho bude zapisana prijata sprava + prijate_data = calloc(velkost_spravy, sizeof(unsigned char)); + if(prijate_data == NULL) + { + fprintf(stderr, "Nepodarilo sa dynamicky alokovat pamat pre prijate_data\n"); + return -1; + } + } + break; + case PREBIEHA_NACITANIE_KONTROLNEHO_SUCTU: + kontrolny_sucet_hex[kontrolny_sucet_pozicia] = znak; + kontrolny_sucet_pozicia++; + if(kontrolny_sucet_pozicia == 4) + { + kontrolny_sucet = (uint32_t)kontrolny_sucet_hex[0] << 24 | (uint32_t)kontrolny_sucet_hex[1] << 16 | + (uint32_t)kontrolny_sucet_hex[2] << 8 | (uint32_t)kontrolny_sucet_hex[3]; + kontrolny_sucet_pozicia = 0; + stav = PREBIEHA_NACITANIE_DAT; + } + break; + case PREBIEHA_NACITANIE_DAT: prijate_data[nacitane_data] = znak; nacitane_data += uspech; - if(nacitane_data == velkost_spravy) break; - } + if(nacitane_data == velkost_spravy) + { + stav = NACITANIE_UKONCENE; + } + break; + default: + //tento stav by nemal nikdy nastat + fprintf(stderr, "Nepodarilo sa urcit stav nacitania spravy pomocou RS232\n"); + return -1; } } } @@ -531,7 +558,7 @@ int rs232_prijat_spravu(int cislo_rozhrania, const char* komunikacny_subor) } else { - printf("Sprava neprisla v poriadku"); + fprintf(stderr, "Sprava neprisla v poriadku"); return -1; } diff --git a/kniznica/komunikacia.h b/kniznica/komunikacia.h index f536d95..5db3201 100644 --- a/kniznica/komunikacia.h +++ b/kniznica/komunikacia.h @@ -17,8 +17,9 @@ #include "kryptografia.h" #include "../externe_kniznice/teuniz_rs232/rs232.h" -#define VELKOST_CESTY 64 //velkost retazca, kt. uklada lokaciu suboru -#define VELKOST_SUBOR 32 //velkost retazca, kt. uklada velkost prenasaneho suboru +//velkost buffrov ktore ukladaju doplnujuce data pri komunikacii +//napr. velkost suboru, cestu ku suboru a ine +#define SPRAVA_VELKOST_BUFFERA 64 #if defined(_WIN32) //makro ktore urcuje win distribuciu ak nieje detekovana @@ -76,6 +77,12 @@ int cakat_na_komunikaciu(int cislo_portu); // RS232 KOMUNIKACNY KANAL // ///////////////////////////// +typedef enum stav_nacitania { + NEPREBIEHA_NACITANIE, PREBIEHA_NACITANIE_VELKOSTI_SPRAVY, PREBIEHA_NACITANIE_KONTROLNEHO_SUCTU, + PREBIEHA_NACITANIE_DAT, NACITANIE_UKONCENE +} stav_nacitania; + + /** * rs232_otvorit_rozhranie: realizuje otvorenie RS232 serioveho rozhrania * @parameter int cislo_rozhrania: cislo RS232 serioveho rozhrania @@ -119,17 +126,19 @@ int rs232_prijat_spravu(int cislo_rozhrania, const char* komunikacny_subor); * @parameter WOLFSSL_CTX* ctx : ukazuje na WOLFSSL_CTX strukturu * @parameter char* cesta: ukazuje na retazec, ktory reprezentuje cestu k suboru * @parameter nastavenia_aplikacie* nastavenia: reprezentuje nastavenia aplikacie: server alebo klient + * @parameter int velkost_bloku_dat: velkost dat po ktorych sa budu data posielat * @vrati int : operacia bola uspesna(0), neuspesna(-1) */ -int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, const char* cesta, nastavenia_aplikacie* nastavenia); +int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, const char* cesta, nastavenia_aplikacie* nastavenia, int velkost_bloku_dat); /** * prijat_subor: realizuje prijem suboru * @parameter WOLFSSL* ssl : ukazuje na aktualnu relaciu * @parameter WOLFSSL_CTX* ctx : ukazuje na WOLFSSL_CTX strukturu * @parameter nastavenia_aplikacie* nastavenia: reprezentuje nastavenia aplikacie: server alebo klient + * @parameter int velkost_bloku_dat: velkost dat po ktorych sa budu data prijimat * @vrati int : operacia bola uspesna(0), neuspesna(-1) */ -int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastavenia); +int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastavenia, int velkost_bloku_dat); #endif \ No newline at end of file diff --git a/kniznica/kryptografia.c b/kniznica/kryptografia.c index 919e9ac..0b9a767 100644 --- a/kniznica/kryptografia.c +++ b/kniznica/kryptografia.c @@ -71,7 +71,7 @@ void zobraz_sifru(WOLFSSL* ssl) printf ("Pouzita sifra: %s\n", wolfSSL_get_cipher(ssl)); } -int generovat_rsa_certifikat(int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email) +int generovat_rsa_certifikat(const char* subor_certifikat, const char* subor_kluc, int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email) { int uspech = 0; @@ -151,7 +151,7 @@ int generovat_rsa_certifikat(int pocet_bitov, int exponent, int algoritmus, char pem_kluc_velkost = uspech; //zapis vygenerovaneho klucu do suboru - subor = fopen("../../certifikaty/vygenerovany_kluc.key", "wb"); + subor = fopen(subor_kluc, "wb+"); fwrite(pem_kluc, 1, pem_kluc_velkost, subor); fclose(subor); @@ -204,8 +204,8 @@ int generovat_rsa_certifikat(int pocet_bitov, int exponent, int algoritmus, char } pem_certifikat_velkost = uspech; - //zapis vygenerovaneho klucu do suboru - subor = fopen("../../certifikaty/vygenerovany_certifikat.pem", "wb"); + //zapis vygenerovaneho certifikatu do suboru + subor = fopen(subor_certifikat, "wb+"); fwrite(pem_certifikat, 1, pem_certifikat_velkost, subor); fclose(subor); @@ -214,7 +214,7 @@ int generovat_rsa_certifikat(int pocet_bitov, int exponent, int algoritmus, char return 0; } -int generovat_ecc_certifikat(int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email) +int generovat_ecc_certifikat(const char* subor_certifikat, const char* subor_kluc, int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email) { int uspech = 0 ; @@ -293,7 +293,7 @@ int generovat_ecc_certifikat(int pocet_bitov, ecc_curve_id kluc_krivka, int algo pem_kluc_velkost = uspech; //zapis vygenerovaneho kluca do suboru - subor = fopen("../certifikaty/vygenerovany_kluc.key", "wb"); + subor = fopen(subor_kluc, "wb+"); fwrite(pem_kluc, 1, pem_kluc_velkost, subor); fclose(subor); @@ -347,14 +347,14 @@ int generovat_ecc_certifikat(int pocet_bitov, ecc_curve_id kluc_krivka, int algo pem_certifikat_velkost = uspech; //zapis vygenerovaneho klucu do suboru - subor = fopen("../certifikaty/vygenerovany_certifikat.pem", "wb"); + subor = fopen(subor_certifikat, "wb+"); fwrite(pem_certifikat, 1, pem_certifikat_velkost, subor); fclose(subor); return 0; } -int vygenerovat_rsa_ziadost(int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email) +int vygenerovat_rsa_ziadost(const char* subor_ziadost, const char* subor_kluc, int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email) { int uspech = 0; @@ -392,6 +392,11 @@ int vygenerovat_rsa_ziadost(int pocet_bitov, int exponent, int algoritmus, char* return -1; } + FILE* subor = fopen(subor_kluc, "wb+"); + fwrite(pem_kluc, 1, pem_kluc_velkost, subor); + fclose(subor); + printf("RSA kluc bol uspesne vygenerovany\n"); + //premenne pre ukladanie dat ziadosti Cert ziadost; unsigned char der_ziadost[VELKOST_BUFFERA]; @@ -429,9 +434,13 @@ int vygenerovat_rsa_ziadost(int pocet_bitov, int exponent, int algoritmus, char* fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM so ziadostou.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech)); return -1; } + pem_ziadost_velkost = uspech; + subor = fopen(subor_ziadost, "wb+"); + fwrite(pem_ziadost, 1, pem_ziadost_velkost, subor); + fclose(subor); } -int vygenerovat_ecc_ziadost(int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email) +int vygenerovat_ecc_ziadost(const char* subor_ziadost, const char* subor_kluc, int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email) { int uspech = 0; @@ -469,6 +478,11 @@ int vygenerovat_ecc_ziadost(int pocet_bitov, ecc_curve_id kluc_krivka, int algor return -1; } + FILE* subor = fopen(subor_kluc, "wb+"); + fwrite(pem_kluc, 1, pem_kluc_velkost, subor); + fclose(subor); + printf("ECC kluc bol uspesne vygenerovany\n"); + //premenne pre ukladanie dat ziadosti Cert ziadost; unsigned char der_ziadost[VELKOST_BUFFERA]; @@ -506,6 +520,10 @@ int vygenerovat_ecc_ziadost(int pocet_bitov, ecc_curve_id kluc_krivka, int algor fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM so ziadostou.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech)); return -1; } + pem_ziadost_velkost = uspech; + subor = fopen(subor_ziadost, "wb+"); + fwrite(pem_ziadost, 1, pem_ziadost_velkost, subor); + fclose(subor); } int nacitat_certifikaty(WOLFSSL_CTX* ctx, const char* subor_certifikat, const char* subor_kluc) @@ -541,7 +559,6 @@ int nacitat_certifikaty(WOLFSSL_CTX* ctx, const char* subor_certifikat, const ch void zobraz_certifikat(WOLFSSL* ssl) { - printf("Informacie o certifikate:\n"); WOLFSSL_X509 *certifikat = wolfSSL_get_peer_certificate(ssl); char* pole; if (!certifikat) diff --git a/kniznica/kryptografia.h b/kniznica/kryptografia.h index 3093fcc..08175ae 100644 --- a/kniznica/kryptografia.h +++ b/kniznica/kryptografia.h @@ -26,8 +26,13 @@ #include #include +//velkost bufferov do ktorych sa ukladaju data certifikatov, klucov, ziadosti #define VELKOST_BUFFERA 4096 + +//pocet bajtov ktore vstupuju do crc funkcie #define CRC32_VELKOST 10 + +//velkost vystupu blake2d hashu v bitoch #define BLAKE2B_VELKOST 64 /** @@ -82,41 +87,49 @@ unsigned char* generovat_kontrolny_sucet_suboru(nastavenia_aplikacie* nastavenia /** * generovat_ecc_certifikat: realizuje vygenerovania sukromneho kluca, nacitanie sukromneho kluca autority, * vygenerovanie a podpis ecc certifikatu pomocou sukromneho kluca a certifikatu autority + * @parameter const char* subor_kluc : absolutna cesta ku suboru so sukromnym klucom vo formate PEM + * @parameter const char* subor_certifikat : absolutna cesta ku suboru s certifikatom vo formate PEM * @parameter int pocet_bitov : velkost kluca * @parameter ecc-curve_id kluc_krivka: kod krivky pre generovanie sukromneho kluca * @parameter int algoritmus: kod algoritmu, sluziaceho na vymenu klucov * @vrati int: operacia bola uspesna(0), neuspesna(-1) */ -int generovat_ecc_certifikat(int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email); +int generovat_ecc_certifikat(const char* subor_kluc, const char* subor_certifikat, int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email); /** * generovat_rsa_certifikat: realizuje vygenerovania sukromneho kluca, nacitanie sukromneho kluca autority, * vygenerovanie a podpis rsa certifikatu pomocou sukromneho kluca a certifikatu autority + * @parameter const char* subor_kluc : absolutna cesta ku suboru so sukromnym klucom vo formate PEM + * @parameter const char* subor_certifikat : absolutna cesta ku suboru s certifikatom vo formate PEM * @parameter int pocet_bitov : velkost kluca * @parameter int exponent : hodnota exponentu * @parameter int algoritmus : kod algoritmu, sluziaceho na vymenu klucov * @vrati int : operacia bola uspesna(0), neuspesna(-1) */ -int generovat_rsa_certifikat(int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email); +int generovat_rsa_certifikat(const char* subor_kluc, const char* subor_certifikat, int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email); /** * generovat_rsa_ziadost: realizuje vygenerovania sukromneho kluca, vygenerovanie a podpis ziadosti + * @parameter const char* subor_kluc : absolutna cesta ku suboru so sukromnym klucom vo formate PEM + * @parameter const char* subor_ziadost : absolutna cesta ku suboru so ziadostou vo formate PEM * @parameter int pocet_bitov : velkost kluca * @parameter int exponent : hodnota exponentu * @parameter int algoritmus: kod algoritmu, sluziaceho na vymenu klucov * @vrati int: operacia bola uspesna(0), neuspesna(-1) */ -int generovat_rsa_ziadost(int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email); +int generovat_rsa_ziadost(const char* subor_kluc, const char* subor_ziadost, int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email); /** * generovat_ecc_ziadost: realizuje vygenerovania sukromneho kluca, vygenerovanie a podpis ziadosti + * @parameter const char* subor_kluc : absolutna cesta ku suboru so sukromnym klucom vo formate PEM + * @parameter const char* subor_ziadost : absolutna cesta ku suboru so ziadostou vo formate PEM * @parameter int pocet_bitov : velkost kluca * @parameter ecc-curve_id kluc_krivka: kod krivky pre generovanie sukromneho kluca * @parameter int algoritmus: kod algoritmu, sluziaceho na vymenu klucov * @vrati int: operacia bola uspesna(0), neuspesna(-1) */ -int generovat_ecc_ziadost(int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email); +int generovat_ecc_ziadost(const char* subor_kluc, const char* subor_ziadost, int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email); /** * nastav_ctx_klient : realizuje vytvorenie a inicializaciu CTX struktury diff --git a/rs232_kanal/klient/klient.c b/rs232_kanal/klient/klient.c index e30fa96..fbb446e 100644 --- a/rs232_kanal/klient/klient.c +++ b/rs232_kanal/klient/klient.c @@ -103,6 +103,7 @@ int main(int argc, char const *argv[]) WOLFSSL *ssl; WOLFSSL_CTX *ctx = NULL; const char* subor = NULL; + int autentizacia = 0; int zadane_rozhranie = 0; int uvedeny_subor = 0; int nacitanie_zo_suboru = 0; @@ -118,9 +119,10 @@ int main(int argc, char const *argv[]) } else { + printf("---------------\n| Certifikaty |\n---------------\n"); for(int i = 0; i < argc; i++) { - if( (!strcmp(argv[i], "-s")) ) + if( (!strcmp(argv[i], "-subor")) ) { uvedeny_subor = 1; if((argv[i+1] == NULL) ) @@ -133,7 +135,7 @@ int main(int argc, char const *argv[]) subor = argv[i+1]; } } - if( (!strcmp(argv[i], "-port")) ) + else if( (!strcmp(argv[i], "-port")) ) { zadane_rozhranie = 1; if((argv[i+1] == NULL)) @@ -150,7 +152,32 @@ int main(int argc, char const *argv[]) } } } - else if( (!strcmp(argv[i], "-n")) ) + else if( (!strcmp(argv[i], "-cert-aut")) ) + { + if((argv[i+1] == NULL) || (i == argc-1)) + { + printf("Nezadali ste typ certifikatu autority ktory chcete nacitat\n"); + return -1; + } + else if(!strcmp(argv[i+1], "rsa")) + { + wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL); + wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0); + autentizacia = 1; + } + else if(!strcmp(argv[i+1], "ecc")) + { + wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL); + wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0); + autentizacia = 1; + } + else + { + printf("Zadali ste nespravny typ certifikatu\n"); + return -1; + } + } + else if( (!strcmp(argv[i], "-cert")) ) { nacitanie_zo_suboru = 1; if(generovanie_certifikatu) @@ -165,17 +192,11 @@ int main(int argc, char const *argv[]) } else if(!strcmp(argv[i+1], "rsa")) { - wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL); if(nacitat_certifikaty(ctx, RSA_CERTIFIKAT, RSA_KLUC) == -1) return -1; - wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0); - } else if(!strcmp(argv[i+1], "ecc")) { - wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL); if(nacitat_certifikaty(ctx, ECC_CERTIFIKAT, ECC_KLUC) == -1) return -1; - wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0); - } else { @@ -183,7 +204,7 @@ int main(int argc, char const *argv[]) return -1; } } - else if( (!strcmp(argv[i], "-g")) ) + else if( (!strcmp(argv[i], "-cert-gen")) ) { generovanie_certifikatu = 1; if(nacitanie_zo_suboru) @@ -198,18 +219,14 @@ int main(int argc, char const *argv[]) } else if(!strcmp(argv[i+1], "rsa")) { - wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL); - if(generovat_rsa_certifikat(RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1; + if(generovat_rsa_certifikat(VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC, RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1; if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1; - wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); } else if(!strcmp(argv[i+1], "ecc")) { - wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL); - if(generovat_ecc_certifikat(ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1; + if(generovat_ecc_certifikat(VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC, ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1; if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1; - wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); } else { @@ -219,23 +236,29 @@ int main(int argc, char const *argv[]) } } } + + //vypis upozornenia o autentizacii + if(!autentizacia) + { + printf("Nebol nacitany certifikat autority, takze nebude vykonana autentizacia druhej strany\n"); + } if(!zadane_rozhranie) - { - fprintf(stderr, "Nebol urcene seriove rozhranie\n"); - return -1; - } - else if(!generovanie_certifikatu && !nacitanie_zo_suboru) - { - fprintf(stderr, "Nebola zvolena metoda nacitania certifikatov\n"); - printf("Zadajde prepinac -g (generovanie), alebo -n (nacitanie_zo_suboru) s parametrom rsa alebo ecc\n"); - return -1; - } - else if(!uvedeny_subor) - { - fprintf(stderr, "Nebola uvedena cesta ku suboru na odoslanie\n"); - return -1; - } + { + fprintf(stderr, "Nebol urcene seriove rozhranie\n"); + return -1; + } + else if(!generovanie_certifikatu && !nacitanie_zo_suboru) + { + fprintf(stderr, "Nebola zvolena metoda nacitania certifikatov\n"); + printf("Zadajde prepinac -gen-cert (generovanie), alebo -cert (nacitanie zo suboru) s parametrom rsa alebo ecc\n"); + return -1; + } + else if(!uvedeny_subor) + { + fprintf(stderr, "Nebola uvedena cesta ku suboru na odoslanie\n"); + return -1; + } //nastav_sifry(ctx, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"); @@ -256,6 +279,8 @@ int main(int argc, char const *argv[]) wolfSSL_set_using_nonblock(ssl, k_subor); //pokus o inizicalizaciu TLS handshaku so serverom + printf("-----------------\n| TLS Handshake |\n-----------------\n"); + printf("Inicializacia TLS spojenia\n"); uspech = wolfSSL_connect(ssl); if(uspech != SSL_SUCCESS) { @@ -268,19 +293,20 @@ int main(int argc, char const *argv[]) free(popis_chyby); return -1; } - + printf("Podarilo sa vytvorit TLS spojenie\n"); zobraz_sifru(ssl); + printf("----------------------------\n| Informacie o certifikate |\n----------------------------\n"); zobraz_certifikat(ssl); //nastavenie funkcie pre vypocet kontrolneho suctu //nastavime typ "crc" alebo "hash" a nazov funkcie, nazov druhej funkcie nastavime na NULL nastav_funkciu(&nastavenia, "crc", (hashovacia_funkcia)NULL, funkcia_CRC32); - if(poslat_subor(ssl, ctx, subor, &nastavenia) == -1) - { - fclose(fopen(KOMUNIKACNY_SUBOR, "wb")); - return -1; - } + printf("-------------------\n| Poslanie suboru |\n-------------------\n"); + + if(poslat_subor(ssl, ctx, subor, &nastavenia, 4096) == -1) return -1; + + printf("----------------------\n| Ukoncenie spojenia |\n----------------------\n"); //ukoncenie spojenia, vymazanie komunikacneho suboru //a vycistenie serioveho buffera diff --git a/rs232_kanal/klient/obr.jpg b/rs232_kanal/klient/obr.jpg new file mode 100644 index 0000000..77d9567 Binary files /dev/null and b/rs232_kanal/klient/obr.jpg differ diff --git a/rs232_kanal/klient/spustit_klient.bat b/rs232_kanal/klient/spustit_klient.bat index 4566e47..b519ad3 100644 --- a/rs232_kanal/klient/spustit_klient.bat +++ b/rs232_kanal/klient/spustit_klient.bat @@ -13,4 +13,4 @@ :: -s cesta-ku-suboru sluzi na nacitanie cesty k suboru, ktory chceme odoslat ::Priklady spustenia: -klient -port 4 -n rsa -s document.pdf +klient -port 4 -cert rsa -cert-aut rsa -subor obr.jpg diff --git a/rs232_kanal/server/obr.jpg b/rs232_kanal/server/obr.jpg new file mode 100644 index 0000000..77d9567 Binary files /dev/null and b/rs232_kanal/server/obr.jpg differ diff --git a/rs232_kanal/server/server.c b/rs232_kanal/server/server.c index 7a6b79a..98a72e2 100644 --- a/rs232_kanal/server/server.c +++ b/rs232_kanal/server/server.c @@ -100,6 +100,7 @@ int main(int argc, char const *argv[]) WOLFSSL *ssl; WOLFSSL_CTX *ctx = NULL; + int autentizacia = 0; int zadane_rozhranie = 0; int generovanie_certifikatu = 0; int nacitanie_zo_suboru = 0; @@ -115,9 +116,10 @@ int main(int argc, char const *argv[]) } else { + printf("---------------\n| Certifikaty |\n---------------\n"); for(int i = 0; i < argc; i++) { - if( (!strcmp(argv[i], "-port")) ) + if( (!strcmp(argv[i], "-port")) ) { zadane_rozhranie = 1; if((argv[i+1] == NULL)) @@ -134,7 +136,32 @@ int main(int argc, char const *argv[]) } } } - else if( (!strcmp(argv[i], "-n")) ) + else if( (!strcmp(argv[i], "-cert-aut")) ) + { + if((argv[i+1] == NULL) || (i == argc-1)) + { + printf("Nezadali ste typ certifikatu autority ktory chcete nacitat\n"); + return -1; + } + else if(!strcmp(argv[i+1], "rsa")) + { + wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL); + wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0); + autentizacia = 1; + } + else if(!strcmp(argv[i+1], "ecc")) + { + wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL); + wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0); + autentizacia = 1; + } + else + { + printf("Zadali ste nespravny typ certifikatu\n"); + return -1; + } + } + else if( (!strcmp(argv[i], "-cert")) ) { nacitanie_zo_suboru = 1; if(generovanie_certifikatu) @@ -149,17 +176,11 @@ int main(int argc, char const *argv[]) } else if(!strcmp(argv[i+1], "rsa")) { - wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL); if(nacitat_certifikaty(ctx, RSA_CERTIFIKAT, RSA_KLUC) == -1) return -1; - wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0); - } else if(!strcmp(argv[i+1], "ecc")) { - wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL); if(nacitat_certifikaty(ctx, ECC_CERTIFIKAT, ECC_KLUC) == -1) return -1; - wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0); - } else { @@ -167,7 +188,7 @@ int main(int argc, char const *argv[]) return -1; } } - else if( (!strcmp(argv[i], "-g")) ) + else if( (!strcmp(argv[i], "-cert-gen")) ) { generovanie_certifikatu = 1; if(nacitanie_zo_suboru) @@ -182,15 +203,13 @@ int main(int argc, char const *argv[]) } else if(!strcmp(argv[i+1], "rsa")) { - wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL); - if(generovat_rsa_certifikat(RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1; + if(generovat_rsa_certifikat(VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC, RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1; if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1; } else if(!strcmp(argv[i+1], "ecc")) { - wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL); - if(generovat_ecc_certifikat(ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1; + if(generovat_ecc_certifikat(VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC, ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1; if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1; } else @@ -201,6 +220,12 @@ int main(int argc, char const *argv[]) } } } + + //vypis upozornenia o autentizacii + if(!autentizacia) + { + printf("Nebol nacitany certifikat autority, takze nebude vykonana autentizacia druhej strany\n"); + } if(!zadane_rozhranie) { @@ -233,6 +258,8 @@ int main(int argc, char const *argv[]) wolfSSL_set_using_nonblock(ssl, k_subor); //cakanie na inicializaciu TLS handshaku klientom + printf("-----------------\n| TLS Handshake |\n-----------------\n"); + printf("Inicializacia TLS spojenia\n"); uspech = wolfSSL_accept(ssl); if(uspech != SSL_SUCCESS) { @@ -245,24 +272,24 @@ int main(int argc, char const *argv[]) free(popis_chyby); return -1; } + printf("Podarilo sa vytvorit TLS spojenie\n"); zobraz_sifru(ssl); + printf("----------------------------\n| Informacie o certifikate |\n----------------------------\n"); zobraz_certifikat(ssl); - + //nastavenie funkcie pre vypocet kontrolneho suctu //nastavime typ "crc" alebo "hash" a nazov funkcie, nazov druhej funkcie nastavime na NULL nastav_funkciu(&nastavenia, "crc", (hashovacia_funkcia)NULL, funkcia_CRC32); - + //vypocet casu prenosu suboru + printf("-------------------\n| Prijatie suboru |\n-------------------\n"); clock_t cas; cas = clock(); - if(prijat_subor(ssl, ctx, &nastavenia) == -1) - { - fclose(fopen(KOMUNIKACNY_SUBOR, "wb")); - return -1; - } - + if(prijat_subor(ssl, ctx, &nastavenia, 4096) == -1) return -1; cas = clock() - cas; printf("Cas prenosu suboru: %f sekund\n", (double)cas/CLOCKS_PER_SEC); + + printf("----------------------\n| Ukoncenie spojenia |\n----------------------\n"); //ukoncenie spojenia, vymazanie komunikacneho suboru //a vycistenie serioveho buffera diff --git a/rs232_kanal/server/spustit_server.bat b/rs232_kanal/server/spustit_server.bat index 30ae5a6..3ca3f07 100644 --- a/rs232_kanal/server/spustit_server.bat +++ b/rs232_kanal/server/spustit_server.bat @@ -11,4 +11,4 @@ :: -g rsa|ecc sluzi na generovanie certifikatu :: -n rsa|ecc sluzi na nacitanie uz vygenerovanych certifikatov z adresara /certifikaty -server -port 5 -n rsa \ No newline at end of file +server -port 5 -cert rsa -cert-aut rsa \ No newline at end of file diff --git a/tcpip_kanal/klient/klient.c b/tcpip_kanal/klient/klient.c index fa85116..35bb8e7 100644 --- a/tcpip_kanal/klient/klient.c +++ b/tcpip_kanal/klient/klient.c @@ -22,9 +22,12 @@ #define ECC_CERTIFIKAT "../../certifikaty/klient/klient_ecc.pem" #define VYGENEROVANY_KLUC "../../certifikaty/klient/vygenerovany_kluc.key" #define VYGENEROVANY_CERTIFIKAT "../../certifikaty/klient/vygenerovany_certifikat.pem" +#define VYGENEROVANA_ZIADOST "../../certifikaty/klient/vygenerovana_ziadost.pem" int main(int argc, char** argv) { + int autentizacia = 0; + clock_t cas; int uspech; int generovanie_certifikatu = 0; int nacitanie_zo_suboru = 0; @@ -56,9 +59,10 @@ int main(int argc, char** argv) { //skontroluje ci nebol zadany prepinac "-g" pre moznost generovanie certifikatu, //ak ano pozrie aky typ certifikatu (v CLI argument hned za nim) bol zvoleny + printf("---------------\n| Certifikaty |\n---------------\n"); for(int i = 0; i < argc; i++) { - if( (!strcmp(argv[i], "-s")) ) + if( (!strcmp(argv[i], "-subor")) ) { uvedeny_subor = 1; if((argv[i+1] == NULL) ) @@ -71,9 +75,9 @@ int main(int argc, char** argv) subor = argv[i+1]; } } - if( (!strcmp(argv[i], "-ip")) ) + if( (!strcmp(argv[i], "-ip-adr")) ) { - port = 1; + ip = 1; if((argv[i+1] == NULL) ) { printf("Nezadali ste ip adresu\n"); @@ -86,7 +90,7 @@ int main(int argc, char** argv) } else if( (!strcmp(argv[i], "-port")) ) { - ip = 1; + port = 1; if((argv[i+1] == NULL) ) { printf("Nezadali ste cislo portu\n"); @@ -97,7 +101,32 @@ int main(int argc, char** argv) cislo_portu = atoi(argv[i+1]); } } - else if( (!strcmp(argv[i], "-n")) ) + else if( (!strcmp(argv[i], "-cert-aut")) ) + { + if((argv[i+1] == NULL) || (i == argc-1)) + { + printf("Nezadali ste typ certifikatu autority ktory chcete nacitat\n"); + return -1; + } + else if(!strcmp(argv[i+1], "rsa")) + { + wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL); + wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0); + autentizacia = 1; + } + else if(!strcmp(argv[i+1], "ecc")) + { + wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL); + wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0); + autentizacia = 1; + } + else + { + printf("Zadali ste nespravny typ certifikatu\n"); + return -1; + } + } + else if( (!strcmp(argv[i], "-cert")) ) { nacitanie_zo_suboru = 1; if(generovanie_certifikatu) @@ -112,12 +141,10 @@ int main(int argc, char** argv) } else if(!strcmp(argv[i+1], "rsa")) { - wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL); if(nacitat_certifikaty(ctx, RSA_CERTIFIKAT, RSA_KLUC) == -1) return -1; } else if(!strcmp(argv[i+1], "ecc")) { - wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL); if(nacitat_certifikaty(ctx, ECC_CERTIFIKAT, ECC_KLUC) == -1) return -1; } else @@ -126,9 +153,14 @@ int main(int argc, char** argv) return -1; } } - else if( (!strcmp(argv[i], "-g")) ) + else if( (!strcmp(argv[i], "-cert-gen")) ) { generovanie_certifikatu = 1; + if(nacitanie_zo_suboru) + { + fprintf(stderr, "Nie je mozne zvolit obidve metody nacitania certifikatov naraz\n"); + return -1; + } if((argv[i+1] == NULL) || (i == argc-1)) { printf("Nezadali ste typ certifikatu ktory chcete vygenerovat\n"); @@ -136,17 +168,14 @@ int main(int argc, char** argv) } else if(!strcmp(argv[i+1], "rsa")) { - wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita_rsa.pem", NULL); - if(generovat_rsa_certifikat(RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "klient@klient.sk") == -1) return -1; + if(generovat_rsa_certifikat(VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC, RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1; if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1; - wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); + } else if(!strcmp(argv[i+1], "ecc")) { - wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL); - if(generovat_ecc_certifikat(ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "klient@klient.sk") == -1) return -1; + if(generovat_ecc_certifikat(VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC, ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1; if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1; - wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); } else { @@ -155,6 +184,12 @@ int main(int argc, char** argv) } } } + + //vypis upozornenia o autentizacii + if(!autentizacia) + { + printf("Nebol nacitany certifikat autority, takze nebude vykonana autentizacia druhej strany\n"); + } if(!ip) { @@ -181,18 +216,23 @@ int main(int argc, char** argv) //nastav_sifry(ctx, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"); //pokus o inicializaciu TCP/IP prenosoveho kanala + printf("----------------\n| TCP/IP kanal |\n----------------\n"); + printf("Pokus o inicializaciu TCP/IP prenosoveho kanala\n"); cislo_soketu = pripojit_na_server(ip_adresa, cislo_portu, 5); - if(!cislo_soketu) return -1; + printf("TCP/IP kanal bol uspesne vytvoreny\n"); //pokus o vytvorenie novej wolfSSL relacie ssl = wolfSSL_new(ctx); //priradenie file descriptora soketu ako I/O pre TLS spojenie wolfSSL_set_fd(ssl, cislo_soketu); + wolfSSL_set_using_nonblock(ssl, 1); //pokus o inizicalizaciu TLS handshaku so serverom uspech = wolfSSL_connect(ssl); + printf("-----------------\n| TLS Handshake |\n-----------------\n"); + printf("Inicializacia TLS spojenia\n"); if(uspech != SSL_SUCCESS) { char* popis_chyby = calloc(100, sizeof(char)); @@ -202,18 +242,21 @@ int main(int argc, char** argv) printf("Skontrolujte certifikaty.\n"); free(popis_chyby); return -1; - } + } + printf("Podarilo sa vytvorit TLS spojenie\n"); zobraz_sifru(ssl); + printf("----------------------------\n| Informacie o certifikate |\n----------------------------\n"); zobraz_certifikat(ssl); //nastavenie funkcie pre vypocet kontrolneho suctu //nastavime typ "crc" alebo "hash" a nazov funkcie, nazov druhej funkcie nastavime na NULL nastav_funkciu(&nastavenia, "crc", (hashovacia_funkcia)NULL, funkcia_CRC32); + + printf("-------------------\n| Poslanie suboru |\n-------------------\n"); + + if(poslat_subor(ssl, ctx, subor, &nastavenia, 16384) == -1) return -1; - if(poslat_subor(ssl, ctx, subor, &nastavenia) == -1) - { - return -1; - } + printf("----------------------\n| Ukoncenie spojenia |\n----------------------\n"); ukoncit_spojenie(ssl, ctx); } ukoncit_soket(cislo_soketu); diff --git a/tcpip_kanal/klient/obr.jpg b/tcpip_kanal/klient/obr.jpg new file mode 100644 index 0000000..77d9567 Binary files /dev/null and b/tcpip_kanal/klient/obr.jpg differ diff --git a/tcpip_kanal/klient/spustit_klient.bat b/tcpip_kanal/klient/spustit_klient.bat index 7f2562b..293766d 100644 --- a/tcpip_kanal/klient/spustit_klient.bat +++ b/tcpip_kanal/klient/spustit_klient.bat @@ -12,4 +12,4 @@ :: -s cesta-ku-suboru sluzi na nacitanie cesty k suboru, ktory chceme odoslat ::Priklady spustenia: -klient -ip 127.0.0.1 -port 8080 -n rsa -s document.pdf +klient -ip-adr 127.0.0.1 -port 8080 -cert rsa -cert-aut rsa -subor obr.jpg diff --git a/tcpip_kanal/server/obr.jpg b/tcpip_kanal/server/obr.jpg new file mode 100644 index 0000000..77d9567 Binary files /dev/null and b/tcpip_kanal/server/obr.jpg differ diff --git a/tcpip_kanal/server/server.c b/tcpip_kanal/server/server.c index c3bef83..dcf4ccf 100644 --- a/tcpip_kanal/server/server.c +++ b/tcpip_kanal/server/server.c @@ -22,9 +22,12 @@ #define ECC_CERTIFIKAT "../../certifikaty/server/server_ecc.pem" #define VYGENEROVANY_KLUC "../../certifikaty/server/vygenerovany_kluc.key" #define VYGENEROVANY_CERTIFIKAT "../../certifikaty/server/vygenerovany_certifikat.pem" +#define VYGENEROVANA_ZIADOST "../../certifikaty/server/vygenerovana_ziadost.pem" int main(int argc, char **argv) { + int autentizacia = 0; + int uspech; int autentizacia_klienta = 0; int generovanie_certifikatu = 0; int nacitanie_zo_suboru = 0; @@ -52,6 +55,7 @@ int main(int argc, char **argv) { //skontroluje ci nebol zadany prepinac "-g" pre moznost generovanie certifikatu, //ak ano pozrie aky typ certifikatu (v CLI argument hned za nim) bol zvoleny + printf("---------------\n| Certifikaty |\n---------------\n"); for(int i = 0; i < argc; i++) { if( (!strcmp(argv[i], "-port")) ) @@ -67,7 +71,32 @@ int main(int argc, char **argv) cislo_portu = atoi(argv[i+1]); } } - else if( (!strcmp(argv[i], "-n")) ) + else if( (!strcmp(argv[i], "-cert-aut")) ) + { + if((argv[i+1] == NULL) || (i == argc-1)) + { + printf("Nezadali ste typ certifikatu autority ktory chcete nacitat\n"); + return -1; + } + else if(!strcmp(argv[i+1], "rsa")) + { + wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL); + wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0); + autentizacia = 1; + } + else if(!strcmp(argv[i+1], "ecc")) + { + wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL); + wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0); + autentizacia = 1; + } + else + { + printf("Zadali ste nespravny typ certifikatu\n"); + return -1; + } + } + else if( (!strcmp(argv[i], "-cert")) ) { nacitanie_zo_suboru = 1; if(generovanie_certifikatu) @@ -82,18 +111,11 @@ int main(int argc, char **argv) } else if(!strcmp(argv[i+1], "rsa")) { - wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL); if(nacitat_certifikaty(ctx, RSA_CERTIFIKAT, RSA_KLUC) == -1) return -1; - wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0); - } else if(!strcmp(argv[i+1], "ecc")) { - printf("jo\n"); - wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL); if(nacitat_certifikaty(ctx, ECC_CERTIFIKAT, ECC_KLUC) == -1) return -1; - wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0); - } else { @@ -101,7 +123,7 @@ int main(int argc, char **argv) return -1; } } - else if( (!strcmp(argv[i], "-g")) ) + else if( (!strcmp(argv[i], "-cert-gen")) ) { generovanie_certifikatu = 1; if(nacitanie_zo_suboru) @@ -116,15 +138,13 @@ int main(int argc, char **argv) } else if(!strcmp(argv[i+1], "rsa")) { - wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL); - if(generovat_rsa_certifikat(RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1; + if(generovat_rsa_certifikat(VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC, RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1; if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1; } else if(!strcmp(argv[i+1], "ecc")) { - wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL); - if(generovat_ecc_certifikat(ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1; + if(generovat_ecc_certifikat(VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC, ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1; if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1; } else @@ -135,6 +155,12 @@ int main(int argc, char **argv) } } + //vypis upozornenia o autentizacii + if(!autentizacia) + { + printf("Nebol nacitany certifikat autority, takze nebude vykonana autentizacia druhej strany\n"); + } + if(!port) { fprintf(stderr, "Nebol urceny port\n"); @@ -151,6 +177,8 @@ int main(int argc, char **argv) //nastav_sifry(ctx, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"); //pokus vytvorenie TCP/IP prenosoveho kanala + printf("----------------\n| TCP/IP kanal |\n----------------\n"); + printf("Pokus o inicializaciu TCP/IP prenosoveho kanala\n"); cislo_soketu = cakat_na_komunikaciu(cislo_portu); struct sockaddr_in adresa; @@ -158,15 +186,18 @@ int main(int argc, char **argv) int velkost = sizeof(adresa); int cislo_soketu_klienta = accept(cislo_soketu, (struct sockaddr*)&adresa, &velkost); printf("Spojenie [%s:%d]\n", inet_ntoa(adresa.sin_addr), ntohs(adresa.sin_port)); + printf("TCP/IP kanal bol uspesne vytvoreny\n"); //pokus o vytvorenie novej wolfSSL relacie ssl = wolfSSL_new(ctx); //priradenie file descriptora soketu ako I/O pre TLS spojenie wolfSSL_set_fd(ssl, cislo_soketu_klienta); + wolfSSL_set_using_nonblock(ssl, 1); //cakanie na inicializaciu TLS handshaku klientom - int uspech; + printf("-----------------\n| TLS Handshake |\n-----------------\n"); + printf("Inicializacia TLS spojenia\n"); if(wolfSSL_accept(ssl) != SSL_SUCCESS) { char* popis_chyby = calloc(100, sizeof(char)); @@ -177,7 +208,9 @@ int main(int argc, char **argv) free(popis_chyby); return -1; } + printf("Podarilo sa vytvorit TLS spojenie\n"); zobraz_sifru(ssl); + printf("----------------------------\n| Informacie o certifikate |\n----------------------------\n"); zobraz_certifikat(ssl); //nastavenie funkcie pre vypocet kontrolneho suctu @@ -185,15 +218,14 @@ int main(int argc, char **argv) nastav_funkciu(&nastavenia, "crc", (hashovacia_funkcia)NULL, funkcia_CRC32); //vypocet casu prenosu suboru + printf("-------------------\n| Prijatie suboru |\n-------------------\n"); clock_t cas; cas = clock(); - if(prijat_subor(ssl, ctx, &nastavenia) == -1) - { - return -1; - } + if(prijat_subor(ssl, ctx, &nastavenia, 16384) == -1) return -1; cas = clock() - cas; printf("Cas prenosu suboru: %f sekund\n", (double)cas/CLOCKS_PER_SEC); - + + printf("----------------------\n| Ukoncenie spojenia |\n----------------------\n"); ukoncit_spojenie(ssl, ctx); } ukoncit_soket(cislo_soketu); diff --git a/tcpip_kanal/server/spustit_server.bat b/tcpip_kanal/server/spustit_server.bat index b144f38..94a2d44 100644 --- a/tcpip_kanal/server/spustit_server.bat +++ b/tcpip_kanal/server/spustit_server.bat @@ -11,5 +11,5 @@ :: -n rsa|ecc sluzi na nacitanie uz vygenerovanych certifikatov z adresara /certifikaty ::Priklady spustenia: -server -port 8080 -n rsa +server -port 8080 -cert rsa -cert-aut rsa ::server -port 8080 -g ecc \ No newline at end of file