Hola, estoy sufriendo con un requerimiento que se trata de lo siguiente:
- Tomar un Certificado(Llave Publica) y obtener el contenido.
- El contenido del certificado pasarlo a un arreglo de Bytes.
- El arreglo de Bytes convertirlo a una cadena Hexadecimal.
Mis funciones son las siguientes:
Código:
// Pasar la cadena con el contenido del Certificado a un arreglo de Bytes.
function ArrOfByte(AStr: wideString): TByteArr;
var
j: integer;
begin
SetLength( Result, Length(AStr)) ;
for j := 0 to Length(AStr) - 1 do
Result[j] := ord(AStr[j + 1]) - 48;
end;
Código:
// Tomar cada elemento del arreglo de Bytes y convertirlo a Hex
function ByteToHex(InByte:byte):shortstring;
const Digits:array[0..15] of char='0123456789ABCDEF';
begin
result:=digits[InByte shr 4]+digits[InByte and $0F];
end;
Código:
// Load a digital certificate.
success := cert.LoadFromFile(edtArchivoCer.Text);
if (success <> 1) then
begin
ShowMessage(cert.LastErrorText);
Exit;
end;
cadenawide := cert.GetEncoded; // Obtenemos el contenido del CER-PEM
cadenabyte := ArrOfByte(cadenawide); //Contenido lo ponemos en un arreglo de Bytes
cadenahex := '';
for i:= 0 to Length(cadenabyte) -1 do // Formo mi cadena en Hexadecimal
begin
cadenahex := cadenahex + ByteToHex(cadenabyte[i]);
end;
MemoRecep.Clear;
MemoRecep.Lines.Add(cadenawide);
memoCertificado.Clear;
memoCertificado.Lines.Add(cadenahex);
Es correcto mi proceso de tomar el contenido del Archivo CER, pasarlo a un arreglo de Bytes y despues a una cadena HEx???


De antemano gracias por la ayuda.