diff --git a/openapi.yaml b/openapi.yaml index 16b4105..650c11f 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -5,7 +5,7 @@ info: license: name: MIT url: https://github.com/tiki/l0-index/blob/main/LICENSE - version: 1.0.2 + version: 1.0.3 servers: - url: https://index.l0.mytiki.com paths: diff --git a/pom.xml b/pom.xml index 1c45004..7b27d29 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ com.mytiki l0_index - 1.0.2 + 1.0.3 jar L0 Index diff --git a/src/main/java/com/mytiki/l0_index/features/latest/license/LicenseService.java b/src/main/java/com/mytiki/l0_index/features/latest/license/LicenseService.java index d3bf921..bec1a50 100644 --- a/src/main/java/com/mytiki/l0_index/features/latest/license/LicenseService.java +++ b/src/main/java/com/mytiki/l0_index/features/latest/license/LicenseService.java @@ -15,15 +15,16 @@ import com.mytiki.l0_index.features.latest.title.TitleDO; import com.mytiki.l0_index.features.latest.title.TitleService; import com.mytiki.l0_index.features.latest.use.UseService; -import com.mytiki.l0_index.utilities.AOSignature; -import com.mytiki.l0_index.utilities.AOUse; -import com.mytiki.l0_index.utilities.B64; -import com.mytiki.l0_index.utilities.Decode; +import com.mytiki.l0_index.utilities.*; import com.mytiki.spring_rest_api.ApiExceptionBuilder; import jakarta.transaction.Transactional; +import org.bouncycastle.util.encoders.Base64; import org.springframework.http.HttpStatus; +import org.springframework.security.crypto.codec.Utf8; +import java.nio.charset.StandardCharsets; import java.time.ZonedDateTime; +import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -76,6 +77,7 @@ public LicenseDO insert(IndexAOReqLicense req, String appId, BlockDO block){ public LicenseAORspList list(LicenseAOReq req, String appId, Long pageToken, Integer maxResults){ LicenseAORspList rsp = new LicenseAORspList(); + req.setPtrs(hashPtrs(req.getPtrs())); List licenses = repository.search(req, appId, pageToken, maxResults); if(pageToken == null && licenses.size() < maxResults) @@ -160,4 +162,15 @@ public LicenseAORsp fetch(String transaction, String appId){ } return rsp; } + + + private List hashPtrs(List ptrs){ + if(ptrs == null) return null; + List rsp = new ArrayList<>(ptrs.size()); + ptrs.forEach((ptr) -> { + byte[] hashBytes = Sha256.hash(ptr.getBytes(StandardCharsets.UTF_8)); + rsp.add(Base64.toBase64String(hashBytes)); + }); + return rsp; + } } diff --git a/src/test/java/LicenseTest.java b/src/test/java/LicenseTest.java index f31ab90..58b090b 100644 --- a/src/test/java/LicenseTest.java +++ b/src/test/java/LicenseTest.java @@ -16,7 +16,9 @@ import com.mytiki.l0_index.features.latest.use.UseService; import com.mytiki.l0_index.main.App; import com.mytiki.l0_index.utilities.AOUse; +import com.mytiki.l0_index.utilities.Sha256; import jakarta.transaction.Transactional; +import org.bouncycastle.util.encoders.Base64; import org.junit.jupiter.api.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -27,6 +29,7 @@ import java.net.URI; import java.net.URISyntaxException; +import java.nio.charset.StandardCharsets; import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -252,8 +255,12 @@ public void Test_List_Tag_Success(){ public void Test_List_Ptr_Success(){ String appId = UUID.randomUUID().toString(); BlockDO block = blockService.insert(UUID.randomUUID().toString(), "https://mytiki.com"); + + String ptr = UUID.randomUUID().toString(); + String hashedPtr = Base64.toBase64String(Sha256.hash(ptr.getBytes(StandardCharsets.UTF_8))); + IndexAOReqTitle titleReq = new IndexAOReqTitle(UUID.randomUUID().toString(), UUID.randomUUID().toString(), - UUID.randomUUID().toString(), List.of(UUID.randomUUID().toString())); + hashedPtr, List.of(UUID.randomUUID().toString())); TitleDO title = titleService.insert(titleReq, appId, block); IndexAOReqLicense licenseReq = new IndexAOReqLicense( UUID.randomUUID().toString(), UUID.randomUUID().toString(), title.getTransaction(), @@ -261,7 +268,7 @@ public void Test_List_Ptr_Success(){ service.insert(licenseReq, appId, block); LicenseAOReq req = new LicenseAOReq(); - req.setPtrs(List.of(titleReq.getPtr())); + req.setPtrs(List.of(ptr)); LicenseAORspList list = service.list(req, appId, null, 100); assertEquals(list.getResults().size(), 1); assertEquals(list.getResults().get(0).getId(), licenseReq.getTransaction());