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 .