Byla vydána beta verze openSUSE Leap 16. Ve výchozím nastavení s novým instalátorem Agama.
Devadesátková hra Brány Skeldalu prošla portací a je dostupná na platformě Steam. Vyšel i parádní blog autora o portaci na moderní systémy a platformy včetně Linuxu.
Lidi dělají divné věci. Například spouští Linux v Excelu. Využít je emulátor RISC-V mini-rv32ima sestavený jako knihovna DLL, která je volaná z makra VBA (Visual Basic for Applications).
Revolut nabídne neomezený mobilní tarif za 12,50 eur (312 Kč). Aktuálně startuje ve Velké Británii a Německu.
Společnost Amazon miliardáře Jeffa Bezose vypustila na oběžnou dráhu první várku družic svého projektu Kuiper, který má z vesmíru poskytovat vysokorychlostní internetové připojení po celém světě a snažit se konkurovat nyní dominantnímu Starlinku nejbohatšího muže planety Elona Muska.
Poslední aktualizací začal model GPT-4o uživatelům příliš podlézat. OpenAI jej tak vrátila k předchozí verzi.
Google Chrome 136 byl prohlášen za stabilní. Nejnovější stabilní verze 136.0.7103.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 8 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Homebrew (Wikipedie), správce balíčků pro macOS a od verze 2.0.0 také pro Linux, byl vydán ve verzi 4.5.0. Na stránce Homebrew Formulae lze procházet seznamem balíčků. K dispozici jsou také různé statistiky.
Byl vydán Mozilla Firefox 138.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 138 je již k dispozici také na Flathubu a Snapcraftu.
Šestnáctý ročník ne-konference jOpenSpace se koná 3. – 5. října 2025 v Hotelu Antoň v Telči. Pro účast je potřeba vyplnit registrační formulář. Ne-konference neznamená, že se organizátorům nechce připravovat program, ale naopak dává prostor všem pozvaným, aby si program sami složili z toho nejzajímavějšího, čím se v poslední době zabývají nebo co je oslovilo. Obsah, který vytvářejí všichni účastníci, se skládá z desetiminutových
… více »"agent": "bureš"
To možná jako "easter egg" např parametrem ?reveal_agent_identity=1 :-P
PR jsou vítányNo ja nějak doufal/doufám že to PDF bude na jedné stabilní URL, když se na to člověk podívá tak ta URL nevypadá nějak náhodně nebo unikátně pro dané vydání http://www.mfcr.cz/assets/cs/media/Zverejnovane-udaje-ze-Seznamu-nepovolenych-internetovych-her_v1.pdf
O tom že má tento herní web "1000+" dalších domén vím, co s tím hodlá dělat MFCR netuším... je to hra na kočku a myš... domén 3 a 2 řádu si může ten herní portál založit plnou pr*el a lidi v MFCR z toho zešediví... ale to "jim" všichni říkali už před schválením toho zákona... takže ať si to pěkně vyžerou a klidně spravují PDF o milionech DNS :-P Pokud se nám to podaří nějak rozumě parsovat tak jsme v klidu... pokud ne tak z toho zešedivíme taky
Na tohle pamatujte, až budete přemýšlet, jak vysoké platíme daně. Tyhle náklady, které na nás přenáší stát (tzn. nucené práce), je potřeba počítat úplně stejně jako daně, které platíme ve formě peněz. Totéž se týká třeba Centrální evidence účtů, celní deklarace nebo další vynucené „spolupráce“ se státem, které představují pro soukromý sektor náklady.
Buď rád, že to nevytiskli na papír, neorazítkovali a nanaskenovali do PDF.
Co třeba MIME?
Ale jinak je tahle otázka úplně zbytečná – ty zákony si vymyslel stát – to on si mohl napsat lepší.
Je to jako kdybys přišel do obchodu, chtěl něco koupit, ale oni ti to nemohli prodat, protože by museli nejdřív zavolat do centrály a orazítkovat deset formulářů, protože jim to nařizují jejich interní předpisy. Je to jejich neschopnost.
do hry vstupují i zákony, kterými se ministerstvo musí říditV zákoně není o formátu, způsobu distribuce a dalších věcech napsáno vůbec nic.
takže třeba pokud by bylo distribuováno nějaké CSV, jak by se digitálně podepsalo, tak aby to bylo legální?PGP
PGPCool, jaké právní následky má soubor podepsaný PGP?
Tak on jaksi jeden zákon nefunguje sám o sobě, ale ministerstvo se musí řídit všemi zákony.Což zjevně stejně nedělá, protože třeba k tomu souboru se dá doklikat jenom přes HTTP. Btw. který že zákon upravuje způsob zveřejňování toho seznamu?
Cool, jaké právní následky má soubor podepsaný PGP?Asi stejné jako některým jiným způsobem?
Což zjevně stejně nedělá, protože třeba k tomu souboru se dá doklikat jenom přes HTTP.Pokud vím, tak žádný zákon ani nařízení neřeší HTTPS.
Asi stejné jako některým jiným způsobem?Ne, pokud tě to zajímá, začal bych tady: https://www.zakonyprolidi.cz/cs/2016-297.
pokud by bylo distribuováno nějaké CSV, jak by se digitálně podepsalo, tak aby to bylo legální?CSV formát pro tohle není zrovna vhodný, on to není moc formát – „texty v nějakém kódování na řádcích oddělených některým z konců řádků, s hlavičkou nebo bez hlavičky, jednotlivé položky jsou oddělené nějakým znakem, možná se používá nějaký znak pro escapování a možná se používá nějaké dvojice znaků pro uvozování“ není zrovna exaktní definice. Ale mohlo by to být třeba v XML, pro něj existuje a používá se standard pro podepisování. A jinak do PDF je možné vkládat souborové přílohy, takže ani není potřeba řešit nějaký formát pro podepisování – úplně by stačilo do toho PDF vložit strukturovanou přílohu (a zaručit, že tam bude vždy).
Ale mohlo by to být třeba v XML, pro něj existuje a používá se standard pro podepisování.+1
V případě odstranění údajů ze Seznamu, ve smyslu opaku zveřejnění údajů na Seznamu, dojde k překrytí (začernění) části příslušného řádku dokumentu .pdf tak, aby je nebylo možné přečíst. Pro potřebu Subjektů identifikovat, které údaje byly smazány, však vždy zůstane viditelný časový údaj zveřejnění a část adresy internetové stránky hazardní hry a jedinečného identifikátoru platebního účtu. Na příslušný řádek k nim přibyde časový údaj o jejich odstranění.
Neurážej ekonomy. Já jsem např. absolvent VŠE a se zvěrstvy, která provádí tenhle stát, rozhodně nesouhlasím.
Prostě buď to zablokuješ nějak jinak, nebo dostaneš pokutu.
No uz jsem odmitnul psat a implementovat samotne scripty na servery ktere tu blokaci budou aplikovat, jedine s cim jsem souhlasil bylo ze zajistim zdroj seznamu, tzn tento projekt...
A misto privatniho jednoducheho API kde by se crawl spoustel CRONem jsem se rozhodl to udelat trochu vetsi, verejne, OSS a hlavně tam přidám info jak blokaci obcházet + seznamy IP blokovaných domén + seznamy blokujících poskytovatelů - těch opravdových kolaborantů
Vlastně jediné co je na tom projektu kontroverzní je to API...
Ak s tou myslienkou cenzury internetu nesuhlasit, preco sa napriklad nesnazis ten program napriklad sabotovat, aby bol nespolahlivy, nestabilny, spotreboval viac zdrojov nez je potrebne atd.Protože nechce dostat milionovou pokutu?
Takto len prispievas k vitazstvu zla, podobne ako radovy kolaborant pred 70 rokmi.Nenapadá mě jiné řešení než se podřídit nebo přestat v ČR dělat ISP (a restauraci a řidiče a doručovatele a v budoucnu i spoustu dalších prací, kam stát strčil své hnusné prsty).
Nenapadá mě jiné řešení než se podřídit nebo přestat v ČR dělat ISP (a restauraci a řidiče a doručovatele a v budoucnu i spoustu dalších prací, kam stát strčil své hnusné prsty).Především lidi od IT mají rádi dichotomie: občané jsme mi a stát jsou oni. Doporučil bych ti pár semestrů sociologie abys zjistil, že reálný svět je o dost složitější.
ajax.googleapis.com
, maps.googleapis.com
a maxcdn.bootstrapcdn.com
, to si jako děláš prdel?! Takhle ty "děláš" webovky?
To's už rovnou mohl tahat spy.nsa.mil
...
ROFL, ty jsi magoooor
Ne standardne delam weby uplne jinak, pouzivam vse co jde lokalne pres bower. Ale jak je v textu lehce naznaceno, projekt je sesit horkou jehlou a celou tu template jsem proste odnekud obshlehl a vubec jsem se s tim nesral. Úpravy v ní byly na plánu jako tuna dalších vecí...
No a hlavne netrpim stihomamem, ale pokud mas obavy ze sledovani tveho pohybu na internetu tak pro to existuji pluginy ktere uz mas jiste nainstalovane...
Ale ze jsi to ty https://github.com/Salamek/blacklist/commit/05066ee97647fcb9771f37fbf8088ddd24a0903c
Oni presmerovavaji *NA* https - podstrci IP adresu sveho serveru (tady je problem pokud automaticky lezes na https, vyskoci ti neplatny certifikat). A nasledne te to po 1.5s javascriptem presmeruje na https://blocked.dkm.cz.Jo, já vím, taky mám UPC. Zkoušel jsem přejít rovnou na HTTPS verzi a docela mě to chování zarazilo. Znamená to, že mají deep packet inspection na aplikační úrovni (https), což je trochu jiný level než běžné blokování. Což se mi jako zákazníkovi zrovna nelíbí, protože to prostě probouzí otázky, co s tím ještě asi tak dělají / budou dělat.
Na IP úrovni?Ne, na úrovni DNS.
Ale to pak vyblokují server kde můžou být stovky stránek, ne?Ne.
Zrovna u tebe bych čekal, že víš, jak funguje DNS a Internet :-
)
Klient se DNS serveru normálně dotáže na IP adresu domény www.nejaka-zakazana-stranka.cz
a místo reálné IP adresy 91.213.160.348 dostane a) chybovou odpověď NXDomain (Non-Existent Domain) nebo Refused (Query Refused) nebo b) podvrženou odpověď s IP adresou např. 213.46.256.24, na které ISP provozuje HTTP server s nějakou vysvětlující stránkou. DNS server neví nic o tom, jestli uživatel chce přeložit tu doménu kvůli HTTP, HTTPS nebo jinému protokolu.
Prohlížeč zobrazí buď chybu nebo tu informační stránku (pokud je to přes HTTPS, tak to nebude fungovat, resp. zobrazí se hláška o nedůvěryhodném certifikátu).
Na IP adrese 91.213.160.348, kde běží ta zakázaná služba, může běžet klidně tisíc dalších nezávislých webů/služeb – těch se blokace (v současné verzi) nijak nedotkne, protože používají jiná doménová jména.
P.S. ty IP adresy jsou záměrně neexistující
UPC nemám, ale nechápu proč, když bych byl v jejich síti, bych měl používat jejich recursor.A proč ne? Ne každý má doma router/server, na kterém by měl vlastní.
Zrovna u tebe bych čekal, že víš, jak funguje DNS a InternetTo tak nějak více/méně vím (no dobře, úplně do hloubky jsem nešel, ale třeba nakonfigurovat BGP ještě snad zvládnu), ale nevím jak funguje to jejich blokování a jsem líný si s tím teď hrát. Když jsem dělal v ComSource na blokaci DDoS útoků, tak jsme měli různé nástroje na inspekci, tak možná si jen představuji moc velký over-ingeneering. Pokud to je jen na DNS úrovni, tak ok.
Z pohledu ISP je hlavní, aby to moc nestálo a aby nedostali pokutu.
inPdf = PdfFileReader(open('mypdf.pdf', 'rb')) fields = inPdf.getFields() if fields == None: print("No fields to extract") # Zdechni signaturePayload = fields['Signature2']['/V']['/Contents']vyextrahuje z toho PDFka PKCS7 balíček ve formátu ASN, který obsahuje příslušný certifikát. PyOpenSSL s PKCS7 moc pracovat neumí, takže minimálně na získání certifikátu, kterým je to podepsané by se muselo něco vyrobit. Např. GnuTLS by to celé zvládlo bez problémů, otázka ale je, jak moc se ti chce navěsit na ten tvůj systém nějaké zvěrstvo v C.
Díky, jako začátek to vypadá slibně :)
Včera jsem se motal kolem pdfsig 0.48.0 a ten to PDF ověřit nedokáže...
#! /usr/bin/python from PyPDF2 import PdfFileReader import os import sys class InvalidPdfSignature(Exception): pass class NullPKCS7Payload(Exception): pass class SignedRanges: def __init__(self, r2, r3, r4): self.range_one = r2 self.range_two = r4 self.bytes_skip = r3 def total_length(self): return self.range_two + self.bytes_skip def has_usable_signature(pdfh): fields = pdfh.getFields(); if fields == None: print('No metadata in PDF') return False if not ('Signature2' in fields): print('No signature information in PDF') return False if not ('/V' in fields['Signature2']): print('No field V in signature information') return False signature_v = fields['Signature2']['/V'] if not ('/ByteRange' in signature_v): print('No field "ByteRange" in signature information') return False if len(signature_v['/ByteRange']) != 4: print('"/ByteRange" does not have the expected dimensions') return False if not ('/Contents' in signature_v): print('No field "Contents" in signature information') return False if not ('/SubFilter' in signature_v): print('No information about signature type') return False if signature_v['/SubFilter'] != '/ETSI.CAdES.detached': print('Unsupported type of signature: {}'.format(fields['Signature2']['/SubFilter'])) return False return True def strip_pkcs7_padding(pkcs7): for idx in range(len(pkcs7) - 1, 0, -1): byte = pkcs7[idx] if byte != 0: return pkcs7[:idx + 1] def get_signature_info(filename): pdfh = PdfFileReader(open(filename, 'rb')) if has_usable_signature(pdfh) == False: raise InvalidPdfSignature fields = pdfh.getFields() signature_v = fields['Signature2']['/V'] byterange = signature_v['/ByteRange'] pkcs7 = signature_v['/Contents'] sigRngs = SignedRanges(byterange[1], byterange[2], byterange[3]) pkcs7 = strip_pkcs7_padding(pkcs7) if len(pkcs7) < 1: raise NullPKCS7Payload return (sigRngs, pkcs7) if len(sys.argv) < 2: print('No PDF file was given') sys.exit(1) pdf_path = sys.argv[1] try: sign_info = get_signature_info(pdf_path) sigRngs = sign_info[0] pkcs7 = sign_info[1] pdf_base_path = os.path.basename(pdf_path) ldot_idx = pdf_base_path.rfind('.') if ldot_idx == -1: ldot_idx = len(pdf_base_path) plain_name = pdf_base_path[:ldot_idx] if os.stat(pdf_path).st_size < sigRngs.total_length(): print('Size of the PDF file is smaller than the range of signed data') sys.exit(1) pdf_bin = open(pdf_path, 'rb') signed_bytes = bytearray() signed_bytes += pdf_bin.read(sigRngs.range_one) pdf_bin.seek(sigRngs.bytes_skip) signed_bytes += pdf_bin.read(sigRngs.range_two) signed_bytes_out = open(plain_name + '_signed.dat', 'wb') signed_bytes_out.write(signed_bytes) pkcs7_out = open(plain_name + '.p7b', 'wb') pkcs7_out.write(pkcs7) except InvalidPdfSignature: print('PDF does not contain a usable signature') sys.exit(1) except NullPKCS7Payload: print('Null PKCS#7 payload') sys.exit(1) sys.exit(0)Verifikátor:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/mman.h> #include <sys/stat.h> #include <sys/types.h> #include <fcntl.h> #include <unistd.h> #include <time.h> #include <gnutls/gnutls.h> #include <gnutls/crypto.h> #include <gnutls/x509.h> #define BAD_LSEEK(len) len == (off_t)-1 int map_pkcs7_file(int fd, gnutls_datum_t *datum) { const off_t pkcs7_raw_size = lseek(fd, 0, SEEK_END); if (BAD_LSEEK(pkcs7_raw_size)) { fprintf(stderr, "Cannot determine the size of the PKCS7 file\n"); return -1; } printf("Signature file size: %ld\n", pkcs7_raw_size); datum->data = (unsigned char *) mmap(NULL, pkcs7_raw_size, PROT_READ, MAP_PRIVATE, fd, 0); if (datum->data == MAP_FAILED) { fprintf(stderr, "Cannot mmap PKCS7 data\n"); return -1; } datum->size = pkcs7_raw_size; return 0; } int map_data_to_verify(int fd, gnutls_datum_t *datum) { const off_t data_size = lseek(fd, 0, SEEK_END); if (BAD_LSEEK(data_size)) { fprintf(stderr, "Cannot determine size of the signed data\n"); return -1; } printf("Signed block size: %zu\n", data_size); datum->data = (unsigned char *) mmap(NULL, data_size, PROT_READ, MAP_PRIVATE, fd, 0); if (datum->data == MAP_FAILED) { fprintf(stderr, "Failed to mmap data to verify\n"); return -1; } datum->size = data_size; return 0; } int find_certificate(gnutls_pkcs7_t pkcs7, gnutls_pkcs7_signature_info_st *sig_info, gnutls_x509_crt_t *cert) { int crt_cnt = gnutls_pkcs7_get_crt_count(pkcs7); int idx; int ret; printf("Number of certificates in the given PKCS7 bundle: %d\n", crt_cnt); gnutls_x509_crt_init(cert); for (idx = 0; idx < crt_cnt; idx++) { gnutls_datum_t cert_raw; gnutls_datum_t cert_print; unsigned char *cert_serial = NULL; size_t cert_serial_size = 0; memset(&cert_raw, 0, sizeof(cert_raw)); ret = gnutls_pkcs7_get_crt_raw2(pkcs7, idx, &cert_raw); if (ret < 0) { fprintf(stderr, "Cannot get raw certificate: %s\n", gnutls_strerror(ret)); continue; } ret = gnutls_x509_crt_import(*cert, &cert_raw, GNUTLS_X509_FMT_DER); if (ret < 0) { fprintf(stderr, "Cannot import certificate %d of %d, skipping\n", idx + 1, crt_cnt); goto next; } if (gnutls_x509_crt_print(*cert, GNUTLS_CRT_PRINT_ONELINE, &cert_print) < 0) { fprintf(stderr, "Cannot print certificate\n"); goto next; } printf("%s\n", cert_print.data); gnutls_free(cert_print.data); ret = gnutls_x509_crt_get_serial(*cert, cert_serial, &cert_serial_size); if (ret != GNUTLS_E_SHORT_MEMORY_BUFFER) { fprintf(stderr, "Cannot get certificate serial: %s\n", gnutls_strerror(ret)); goto next; } cert_serial = (unsigned char *) malloc(cert_serial_size); if (cert_serial == NULL) { fprintf(stderr, "No memory to get cerificate serial\n"); goto next; } ret = gnutls_x509_crt_get_serial(*cert, cert_serial, &cert_serial_size); if (ret < 0) { fprintf(stderr, "Cannot get certificate serial: %s\n", gnutls_strerror(ret)); goto next_2; } if (cert_serial_size != sig_info->signer_serial.size) goto next_2; if (memcmp(cert_serial, sig_info->signer_serial.data, cert_serial_size) != 0) goto next_2; else { free(cert_serial); gnutls_free(cert_raw.data); return 0; } next_2: free(cert_serial); next: gnutls_free(cert_raw.data); } gnutls_x509_crt_deinit(*cert); return -1; } void verify_data(gnutls_pkcs7_t pkcs7, gnutls_x509_crt_t cert, gnutls_pkcs7_signature_info_st *sig_info, gnutls_datum_t *to_verify) { unsigned int hash_size = gnutls_hash_get_len(sig_info->algo); int ret; void *digest; digest = malloc(hash_size); if (digest == NULL) { fprintf(stderr, "No memory to store digest\n"); return; } ret = gnutls_hash_fast(sig_info->algo, to_verify->data, to_verify->size, digest); if (ret < 0) fprintf(stderr, "Cannot calculate digest: %s\n", gnutls_strerror(ret)); else { int jdx; int verify_ret; printf("Data digest: "); for (jdx = 0; jdx < hash_size; jdx++) printf("%x", ((unsigned char *) digest)[jdx]); putchar('\n'); verify_ret = gnutls_pkcs7_verify_direct(pkcs7, cert, 0, to_verify, 0); printf("Verification result: %s\n", gnutls_strerror(verify_ret)); } free(digest); } void verify_signature(gnutls_pkcs7_t pkcs7, int sig_idx, gnutls_datum_t *to_verify) { gnutls_pkcs7_signature_info_st sig_info; gnutls_x509_crt_t cert; int ret; unsigned int idx; ret = gnutls_pkcs7_get_signature_info(pkcs7, sig_idx, &sig_info); if (ret < 0) { fprintf(stderr, "Cannot get PKCS7 signature info: %s\n", gnutls_strerror(ret)); return; } printf("Signature key serial ID: "); for (idx = 0; idx < sig_info.signer_serial.size; idx++) printf("%x", sig_info.signer_serial.data[idx]); putchar('\n'); if (find_certificate(pkcs7, &sig_info, &cert) < 0) { fprintf(stderr, "No certificate with matching serial ID was found in the PKCS7 bundle\n"); gnutls_pkcs7_signature_info_deinit(&sig_info); return; } verify_data(pkcs7, cert, &sig_info, to_verify); gnutls_x509_crt_deinit(cert); gnutls_pkcs7_signature_info_deinit(&sig_info); } void verify_all_signatures(gnutls_pkcs7_t pkcs7, gnutls_datum_t *to_verify) { int sig_cnt; int idx; sig_cnt = gnutls_pkcs7_get_signature_count(pkcs7); printf("Number of signatures in the given PKCS7 bundle: %d\n", sig_cnt); for (idx = 0; idx < sig_cnt; idx++) verify_signature(pkcs7, idx, to_verify); } int main(int argc, char **argv) { int ret; int gnu_ret; int sig_fd, data_fd; gnutls_pkcs7_t pkcs7; gnutls_datum_t pkcs7_raw; gnutls_datum_t to_verify; if (argc < 3) { fprintf(stderr, "Name of the signature file and the data to check must be specified\n"); return EXIT_FAILURE; } if (gnutls_global_init() < 0) { fprintf(stderr, "Cannot initialize gnutls\n"); return EXIT_FAILURE; } if (gnutls_pkcs7_init(&pkcs7) < 0) { fprintf(stderr, "Cannot initialize pkcs7 handle\n"); ret = EXIT_FAILURE; goto out; } sig_fd = open(argv[1], O_RDONLY); if (sig_fd < 0) { fprintf(stderr, "Cannot open PKCS7 file\n"); ret = EXIT_FAILURE; goto out; } data_fd = open(argv[2], O_RDONLY); if (data_fd < 0) { fprintf(stderr, "Cannot open data to verify\n"); close(sig_fd); ret = EXIT_FAILURE; goto out; } if (map_pkcs7_file(sig_fd, &pkcs7_raw) < 0) goto out_2; if (map_data_to_verify(data_fd, &to_verify) < 0) goto out_3; gnu_ret = gnutls_pkcs7_import(pkcs7, &pkcs7_raw, GNUTLS_X509_FMT_DER); if (gnu_ret != 0) { fprintf(stderr, "Cannot import PKCS7 package :%s\n", gnutls_strerror(gnu_ret)); ret = EXIT_FAILURE; goto out_4; } verify_all_signatures(pkcs7, &to_verify); gnutls_pkcs7_deinit(pkcs7); out_4: munmap(to_verify.data, to_verify.size); out_3: munmap(pkcs7_raw.data, pkcs7_raw.size); out_2: close(data_fd); close(sig_fd); out: gnutls_global_deinit(); return ret; }
WoW, to bylo jako vse co bylo potreba ?
Ted jeste pockat 1000 let nez se to dostane do debianu... No nic jde se kompilovat
Nakonec jsem musel pouzit https://bugs.freedesktop.org/attachment.cgi?id=133194 na aktualni poppler master a:
sadam@sadam-MS-7885:~/projects/poppler/utils$ ./pdfsig ~/projects/blacklist/static/pdf/2101adc3aa7a359db51e08af0303e8f0.pdf
Digital Signature Info of: ~/projects/blacklist/static/pdf/2101adc3aa7a359db51e08af0303e8f0.pdf
Signature #1:
- Signer Certificate Common Name: Mgr. Karel Blaha
- Signer full Distinguished Name: serialNumber=ICA - 10416498,title=Ředitel odboru,O=Česká republika - Ministerstvo financí,OU=Ministerstvo financí,OU="Letenská 15, 118 10 PRAHA 1",OU=14838,C=CZ,givenName=Karel,SN=Blaha,CN=Mgr. Karel Blaha
- Signing Time: Jul 26 2017 10:18:25
- Signing Hash Algorithm: SHA-256
- Signature Type: ETSI.CAdES.detached
- Signed Ranges: [0 - 160185], [205497 - 266426]
- Total document signed
- Signature Validation: Signature is Valid.
- Certificate Validation: Certificate issuer isn't Trusted.
Ještě by to chtělo kontrolovat podpis toho PDFka, když MFČR neumí nasadit HTTPS.To spolu úplně nesouvisí, i pokud by tam měli HTTPS, tak je důležité kontrolovat podpis. HTTPS je v tomto případě spíš třešnička na dortu.
+1
Na druhou stranu: sázet kvůli tomu nezačnu – a naopak kdybych se o sázení zajímal a ten web za něco stál, tak bych ho nejspíš znal už dřív.
IMHO tam spousta lidí vleze ze zvědavosti, ale moc nových platících zákazníků jim to nepřidá.
Ahoj,
rád bych upozornil, že MFČR vydalo novou verzi blacklistu 15.8. Udělali to tak šikovně, že si toho RSS čtečka nejspíš nevšimne a jak koukám, stránky blacklist.salamek.cz si nevšimly taky.
Evidentně to s RSS kanálem MF není tak jednoduché, jak se původně zdálo…
Tiskni
Sdílej: