Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с cryptographic message syntax 
V
    Опции темы
Paher
Дата 14.8.2012, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 18.8.2009

Репутация: нет
Всего: нет



Доброго здоровья вам, уважаемые!

Помогите, пожалуйста, новичку в криптографии. Надо из python работать с файлами в формате CMS(cryptographic message syntax). Нужно их создавать, а также вытаскивать из них данные и сведения о подписанте. Скорее всего, неправильно ищу, но просмотрел уже 3 библиотеки (pyCrypto, M2Crypto, cryptolib) и не увидел ответа(и в гугле тоже). Возможно, кто-то из Вас уже с этим сталкивался. Буду благодарен за ссылки, куски кода и просто советы
PM MAIL   Вверх
Paher
Дата 17.8.2012, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 18.8.2009

Репутация: нет
Всего: нет



Так ничего и не нашел, кроме прямого вызова OpenSSL. Буду пока делать так. 
PM MAIL   Вверх
dbykov
Дата 7.12.2012, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 20.11.2007

Репутация: нет
Всего: нет



Аналогичная ситуация. Напрямую к OpenSSL обращаюсь.
PM MAIL   Вверх
Paher
Дата 10.8.2014, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 18.8.2009

Репутация: нет
Всего: нет



Возвращаясь к теме

Код

from M2Crypto import BIO, SMIME, X509, m2


def extract_container(data):
    '''
    Извлечение и проверка подписи CMS-сообщения. Бросает исключение, если
    подпись не бьется с сертификатом из сообщения.

    * `data` -  CMS-сообщение в виде байтовой строки

    Возвращает пару вида: (данные, отпечаток сертификата)

    '''
    inp = BIO.MemoryBuffer(data)
    p7 = SMIME.PKCS7(m2.pkcs7_read_bio_der(inp._ptr()), 1)
    certStack = p7.get0_signers(X509.X509_Stack())
    thumb = certStack[0].get_fingerprint('sha1')
    st = X509.X509_Store()
    mime = SMIME.SMIME()
    mime.set_x509_store(st)
    mime.set_x509_stack(certStack)
    result = mime.verify(p7, flags=SMIME.PKCS7_NOVERIFY)
    return result, thumb


def sign_container(data, key, cert):
    '''
    Подписывание данных сертификатом и упаковка в сообщение CMS

    * `data` - подписываемые данные в виде байтовой строки
    * `key` - закрытый ключ для подписи, закодированный в PEM
    * `cert` - сертификат для подписи, закодированный в PEM

    Возвращает CMS-сообщение, закодированное в DER, в виде байтовой строки

    '''
    buf = BIO.MemoryBuffer(data)
    mime = SMIME.SMIME()
    key_bio = BIO.File(open(key))
    cert_bio = BIO.File(open(cert))
    mime.load_key_bio(key_bio, cert_bio)
    pkcs7 = mime.sign(buf, flags=SMIME.PKCS7_BINARY)
    out = BIO.MemoryBuffer()
    pkcs7.write_der(out)
    return out.read()



спасибо одному моему знакомому, может, кому пригодится

Это сообщение отредактировал(а) Paher - 10.8.2014, 12:01
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0679 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.