All pastes #402984 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-03-20 03:02 UTC
rendered paste body
void
deskey(key, edf)                /* Thanks to James Gillogly & Phil Karn! */
     unsigned char *key;
     int edf;
{
  register int i, j, l, m, n;
  unsigned char pc1m[56], pcr[56];
  unsigned long kn[32];

  for (j = 0; j < 56; j++) {
    l = pc1[j];
    m = l & 07;
    pc1m[j] = (key[l >> 3] & bytebit[m]) ? 1 : 0;
  }
  for (i = 0; i < 16; i++) {
    if (edf == DE1)
      m = (15 - i) << 1;
    else
      m = i << 1;
    n = m + 1;
    kn[m] = kn[n] = 0L;
    for (j = 0; j < 28; j++) {
      l = j + totrot[i];
      if (l < 28)
        pcr[j] = pc1m[l];
      else
        pcr[j] = pc1m[l - 28];
    }
    for (j = 28; j < 56; j++) {
      l = j + totrot[i];
      if (l < 56)
        pcr[j] = pc1m[l];
      else
        pcr[j] = pc1m[l - 28];
    }
    for (j = 0; j < 24; j++) {
      if (pcr[pc2[j]])
        kn[m] |= bigbyte[j];
      if (pcr[pc2[j + 24]])
        kn[n] |= bigbyte[j];
    }
  }
  cookey(kn);
  return;
}