1. C++ / Говнокод #11575

    +24

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    #include <stdio.h>
    #include "gost.h"
    
    int main() {
        MemoryFile mf("root.cer");
        MemoryFile mf2("test.cer");
    
        ASN1Parser parser(mf);
        ASN1Parser parser2(mf2);
    
        ASN1Block e1[2];
        parser.Split("30{30{A0#,02$1,30#,30#,30#,30#,30{30#,03$2},A3#},30#,03#}", e1);
    
        unsigned char px[32], py[32], r[32], s[32], h[32];
        for (int i=0;i<32;i++) {
            px[i] = mf.data[e1[1].offset+i+3];
            py[i] = mf.data[e1[1].offset+i+35];
        }
    
        parser2.Split("30{30$1,30#,03$2}", e1);
        for (int i=0;i<32;i++) {
            r[i] = mf2.data[e1[1].offset+64-i];
            s[i] = mf2.data[e1[1].offset+32-i];
        }
    
        Gost3411 hash;
        hash.AddData(mf2.data+e1[0].offset-4, e1[0].size+4);
        hash.Finish(h);
    
        Gost3410 g;
        if (!g.VerifySignature(h, px, py, r, s)) {
            printf("Invalid!");
        } else {
            printf("Valid!");
        }
        return 0;
    }

    Продолжение http://govnokod.ru/11528. Вот так я проверял валидность сертификата...
    Прекрасные говорящие имена переменных...
    Удобный парсер ASN.1...
    Отличная инкапсуляция...
    Ни одного магического числа...

    Запостил: bormand, 12 Августа 2012

    Комментарии (13) RSS

    • #include "gost p 53948-2010.h"
      #include "pogost.h"
      Ответить
      • > gost p 53948-2010.h
        ГОСТ Р 53948-2010 Молоко сгущенное — сырье. Технические условия
        Ответить
        • На самом деле моглибы назвать хедер с полным названием госта хеша. Это былобы правильно. Малоли какие ещё хедеры с гостами подключаю...
          Ответить
          • Говно в том, что там в одном файле Gost28147, Gost3410 и Gost3411. Если их разделить - можно будет каждый хедер назвать как положено.
            Ответить
      • Сгущенку любишь?
        Ответить
      • pogost.h выглядит, как я понимаю, примерно так
        class Pogost : public Structure
        {
        public:
          Unit createUnit()
          {
            return new Skeleton();
          }
          Unit createUpgradedUnit()
          {
            return new SkeletonWarrior();
          }
        };
        Ответить

    Добавить комментарий