|
1 | | -package org.owasp.wrongsecrets.challenges.docker.challenge63; |
| 1 | +package org.owasp.wrongsecrets.challenges.docker; |
2 | 2 |
|
3 | 3 | import static org.owasp.wrongsecrets.Challenges.ErrorResponses.DECRYPTION_ERROR; |
4 | 4 |
|
|
9 | 9 | import javax.crypto.spec.IvParameterSpec; |
10 | 10 | import javax.crypto.spec.SecretKeySpec; |
11 | 11 | import lombok.extern.slf4j.Slf4j; |
12 | | -import com.google.common.base.Strings; |
13 | | -import org.owasp.wrongsecrets.challenges.Challenge; |
14 | | -import org.owasp.wrongsecrets.challenges.Spoiler; |
| 12 | +import org.owasp.wrongsecrets.challenges.FixedAnswerChallenge; |
15 | 13 | import org.springframework.stereotype.Component; |
16 | 14 |
|
17 | 15 | /** |
|
21 | 19 | */ |
22 | 20 | @SuppressWarnings("java:S5542") |
23 | 21 | @SuppressFBWarnings( |
24 | | - value = {"CIPHER_INTEGRITY", "PADDING_ORACLE"}, |
| 22 | + value = {"CIPHER_INTEGRITY", "PADDING_ORACLE"}, |
25 | 23 | justification = "Challenge intentionally demonstrates hardcoded key/IV and CBC weaknesses") |
26 | 24 | @Slf4j |
27 | 25 | @Component |
28 | | -public class Challenge63 implements Challenge { |
| 26 | +public class Challenge63 extends FixedAnswerChallenge { |
29 | 27 |
|
30 | 28 | private static final String HARDCODED_KEY = "SuperSecretKey12"; |
31 | 29 | private static final String HARDCODED_IV = "InitVector123456"; |
32 | 30 | private static final String CIPHERTEXT = "TDPwOvcLsbCWV5erlk6OHFnlFoXNtdQOt2JQeq+i4Ho="; |
33 | | - private String result; |
34 | | - |
35 | | - public Challenge63() { |
36 | | - // explicit constructor required |
37 | | - } |
38 | 31 |
|
39 | 32 | @Override |
40 | | - public Spoiler spoiler() { |
41 | | - if (Strings.isNullOrEmpty(result)) { |
42 | | - result = getAnswer(); |
43 | | - } |
44 | | - return new Spoiler(result); |
45 | | - } |
46 | | - |
47 | | - @Override |
48 | | - public boolean answerCorrect(String answer) { |
49 | | - if (Strings.isNullOrEmpty(result)) { |
50 | | - result = getAnswer(); |
51 | | - } |
52 | | - return result.equals(answer); |
53 | | - } |
54 | | - |
55 | | - private String getAnswer() { |
| 33 | + public String getAnswer() { |
56 | 34 | try { |
57 | 35 | byte[] keyBytes = HARDCODED_KEY.getBytes(StandardCharsets.UTF_8); |
58 | 36 | byte[] ivBytes = HARDCODED_IV.getBytes(StandardCharsets.UTF_8); |
|
0 commit comments