Это может быть что-то очевидное, что мне не хватает.
Я хотел бы, чтобы мой хост шифровал сообщение клиенту с использованием открытого ключа клиента, а также подписывал это сообщение с помощью закрытого ключа хоста.
Это похоже на очевидный сценарий, но, возможно, моя концепция просто неверна. Я думаю, что вы должны иметь возможность сделать это с помощью одного сообщения, похожего на PGP. Может ли это быть сделано с M2Crypto легко?
Я попробовал сначала зашифровать сообщение, а затем подписал его, но получаю сообщение "RSAError: дайджест слишком большой для ключа rsa".
Я бы предпочел не отправлять зашифрованное сообщение и его подпись как две отдельные части данных.
Edit: Пока я использую пользовательский разделитель, чтобы отделить сообщение от подписи, но я чувствую, что это плохая форма, и что формат должен содержать положения о том, что я пытаюсь.
Похоже, вы ищете гибридную криптосистему, которая совместно использует шифрование и подпись, используя соответствующие крипто-примитивы, чтобы позволить ей работать независимо от размера данных и инкапсулировать все компоненты криптограммы в одном месте, Хорошие примеры - PGP, HTTPS и DHIES. Хотя мне кажется, что вы можете реализовать такую систему, используя m2crypto, вы, вероятно, не должны; вам гораздо лучше повторить использование существующего протокола, чем самостоятельно. Слишком легко сделать ошибки, которые трудно обнаружить, и сделать безопасность бесполезной.