Frage zu bearssl - crypto

Gast #5821560
Lesenswert?

Guten morgen,
kennt jemand das Projekt bearssl https://bearssl.org/?
ich habe da eine frage zum code in der datei test_crypto.c genaugenommen 
zur funktion hextobin
1
/*
2
 * Decode an hexadecimal string. Returned value is the number of decoded
3
 * bytes.
4
 */
5
static size_t hextobin(unsigned char *dst, const char *src)
6
{
7
  size_t num;
8
  unsigned acc;
9
  int z;
10

11
  num = 0;
12
  z = 0;
13
  acc = 0;
14
  while (*src != 0) {
15
    int c = *src ++;
16
    if (c >= '0' && c <= '9') {
17
      c -= '0';
18
    } else if (c >= 'A' && c <= 'F') {
19
      c -= ('A' - 10);
20
    } else if (c >= 'a' && c <= 'f') {
21
      c -= ('a' - 10);
22
    } else {
23
      continue;
24
    }
25
    if (z) {
26
      *dst ++ = (acc << 4) + c;
27
      num ++;
28
    } else {
29
      acc = c;
30
    }
31
    z = !z;
32
  }
33
  return num;
34
}

Was genau macht/bewirkt diese Funktion? Es steht zwar drann 'decode an 
hexadecimal string', aber wie?
Im beispiel wird diese Funktion z.B. wie folgt aufgerufen
[c]
len = hextobin(t1, 
"45A3DC6A106BCD3BD0E48FB579643AA3FF801E5903E80AA9B43A695A8E7F454E93FA208 
B69995FF7A6D5617C2FEB8E546375A664977A48931842AAE796B5A0D64393DCA35F3490F 
C157F5BD83B9D58C2F7926E6AE648A2BD96CAB8FCCD3D35BB11424AD47D973FF6D69CA77 
4841AEC45DFAE99CCF79893E7047FDE6CB00AA76D");
t1 ist ein char-array mit einer länge von 512.
das ergebnis von der Funktion ist:
len = 128
und t1 = 
45A3DC6A106BCD3BD0E48FB579643AA3FF801E593E8AA9B43A695A8E7F454E93FA208B69 
995FF7A6D5617C2FEB8E546375A664977A48931842AAE796B5A0D64393DCA35F3490FC15 
7F5BD83B9D58C2F7926E6AE648A2BD96CAB8FCCD3D35BB11424AD47D973FF6D69CA77484 
1AEC45DFAE99CCF79893E747FDE6CB0AA76D

Es wurden nullen entfernt. Aber nicht alle und warum? Was bewirkt diese 
Funktion?


45A3DC6A106BCD3BD0E48FB579643AA3FF801E59"0"03E8"0"AA9B43A695A8E7F454E93F 
A208B69995FF7A6D5617C2FEB8E546375A664977A48931842AAE796B5A0D64393DCA35F3 
490FC157F5BD83B9D58C2F7926E6AE648A2BD96CAB8FCCD3D35BB11424AD47D973FF6D69 
CA774841AEC45DFAE99CCF79893E7"0"47FDE6CB0"0"AA76D

Oben in Gänsefüsschen, welche Nullen entfernt wurden

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren