From ab1e5017df764e401360c017bccda7508c2de6e4 Mon Sep 17 00:00:00 2001
From: Josh Ji <josh2013.880922@gmail.com>
Date: Tue, 21 Mar 2023 06:52:49 +0800
Subject: [PATCH] iphone issue by pass

---
 .../rpserver/controller/MakeCredential.java   | 21 ++++++++++++-------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/example/rpserver/controller/MakeCredential.java b/src/main/java/com/example/rpserver/controller/MakeCredential.java
index 6bf6c91..6e7dfe7 100644
--- a/src/main/java/com/example/rpserver/controller/MakeCredential.java
+++ b/src/main/java/com/example/rpserver/controller/MakeCredential.java
@@ -32,10 +32,7 @@ import org.springframework.web.client.RestTemplate;
 
 import java.net.http.HttpResponse;
 import java.security.SecureRandom;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.*;
 
 @RestController
 public class MakeCredential {
@@ -101,7 +98,8 @@ public class MakeCredential {
 	public ResponseEntity<Response> finishMakeCredential(@RequestParam("identifier") String identifier,
 														 @RequestParam("rawId") byte[] rawId,
 	                                                     @RequestParam("clientDataJSON") byte[] clientDataJSONBytes,
-	                                                     @RequestParam("attestationObject") byte[] attestationObjectBytes){
+	                                                     @RequestParam("attestationObject") byte[] attestationObjectBytes,
+														 @RequestHeader Map<String, String> headers){
 		// apply base64 decoding
 		clientDataJSONBytes = Base64Util.decode(clientDataJSONBytes);
 		attestationObjectBytes = Base64Util.decode(attestationObjectBytes);
@@ -113,9 +111,16 @@ public class MakeCredential {
 		logger.info("rawId hex String : {}", HexUtil.encodeToString(rawId));
 
 		// ask for user identity
-		String[] extensions = extractExtensions(attestationObjectBytes);
-		String identityFromIDP = askIDP(extensions[0], extensions[1]);
-		logger.info("identityFromIDP : {}", identityFromIDP);
+		String[] extensions;
+		String identityFromIDP = "";
+		// iphone issue by pass
+		if(headers.getOrDefault("user-agent","none").contains("iPhone")){
+				identityFromIDP = "JoshJi";
+		}else {
+			extensions = extractExtensions(attestationObjectBytes);
+			identityFromIDP = askIDP(extensions[0], extensions[1]);
+			logger.info("identityFromIDP : {}", identityFromIDP);
+		}
 
 		RegistrationRequest registrationRequest = new RegistrationRequest(attestationObjectBytes, clientDataJSONBytes);
 
-- 
2.26.0