blobs de clave de Diffie-Hellman
Los blobs se usan con el proveedor Diffie-Hellman para exportar claves de, e importar claves en, el proveedor de servicios criptográficos (CSP).
Blobs de clave pública
Diffie-Hellman blobs de clave pública, tipo PUBLICKEYBLOB, se usan para intercambiar el valor mod P (G^X) en un intercambio de claves Diffie-Hellman. Estas claves se exportan e importan como una secuencia de bytes con el formato siguiente.
PUBLICKEYSTRUC publickeystruc;
DHPUBKEY dhpubkey;
BYTE y[dhpubkey.bitlen/8]; // Where y = (G^X) mod P
En la tabla siguiente se describe cada componente de la clave BLOB.
Campo | Descripción |
---|---|
dhpubkey | Estructura DHPUBKEY . El miembro mágico debe establecerse en 0x31484400. Este valor hexadecimal es la codificación ASCII de "DH1". |
publickeystruc | Estructura PUBLICKEYSTRUC . |
y | Secuencia BYTE . El valor Y, (G^X) mod P, se encuentra directamente después de la estructura DHPUBKEY y siempre debe ser la longitud, en bytes, del campo bitlen DHPUBKEY (longitud de bits de P) dividido por ocho. Si la longitud de los datos resultantes del cálculo de (G^X) mod P es uno o más bytes más cortos que P divididos por ocho, los datos deben rellenarse con los bytes necesarios (de valor cero) para que los datos sean la longitud deseada (formato little-endian ). |
Blobs de clave privada
Diffie-Hellman blobs de clave privada, tipo PRIVATEKEYBLOB, se usan para almacenar la información pública o privada de una clave de Diffie-Hellman. Estas claves se exportan e importan como una secuencia de bytes con el formato siguiente.
PUBLICKEYSTRUC publickeystruc;
DHPUBKEY dhpubkey;
BYTE prime[dhpubkey.bitlen/8];
BYTE generator[dhpubkey.bitlen/8];
BYTE secret[dhpubkey.bitlen/8];
En la tabla siguiente se describe cada componente de la clave BLOB.
Campo | Descripción |
---|---|
dhpubkey | Estructura DHPUBKEY . El miembro mágico debe establecerse en 0x32484400. Este valor hexadecimal es la codificación ASCII de "DH2". |
generador | Secuencia BYTE . El generador, G. |
publickeystruc | Estructura PUBLICKEYSTRUC . |
Primer | Secuencia BYTE . El módulo primo, P. Estos datos siempre deben tener el bit más significativo del byte más significativo establecido en uno. |
secret | Secuencia BYTE . Exponente secreto, X. |
Nota
El generador y el secreto siempre deben tener la misma longitud, en bytes. Si uno de ellos es un byte o más corto que el otro, debe rellenarse con el número necesario de bytes de valor cero para que sean iguales. Tanto el generador como el secreto están en formato little-endian .