Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
BLOBs são usados com o provedor DSS (Digital Signature Standard) para exportar chaves e importar chaves para o CSP ( provedor de serviços criptográficos).
BLOBs de chave pública
Um de chave pública do DSS é exportado e importado como um BLOB, uma sequência de bytes estruturados da seguinte maneira.
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 de little-endian.
| Campo | Descrição |
|---|---|
| dsspubkey | Uma estrutura deDSSPUBKEY. O membro mágico deve ter um valor de 0x31535344. Esse número hexadecimal é o codificação ASCII de DSS1. |
| g | Uma sequência BYTE. O gerador, por exemplo, Deve ter o mesmo comprimento que p. Se não tiver o mesmo comprimento que p, ele deverá ser acolchoados com 0x00 bytes. |
| p | Uma sequência BYTE. O módulo principal, p. O bit mais significativo do byte mais significativo deve ser definido como um. |
| publickeystruc | Uma estruturaPUBLICKEYSTRUC. |
| q | Uma sequência BYTE. O tamanho principal, q, 20 bytes. O bit mais significativo do byte mais significativo deve ser definido como um. |
| seedstruct | Uma estrutura deDSSSEED. Valores de semente e contador para verificar os primos. |
| y | Uma sequência BYTE. A chave pública, y. Deve ter o mesmo comprimento que p. Se não tiver o mesmo comprimento que p, ele deverá ser acolchoados com 0x00 bytes. |
Nota
BLOBs de chave pública não são criptografados. Elas contêm chaves públicas de texto sem formatação.
BLOBs de chave privada
Um chave privada do DSS é exportado e importado como uma sequência de bytes estruturados da seguinte maneira.
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 de little-endian.
| Campo | Descrição |
|---|---|
| dsspubkey | Uma estrutura deDSSPUBKEY. O membro mágico deve ser definido como 0x32535344. Esse número hexadecimal é o codificação ASCII de DSS2. |
| g | Uma sequência BYTE. O gerador, por exemplo, Deve ter o mesmo comprimento que p. Se não tiver o mesmo comprimento que p, ele deverá ser acolchoados com 0x00 bytes. |
| publickeystruc | Uma estruturaPUBLICKEYSTRUC. |
| p | Uma sequência BYTE. O módulo principal, p. O bit mais significativo do byte mais significativo deve ser definido como um. |
| q | Uma sequência BYTE. O primeiro, q. q tem 20 bytes de comprimento. O bit mais significativo do byte mais significativo deve ser definido como um. |
| seedstruct | Uma estrutura deDSSSEED. Valores de semente e contador para verificar os primos. |
| x | Uma sequência BYTE. O expoente secreto, x. Deve ter sempre 20 bytes de comprimento. Se x for menor que 20 bytes de comprimento, ele deverá ser adicionado 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 menos a parte PUBLICKEYSTRUC do BLOB é criptografada.
Nota
O algoritmo de criptografia e os parâmetros de chave de criptografia não são armazenados junto com o BLOB de chave privada. O aplicativo deve gerenciar e armazenar essas informações. Se zero for passado para hExpKey, a chave privada será exportada sem criptografia.
Cuidado
É perigoso exportar chaves privadas sem criptografia porque elas são então vulneráveis à interceptação e ao uso por entidades não autorizadas.