Show / Hide Table of Contents
Editar no GitHub

Mapeadores de política (Policy mappers)

Os mapeadores de políticas são utilizados para selecionar um tipo de política baseado em características do signatário. O PKI SDK possui duas implementações de mapeadores, baseado em certificado e em SignerInfo. Caso sua aplicação utilize diferentes políticas customizadas e seja necessário um mapeador para diferentes signatários, basta implementar as interfaces ICadesPolicyMapper ou ICadesPolicyMapperBySignerInfo.

Mapper por certificado

O mapper baseado em certificado pode ser usado tanto no momento da assinatura quanto na validação. É indicado em cenários que políticas de assinaturas distintas, de versões ou padrões diferentes podem ser selecionadas através de campos do certificado do signatário como emissor, política de certificação, entre outros.

O exemplo abaixo demonstra o uso de uma implementação da interface ICadesPolicyMapper que seleciona, baseado no certificado do signatário, uma versão da política de assinatura ICP-Brasil AD-RC entre as versões 1.0, 1.1, 2.0 e 2.1 configuradas na classe BrazilCadesPolicySpec.

// Mapper ICP-Brasil com versões da política AD-RC
var mapper = BrazilCadesPolicyMappers.GetAdrCompleta();

var signer = new CadesSigner();        
signer.SetSigningCertificate(signingCert);
signer.SetDataToSign(toSign);  
signer.SetPolicy(mapper);                  // Define o mapper como política
signer.ComputeSignature();

Para mais informações sobre política ICP-Brasil no SDK veja o artigo Políticas ICP-Brasil.

Mapper por SignerInfo

O mapper baseado em SignerInfo é utilizado na validação de assinaturas que têm política explícita, a política faz parte dos atributos assinados, ou que possuem alguma outra característica específica nas informações do signatário que seja possível recuperar a política de assinatura utilizada.

No exemplo abaixo demonstramos a validação de uma assinatura ICP-Brasil, que possui política explícita, utilizando o mapper ICP-Brasil por SignerInfo. O mapper por signerInfo irá selecionar automaticamente a política de assinatura com suas regras de validação através de informações para cada signatário dentro da assinatura.

byte[] cadesSigContent = ...

// Carregando assinatura
var cadesSig = CadesSignature.Open(cadesSigContent);

// Validação com Mapper por SignerInfo
var vrs = cadesSig.ValidateAllSignatures(BrazilCadesPolicyMappers.GetCadesSignerInfoPolicyMapper());

Veja também

  • Políticas ICP-Brasil
  • ICadesPolicyMapper
  • ICadesPolicyMapperBySignerInfo
  • BrazilCadesPolicyMappers
  • BrazilCadesPolicySpec
Back to top Copyright © 2015-2020 Lacuna Software