mirror of
https://github.com/hapifhir/org.hl7.fhir.core.git
synced 2025-02-09 06:14:45 +00:00
fix up SHC parsing problem
This commit is contained in:
parent
6a735d4319
commit
96b5bce878
@ -118,11 +118,13 @@ public abstract class ParserBase {
|
||||
|
||||
//FIXME: i18n should be done here
|
||||
public void logError(int line, int col, String path, IssueType type, String message, IssueSeverity level) throws FHIRFormatError {
|
||||
if (policy == ValidationPolicy.EVERYTHING) {
|
||||
ValidationMessage msg = new ValidationMessage(Source.InstanceValidator, type, line, col, path, message, level);
|
||||
errors.add(msg);
|
||||
} else if (level == IssueSeverity.FATAL || (level == IssueSeverity.ERROR && policy == ValidationPolicy.QUICK))
|
||||
throw new FHIRFormatError(message+String.format(" at line %d col %d", line, col));
|
||||
if (errors != null) {
|
||||
if (policy == ValidationPolicy.EVERYTHING) {
|
||||
ValidationMessage msg = new ValidationMessage(Source.InstanceValidator, type, line, col, path, message, level);
|
||||
errors.add(msg);
|
||||
} else if (level == IssueSeverity.FATAL || (level == IssueSeverity.ERROR && policy == ValidationPolicy.QUICK))
|
||||
throw new FHIRFormatError(message+String.format(" at line %d col %d", line, col));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -237,6 +237,7 @@ public class SHCParser extends ParserBase {
|
||||
|
||||
private static final int BUFFER_SIZE = 1024;
|
||||
public static final String CURRENT_PACKAGE = "hl7.fhir.uv.shc-vaccination#0.6.2";
|
||||
private static final int MAX_ALLOWED_SHC_LENGTH = 1195;
|
||||
|
||||
// todo: deal with chunking
|
||||
public static String decodeQRCode(String src) {
|
||||
@ -253,10 +254,14 @@ public class SHCParser extends ParserBase {
|
||||
return b.toString();
|
||||
}
|
||||
|
||||
public static JWT decodeJWT(String jwt) throws IOException, DataFormatException {
|
||||
public JWT decodeJWT(String jwt) throws IOException, DataFormatException {
|
||||
if (jwt.startsWith("shc:/")) {
|
||||
jwt = decodeQRCode(jwt);
|
||||
}
|
||||
if (jwt.length() > MAX_ALLOWED_SHC_LENGTH) {
|
||||
logError(-1, -1, "jwt", IssueType.TOOLONG, "JWT Payload limit length is "+MAX_ALLOWED_SHC_LENGTH+" bytes for a single image - this has "+jwt.length()+" bytes", IssueSeverity.ERROR);
|
||||
}
|
||||
|
||||
String[] parts = splitToken(jwt);
|
||||
byte[] headerJson;
|
||||
byte[] payloadJson;
|
||||
|
@ -99,7 +99,7 @@ public class ResourceChecker {
|
||||
String s = new String(cnt, StandardCharsets.UTF_8);
|
||||
if (s.startsWith("shc:/"))
|
||||
s = SHCParser.decodeQRCode(s);
|
||||
JWT jwt = SHCParser.decodeJWT(s);
|
||||
JWT jwt = new SHCParser(context).decodeJWT(s);
|
||||
return Manager.FhirFormat.SHC;
|
||||
} catch (Exception e) {
|
||||
if (debug) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user