version 1.17, 1999/11/24 00:26:01 |
version 1.18, 1999/11/24 19:53:45 |
|
|
cipher_attack_detected("CRC-32 CBC insertion attack detected"); |
cipher_attack_detected("CRC-32 CBC insertion attack detected"); |
} |
} |
|
|
/* Names of all encryption algorithms. These must match the numbers defined |
/* |
int cipher.h. */ |
* Names of all encryption algorithms. |
|
* These must match the numbers defined in cipher.h. |
|
*/ |
static char *cipher_names[] = |
static char *cipher_names[] = |
{ |
{ |
"none", |
"none", |
|
|
"blowfish" |
"blowfish" |
}; |
}; |
|
|
/* Returns a bit mask indicating which ciphers are supported by this |
/* |
implementation. The bit mask has the corresponding bit set of each |
* Returns a bit mask indicating which ciphers are supported by this |
supported cipher. */ |
* implementation. The bit mask has the corresponding bit set of each |
|
* supported cipher. |
|
*/ |
|
|
unsigned int |
unsigned int |
cipher_mask() |
cipher_mask() |
|
|
return cipher_names[cipher]; |
return cipher_names[cipher]; |
} |
} |
|
|
/* Parses the name of the cipher. Returns the number of the corresponding |
/* |
cipher, or -1 on error. */ |
* Parses the name of the cipher. Returns the number of the corresponding |
|
* cipher, or -1 on error. |
|
*/ |
|
|
int |
int |
cipher_number(const char *name) |
cipher_number(const char *name) |
|
|
return -1; |
return -1; |
} |
} |
|
|
/* Selects the cipher, and keys if by computing the MD5 checksum of the |
/* |
passphrase and using the resulting 16 bytes as the key. */ |
* Selects the cipher, and keys if by computing the MD5 checksum of the |
|
* passphrase and using the resulting 16 bytes as the key. |
|
*/ |
|
|
void |
void |
cipher_set_key_string(CipherContext *context, int cipher, |
cipher_set_key_string(CipherContext *context, int cipher, |
|
|
/* Initialize the initialization vector. */ |
/* Initialize the initialization vector. */ |
switch (cipher) { |
switch (cipher) { |
case SSH_CIPHER_NONE: |
case SSH_CIPHER_NONE: |
/* Has to stay for authfile saving of private key with |
/* |
no passphrase */ |
* Has to stay for authfile saving of private key with no |
|
* passphrase |
|
*/ |
break; |
break; |
|
|
case SSH_CIPHER_3DES: |
case SSH_CIPHER_3DES: |
/* Note: the least significant bit of each byte of key is |
/* |
parity, and must be ignored by the implementation. 16 |
* Note: the least significant bit of each byte of key is |
bytes of key are used (first and last keys are the |
* parity, and must be ignored by the implementation. 16 |
same). */ |
* bytes of key are used (first and last keys are the same). |
|
*/ |
if (keylen < 16) |
if (keylen < 16) |
error("Key length %d is insufficient for 3DES.", keylen); |
error("Key length %d is insufficient for 3DES.", keylen); |
des_set_key((void *) padded, context->u.des3.key1); |
des_set_key((void *) padded, context->u.des3.key1); |