Действителен ли пример DKIM в RFC 6376 (и RFC 4871)?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Действителен ли пример DKIM в RFC 6376 (и RFC 4871)?

Сообщение Anonymous »

Я боролся с этим на протяжении многих лет и просто не могу отпустить это. Что бы я ни пытался, я не могу понять пример подписи электронной почты DKIM в Приложении А. Я проследил за ошибками, которые исправили заголовки в примере, само существование которого предполагает, что это должно работать. Хэш тела работает так, как ожидалось, но вычисляемая мной подпись — нет. Мне интересно, дефектный ли пример или я чего-то не понимаю в том, как он должен работать.
Закрытый ключ из Приложения C в RFC 6376
const string RSA_PRIVATE_KEY = @" -----BEGIN RSA PRIVATE KEY-----
MIICXwIBAAKBgQDwIRP/UC3SBsEmGqZ9ZJW3/DkMoGeLnQg1fWn7/zYtIxN2SnFC
jxOCKG9v3b4jYfcTNh5ijSsq631uBItLa7od+v/RtdC2UzJ1lWT947qR+Rcac2gb
to/NMqJ0fzfVjH4OuKhitdY9tf6mcwGjaNBcWToIMmPSPDdQPNUYckcQ2QIDAQAB
AoGBALmn+XwWk7akvkUlqb+dOxyLB9i5VBVfje89Teolwc9YJT36BGN/l4e0l6QX
/1//6DWUTB3KI6wFcm7TWJcxbS0tcKZX7FsJvUz1SbQnkS54DJck1EZO/BLa5ckJ
gAYIaqlA9C0ZwM6i58lLlPadX/rtHb7pWzeNcZHjKrjM461ZAkEA+itss2nRlmyO
n1/5yDyCluST4dQfO8kAB3toSEVc7DeFeDhnC1mZdjASZNvdHS4gbLIA1hUGEF9m
3hKsGUMMPwJBAPW5v/U+AWTADFCS22t72NUurgzeAbzb1HWMqO4y4+9Hpjk5wvL/
eVYizyuce3/fGke7aRYw/ADKygMJdW8H/OcCQQDz5OQb4j2QDpPZc0Nc4QlbvMsj
7p7otWRO5xRa6SzXqqV3+F0VpqvDmshEBkoCydaYwc2o6WQ5EBmExeV8124XAkEA
qZzGsIxVP+sEVRWZmW6KNFSdVUpk3qzK0Tz/WjQMe5z0UunY9Ax9/4PVhp/j61bf
eAYXunajbBSOLlx4D+TunwJBANkPI5S9iylsbLs6NkaMHV6k5ioHBBmgCak95JGX
GMot/L2x0IYyMLAz6oLWh2hm7zwtb0CgOrPo1ke44hFYnfc=
-----END RSA PRIVATE KEY-----";

Заголовки из примера сообщения и подписи в Приложении A, с заголовком подписи, включая хеш тела, добавленным к подписанным заголовкам, как описано в разделе 3.7
const string HEADERS = @"Received: from client1.football.example.com [192.0.2.1]
by submitserver.example.com with SUBMISSION;
Fri, 11 Jul 2003 21:01:54 -0700 (PDT)
From: Joe SixPack
To: Suzie Q
Subject: Is dinner ready?
Date: Fri, 11 Jul 2003 21:00:37 -0700 (PDT)
Message-ID:
DKIM-Signature: v=1; a=rsa-sha256; s=brisbane; d=example.com;
c=simple/simple; q=dns/txt; i=[email protected];
h=Received : From : To : Subject : Date : Message-ID;
bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
b=";

const string EXPECTED_SIGNATURE = "AuUoFEfDxTDkHlLXSZEpZj79LICEps6eda7W3deTVFOk4yAUoqOB4nujc7YopdG5dWLSdNg6xNAZpOPr+kHxt1IrE+NahM6L/LbvaHutKVdkLLkpVaVVQPzeRDI009SO2Il5Lu7rDNH6mZckBdrIx0orEtZV4bmp/YzhwvcubU4=";

И, наконец, рассматриваемая логика. Со временем это стало намного более кратким, поскольку в структуру были добавлены различные криптографические функции, но я всегда получал одну и ту же неожиданную подпись.
var rsa = System.Security.Cryptography.RSA.Create();

rsa.ImportFromPem(RSA_PRIVATE_KEY);

var signature = rsa.SignData(Encoding.UTF8.GetBytes(HEADERS),
System.Security.Cryptography.HashAlgorithmName.SHA256,
System.Security.Cryptography.RSASignaturePadding.Pkcs1);

var signatureString = Convert.ToBase64String(signature);

Assert.Equal(EXPECTED_SIGNATURE, signatureString);

И как бы то ни было, вот что я рассчитал
PgpOeOGQgKDzYvwezymrJpa2KzjMkcOF86HaZNagCNuOwPMW67T+PgNfb1LyGeey07FsOhBQuQVUm36BFyvu8V3w6B/LYJITIfiC+GUA/C8/iJUTswSv9NOeZnjsebstqjI4LTuXRDqmQqex9TbW/8SA2rlZwegAyg0biKj75pg=


Подробнее здесь: https://stackoverflow.com/questions/790 ... 4871-valid
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Действителен ли пример DKIM в RFC 6376 (и RFC 4871)?
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Действителен ли пример DKIM в RFC 6376 (и RFC 4871)?
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Обертка ключа AES с использованием другого ключа AES и развертывание для получения исходного ключа (RFC 3394 и RFC 5649)
    Гость » » в форуме JAVA
    0 Ответы
    174 Просмотры
    Последнее сообщение Гость
  • Подписание электронного письма дает dkim=neutral (хеш тела не проверен) при отправке через API Gmail от Google.
    Anonymous » » в форуме C#
    0 Ответы
    41 Просмотры
    Последнее сообщение Anonymous
  • Как проверить подпись DKIM простого электронного письма, которое Yahoo не дает
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»