Skip to content

Commit c637f3e

Browse files
tobluxherbertx
authored andcommitted
crypto: testmgr - Add missing DES weak and semi-weak key tests
Ever since commit da7f033 ("crypto: cryptomgr - Add test infrastructure"), the DES test suite has tested only one of the four weak keys and none of the twelve semi-weak keys. DES has four weak keys and twelve semi-weak keys, and the kernel's DES implementation correctly detects and rejects all of these keys when the CRYPTO_TFM_REQ_FORBID_WEAK_KEYS flag is set. However, only a single weak key was being tested. Add tests for all 16 weak and semi-weak keys. While DES is deprecated, it is still used in some legacy protocols, and weak/semi-weak key detection should be tested accordingly. Tested on arm64 with cryptographic self-tests. Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
1 parent 20d868a commit c637f3e

1 file changed

Lines changed: 120 additions & 0 deletions

File tree

crypto/testmgr.h

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9011,6 +9011,126 @@ static const struct cipher_testvec des_tv_template[] = {
90119011
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
90129012
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
90139013
.len = 8,
9014+
}, { /* Weak key */
9015+
.setkey_error = -EINVAL,
9016+
.wk = 1,
9017+
.key = "\xe0\xe0\xe0\xe0\xf1\xf1\xf1\xf1",
9018+
.klen = 8,
9019+
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
9020+
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
9021+
.len = 8,
9022+
}, { /* Weak key */
9023+
.setkey_error = -EINVAL,
9024+
.wk = 1,
9025+
.key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
9026+
.klen = 8,
9027+
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
9028+
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
9029+
.len = 8,
9030+
}, { /* Weak key */
9031+
.setkey_error = -EINVAL,
9032+
.wk = 1,
9033+
.key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
9034+
.klen = 8,
9035+
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
9036+
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
9037+
.len = 8,
9038+
}, { /* Semi-weak key pair 1a */
9039+
.setkey_error = -EINVAL,
9040+
.wk = 1,
9041+
.key = "\x01\xfe\x01\xfe\x01\xfe\x01\xfe",
9042+
.klen = 8,
9043+
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
9044+
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
9045+
.len = 8,
9046+
}, { /* Semi-weak key pair 1b */
9047+
.setkey_error = -EINVAL,
9048+
.wk = 1,
9049+
.key = "\xfe\x01\xfe\x01\xfe\x01\xfe\x01",
9050+
.klen = 8,
9051+
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
9052+
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
9053+
.len = 8,
9054+
}, { /* Semi-weak key pair 2a */
9055+
.setkey_error = -EINVAL,
9056+
.wk = 1,
9057+
.key = "\x1f\xe0\x1f\xe0\x0e\xf1\x0e\xf1",
9058+
.klen = 8,
9059+
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
9060+
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
9061+
.len = 8,
9062+
}, { /* Semi-weak key pair 2b */
9063+
.setkey_error = -EINVAL,
9064+
.wk = 1,
9065+
.key = "\xe0\x1f\xe0\x1f\xf1\x0e\xf1\x0e",
9066+
.klen = 8,
9067+
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
9068+
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
9069+
.len = 8,
9070+
}, { /* Semi-weak key pair 3a */
9071+
.setkey_error = -EINVAL,
9072+
.wk = 1,
9073+
.key = "\x01\xe0\x01\xe0\x01\xf1\x01\xf1",
9074+
.klen = 8,
9075+
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
9076+
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
9077+
.len = 8,
9078+
}, { /* Semi-weak key pair 3b */
9079+
.setkey_error = -EINVAL,
9080+
.wk = 1,
9081+
.key = "\xe0\x01\xe0\x01\xf1\x01\xf1\x01",
9082+
.klen = 8,
9083+
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
9084+
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
9085+
.len = 8,
9086+
}, { /* Semi-weak key pair 4a */
9087+
.setkey_error = -EINVAL,
9088+
.wk = 1,
9089+
.key = "\x1f\xfe\x1f\xfe\x0e\xfe\x0e\xfe",
9090+
.klen = 8,
9091+
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
9092+
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
9093+
.len = 8,
9094+
}, { /* Semi-weak key pair 4b */
9095+
.setkey_error = -EINVAL,
9096+
.wk = 1,
9097+
.key = "\xfe\x1f\xfe\x1f\xfe\x0e\xfe\x0e",
9098+
.klen = 8,
9099+
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
9100+
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
9101+
.len = 8,
9102+
}, { /* Semi-weak key pair 5a */
9103+
.setkey_error = -EINVAL,
9104+
.wk = 1,
9105+
.key = "\x01\x1f\x01\x1f\x01\x0e\x01\x0e",
9106+
.klen = 8,
9107+
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
9108+
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
9109+
.len = 8,
9110+
}, { /* Semi-weak key pair 5b */
9111+
.setkey_error = -EINVAL,
9112+
.wk = 1,
9113+
.key = "\x1f\x01\x1f\x01\x0e\x01\x0e\x01",
9114+
.klen = 8,
9115+
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
9116+
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
9117+
.len = 8,
9118+
}, { /* Semi-weak key pair 6a */
9119+
.setkey_error = -EINVAL,
9120+
.wk = 1,
9121+
.key = "\xe0\xfe\xe0\xfe\xf1\xfe\xf1\xfe",
9122+
.klen = 8,
9123+
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
9124+
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
9125+
.len = 8,
9126+
}, { /* Semi-weak key pair 6b */
9127+
.setkey_error = -EINVAL,
9128+
.wk = 1,
9129+
.key = "\xfe\xe0\xfe\xe0\xfe\xf1\xfe\xf1",
9130+
.klen = 8,
9131+
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
9132+
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
9133+
.len = 8,
90149134
}, { /* Two blocks -- for testing encryption across pages */
90159135
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
90169136
.klen = 8,

0 commit comments

Comments
 (0)