S / MIME é um padrão para proteger dados MIME , não enviar e-mail especificamente . Não deve haver nenhum problema em usá-lo com HTTP, já que ambos usam os mesmos formatos MIME e até sintaxe de cabeçalho similar. Por exemplo:
POST /receiver HTTP/1.1
Host: example.com
Content-Type: multipart/signed; protocol="application/pkcs7-signature";
micalg=sha1; boundary="------------ms040900030501050600040105"
Content-Length: 476
--------------ms040900030501050600040105
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
This is a sample message.
--------------ms040900030501050600040105
Content-Type: application/pkcs7-signature
Content-Transfer-Encoding: base64
MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIEKDCC
BCQwggMMoAMCAQICAiAJMA0GCSqGSIb3DQEBBQUAMDgxCzAJBgNVBAYTAkxUMRIwEAYDVQQK
(trimmed)
--------------ms040900030501050600040105--
(Note que o OpenPGP também tem um equivalente; o PGP / MIME, que é implementado pela maioria dos clientes de e-mail compatíveis com o PGP, e novamente pode ser usado pelo HTTP.)
O S / MIME usa o PKCS # 7 como base. Você poderia alternativamente usar o PKCS # 7 bruto que poderia ser usado sem qualquer embalagem S / MIME, talvez usando openssl smime -pk7out , que recebe uma mensagem S / MIME e produz uma estrutura PKCS # 7 signedData .
openssl smime -sign | openssl smime -pk7out | openssl asn1parse -i