Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

import javax.inject.Inject;

import org.apache.cloudstack.utils.security.DigestHelper;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;

Expand Down Expand Up @@ -188,7 +189,7 @@ public TemplateResponse newTemplateResponse(ResponseView view, TemplateJoinVO te
templateResponse.setPhysicalSize(templatePhysicalSize);
}

templateResponse.setChecksum(template.getChecksum());
templateResponse.setChecksum(DigestHelper.getHashValueFromChecksumValue(template.getChecksum()));
if (template.getSourceTemplateId() != null) {
templateResponse.setSourceTemplateId(template.getSourceTemplateUuid());
}
Expand Down Expand Up @@ -320,7 +321,7 @@ public TemplateResponse newIsoResponse(TemplateJoinVO iso) {
isoResponse.setFeatured(iso.isFeatured());
isoResponse.setCrossZones(iso.isCrossZones());
isoResponse.setPublic(iso.isPublicTemplate());
isoResponse.setChecksum(iso.getChecksum());
isoResponse.setChecksum(DigestHelper.getHashValueFromChecksumValue(iso.getChecksum()));

isoResponse.setOsTypeId(iso.getGuestOSUuid());
isoResponse.setOsTypeName(iso.getGuestOSName());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,4 +116,19 @@ public static void validateChecksumString(String checksum) {
}
}
}

/**
* True if the algorithm is present on the checksum value. Format: {ALG}HASH
*/
protected static boolean isAlgorithmPresent(String checksum) {
return StringUtils.isNotBlank(checksum) && checksum.contains("{") && checksum.contains("}") &&
checksum.indexOf("{") == 0 && checksum.indexOf("}") > checksum.indexOf("{");
}

/**
* Returns the checksum HASH from the checksum value which can have the following formats: {ALG}HASH or HASH
*/
public static String getHashValueFromChecksumValue(String checksum) {
return isAlgorithmPresent(checksum) ? new ChecksumValue(checksum).getChecksum() : checksum;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@
import org.junit.BeforeClass;
import org.junit.Test;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

public class DigestHelperTest {

private final static String INPUT_STRING = "01234567890123456789012345678901234567890123456789012345678901234567890123456789\n";
Expand All @@ -46,17 +49,17 @@ public class DigestHelperTest {

@Test
public void check_SHA256() throws Exception {
Assert.assertTrue(DigestHelper.check(SHA256_CHECKSUM, inputStream));
assertTrue(DigestHelper.check(SHA256_CHECKSUM, inputStream));
}

@Test
public void check_SHA1() throws Exception {
Assert.assertTrue(DigestHelper.check(SHA1_CHECKSUM, inputStream));
assertTrue(DigestHelper.check(SHA1_CHECKSUM, inputStream));
}

@Test
public void check_MD5() throws Exception {
Assert.assertTrue(DigestHelper.check(MD5_CHECKSUM, inputStream));
assertTrue(DigestHelper.check(MD5_CHECKSUM, inputStream));
}

@Test
Expand Down Expand Up @@ -127,6 +130,28 @@ public void testChecksumSanityPrefixWrongChecksumLength() {
String checksum = SHA256_CHECKSUM + "XXXXX";
DigestHelper.validateChecksumString(checksum);
}

@Test
public void testIsAlgorithmPresentPositiveCase() {
assertTrue(DigestHelper.isAlgorithmSupported(SHA256_CHECKSUM));
}

@Test
public void testIsAlgorithmPresentnegativeCase() {
assertTrue(DigestHelper.isAlgorithmSupported(SHA256_NO_PREFIX_CHECKSUM));
}

@Test
public void testGetHashValueFromChecksumValuePrefixPresent() {
String checksum = DigestHelper.getHashValueFromChecksumValue(SHA256_CHECKSUM);
assertEquals(SHA256_NO_PREFIX_CHECKSUM, checksum);
}

@Test
public void testGetHashValueFromChecksumValueNoPrefixPresent() {
String checksum = DigestHelper.getHashValueFromChecksumValue(SHA256_NO_PREFIX_CHECKSUM);
assertEquals(SHA256_NO_PREFIX_CHECKSUM, checksum);
}
}

//Generated with love by TestMe :) Please report issues and submit feature requests at: http://weirddev.com/forum#!/testme