Como atribuir um certificado de S/MIME para um perfil MAPI para utilização com o Outlook

Traduções de Artigos Traduções de Artigos
Artigo: 312900 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sumário

Este artigo demonstra como programaticamente atribuir um certificado digital a um perfil MAPI para utilizar com o Microsoft Outlook para assinar digitalmente e encriptar correio electrónico. Este artigo aborda a MAPI parte desta tarefa e pressupõe o conhecimento prático das Secure Multipurpose Internet Messaging extensões para o (S/MIME).

Mais Informação

Para atribuir um certificado a um perfil MAPI, siga estes passos:
  1. Obter os hashes tanto o certificado de assinatura do certificado de encriptação. Estes hashes estão no formato binário e pode ser obtidos utilizando a função CertGetCertificateContextProperty da interface de programação da aplicações (API) de criptografia:
    CertGetCertificateContextProperty(pCert, CERT_HASH_PROP_ID, *lpbHash, cbHash);
    					
  2. Gera um codificado ASN1 S/MIME capacidades binário objectos grandes (BLOB) para os certificados. Para mais informações, consulte o RFC Request for Comments () para S/MIME.
  3. Crie um BLOB para manter as definições de segurança. Cada definição ou propriedade é constituída por uma combinação de código / / dados de comprimento da seguinte forma:

    Reduzir esta tabelaExpandir esta tabela
    TAGIndica a propriedade (consulte a lista abaixo).2 bytes
    COMPRIMENTOIndica o comprimento total de propriedade, incluindo bytes tag e comprimento.2 bytes
    DADOSContém os dados.Comprimento variável

    Eis um exemplo:
    0100 0800 01000000
    Translated:
    TAG = 1
    LENGTH = 8 bytes
    DATA = 1
    						
    seguem-se as propriedades que tem de incluir o BLOB:

    Reduzir esta tabelaExpandir esta tabela
    PropriedadeValor numéricoComprimentoDescrição
    PR_CERT_PROP_VERSION0x00018Reservado, sempre 1.
    PR_CERT_MESSAGE_ENCODING0x00068Tipo de codificação (S/MIME = 1).
    PR_CERT_DEFAULTS0x00208Máscara de bits:
    0 x 1 = certificado predefinido para S/MIME.
    0 x 2 = certificado predefinido para todos os formatos.
    0 x 4 = certificado enviar mensagem.
    PR_CERT_DISPLAY_NAME_A0x000BVariávelApresentar o nome da definição na interface de utilizador do Outlook (por exemplo, "os meus S/MIME Settings").
    PR_CERT_KEYEX_SHA1_HASH0x0022VariávelBinário hash de certificado de encriptação. Esta propriedade pode ser omitida se pretender permitir apenas a assinatura.
    PR_CERT_SIGN_SHA1_HASH0x0009VariávelBinário hash de certificado de assinatura.
    PR_CERT_ASYMETRIC_CAPS0x0002VariávelASN1 codificado capacidades S/MIME BLOB.

    Tenha em atenção que as propriedades são todas armazenadas numa sequência de bytes contínua.
  4. Utilize a interface IProfAdmin para abrir o perfil MAPI.
  5. Abra a secção de perfil GUID_Dilkie, onde as definições de segurança são armazenadas. Definir GUID_Dilkie da seguinte forma:
    const GUID CDECL GUID_Dilkie = {  0x53bc2ec0, 0xd953, 0x11cd, {0x97, 0x52, 0x00, 0xaa, 0x00, 0x4a, 0xe4, 0x0e}  };
    					
  6. Passo 5 dá-lhe uma interface IProfSect . Nesta interface, defina a seguinte propriedade:
    #define PR_SECURITY_PROFILES PROP_TAG(PT_MV_BINARY, 0x355)
    						
    esta propriedade é uma propriedade de binária valores múltiplos. Tem de definir o primeiro valor binário na propriedade com o BLOB que criou no passo 3.
    LPPROFSECT          lpProfSect = NULL;
    SPropValue          SecProp;
    LPSPropValue        lpSecProp = &SecProp;
    SBinary             sbCert;
    LPBYTE              lpbCertBlob = NULL;
    ULONG               cbCertBlob = 0;
    
    // Do the work to generate lpbCertBlob (step 3) and open GUID_Dilkie profile section.
    
    // Set up property tag structure for PR_SECURITY_PROFILES.
    SecProp.ulPropTag = PR_SECURITY_PROFILES;
    SecProp.Value.MVbin.cValues = 1;
    SecProp.Value.MVbin.lpbin = &sbCert;
    SecProp.Value.MVbin.lpbin[0].cb = cbCertBlob;
    SecProp.Value.MVbin.lpbin[0].lpb = lpbCertBlob;
    
    // Set properties on the profile section.
    if (FAILED(hRes = lpProfSect->SetProps(1, lpSecProp, NULL)))
    {
        printf("Error setting property on profile.\n");
        goto error;
    }
    					

Propriedades

Artigo: 312900 - Última revisão: 25 de agosto de 2005 - Revisão: 2.5
A informação contida neste artigo aplica-se a:
  • Microsoft Outlook 2000
  • Microsoft Outlook 2002 Standard Edition
  • Microsoft Messaging Application Programming Interface
Palavras-chave: 
kbmt kbhowto kbmsg KB312900 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 312900

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com