Partilhar via


BLOBs de chave do provedor DSS

BLOBs são usados com o provedor Digital Signature Standard (DSS) para exportar chaves e importar chaves para o CSP ( provedor de serviços de criptografia).

BLOBs de chave pública

Um DSS de chave pública é exportado e importado como um BLOB, uma sequência de bytes estruturada da seguinte forma.

PUBLICKEYSTRUC    publickeystruc;
DSSPUBKEY         dsspubkey;
BYTE              p[dsspubkey.bitlen/8];
BYTE              q[20];
BYTE              g[dsspubkey.bitlen/8];
BYTE              y[dsspubkey.bitlen/8];
DSSSEED           seedstruct;

A tabela a seguir descreve esses componentes. Todos os valores estão em formato little-endian.

Domínio Descrição
dsspubkey Um DSSPUBKEY estrutura. A magia membro deve ter um valor de 0x31535344. Este número hexadecimal é o ASCII codificação do DSS1.
g Uma sequência de BYTE. O gerador, g. Deve ter o mesmo comprimento que p. Se não for o mesmo comprimento que p, então ele deve ser preenchido com 0x00 bytes.
p Uma sequência de BYTE. O módulo primo, p. O bit mais significativo do byte mais significativo deve ser definido como um.
publickeystruc Uma PUBLICKEYSTRUC estrutura.
q Uma sequência de BYTE. O prime, q, 20 bytes de comprimento. O bit mais significativo do byte mais significativo deve ser definido como um.
seedstruct Uma estrutura DSSSEED. Valores de semente e contador para verificação de primos.
y Uma sequência de BYTE. A chave pública, y. Deve ter o mesmo comprimento que p. Se não for o mesmo comprimento que p, então ele deve ser preenchido com 0x00 bytes.

 

Observação

BLOBs de chave pública não são criptografados. Eles contêm chaves públicas em texto simples forma.

 

BLOBs de chave privada

Umde chave privada DSSé exportado e importado como uma sequência de bytes estruturada da seguinte forma.

PUBLICKEYSTRUC    publickeystruc;
DSSPUBKEY         dsspubkey;
BYTE              p[dsspubkey.bitlen/8];
BYTE              q[20];
BYTE              g[dsspubkey.bitlen/8];
BYTE              x[20];
DSSSEED           seedstruct;

A tabela a seguir descreve cada componente. Todos os valores estão em formato little-endian.

Domínio Descrição
dsspubkey Um DSSPUBKEY estrutura. A magia membro deve ser definida como 0x32535344. Este número hexadecimal é o ASCII codificação do DSS2.
g Uma sequência de BYTE. O gerador, g. Deve ter o mesmo comprimento que p. Se não for o mesmo comprimento que p, então ele deve ser preenchido com 0x00 bytes.
publickeystruc Uma PUBLICKEYSTRUC estrutura.
p Uma sequência de BYTE. O módulo primo, p. O bit mais significativo do byte mais significativo deve ser definido como um.
q Uma sequência de BYTE. O prime, q. q tem 20 bytes de comprimento. O bit mais significativo do byte mais significativo deve ser definido como um.
seedstruct Uma estrutura DSSSEED. Valores de semente e contador para verificação de primos.
x Uma sequência de BYTE. O expoente secreto, x. Deve ter sempre 20 bytes de comprimento. Se x tiver menos de 20 bytes de comprimento, então ele deve ser preenchido com 0x00.

 

Ao chamar CryptExportKey, o desenvolvedor pode escolher se deseja criptografar a chave. O PRIVATEKEYBLOB será criptografado se o parâmetro hExpKey contiver um identificador válido para uma chave de sessão. Tudo, exceto o PUBLICKEYSTRUC parte do BLOB é criptografado.

Observação

O algoritmo de encriptação e os parâmetros da chave de encriptação não são armazenados juntamente com o BLOB da chave privada. O aplicativo deve gerenciar e armazenar essas informações. Se zero for passado para hExpKey, a chave privada será exportada sem encriptação.

 

Atenção

É perigoso exportar chaves privadas sem encriptação porque são vulneráveis à interceção e utilização por entidades não autorizadas.