diff --git a/fastcrypto-zkp/src/bn254/unit_tests/zk_login_tests.rs b/fastcrypto-zkp/src/bn254/unit_tests/zk_login_tests.rs index 22db8c177..8769d406c 100644 --- a/fastcrypto-zkp/src/bn254/unit_tests/zk_login_tests.rs +++ b/fastcrypto-zkp/src/bn254/unit_tests/zk_login_tests.rs @@ -447,6 +447,7 @@ async fn test_get_jwks() { OIDCProvider::Threedos, OIDCProvider::Onefc, OIDCProvider::FanTV, + OIDCProvider::Arden, ] { let res = fetch_jwks(&p, &client).await; assert!(res.is_ok()); diff --git a/fastcrypto-zkp/src/bn254/utils.rs b/fastcrypto-zkp/src/bn254/utils.rs index e9546f9b8..3c2d32394 100644 --- a/fastcrypto-zkp/src/bn254/utils.rs +++ b/fastcrypto-zkp/src/bn254/utils.rs @@ -84,6 +84,9 @@ pub fn get_oidc_url( OIDCProvider::KarrierOne => format!("https://accounts.karrier.one/Account/PhoneLogin?ReturnUrl=/connect/authorize?nonce={}&redirect_uri={}&response_type=id_token&scope=openid&client_id={}", nonce, redirect_url, client_id), OIDCProvider::Credenza3 => format!("https://accounts.credenza3.com/oauth2/authorize?client_id={}&response_type=token&scope=openid+profile+email+phone&redirect_uri={}&nonce={}&state=state", client_id, redirect_url, nonce), OIDCProvider::Onefc => format!("https://login.onepassport.onefc.com/de3ee5c1-5644-4113-922d-e8336569a462/b2c_1a_prod_signupsignin_onesuizklogin/oauth2/v2.0/authorize?client_id={}&scope=openid&response_type=id_token&redirect_uri={}&nonce={}", client_id, redirect_url, nonce), + + OIDCProvider::Arden => format!("https://api.arden.cc/auth/authorize?client_id={}&scope=openid&response_type=id_token&redirect_uri={}&nonce={}", client_id, redirect_url, nonce), + OIDCProvider::AwsTenant((region, tenant_id)) => format!("https://{}.auth.{}.amazoncognito.com/login?response_type=token&client_id={}&redirect_uri={}&nonce={}", tenant_id, region, client_id, redirect_url, nonce), // this URL is only useful if CLI testing from Sui is needed, can ignore if a frontend test plan is in place _ => return Err(FastCryptoError::InvalidInput) diff --git a/fastcrypto-zkp/src/bn254/zk_login.rs b/fastcrypto-zkp/src/bn254/zk_login.rs index 153959a9c..2e27a0966 100644 --- a/fastcrypto-zkp/src/bn254/zk_login.rs +++ b/fastcrypto-zkp/src/bn254/zk_login.rs @@ -119,6 +119,8 @@ pub enum OIDCProvider { Onefc, /// https://accounts.fantv.world/.well-known/openid-configuration FanTV, + /// https://api.arden.cc/auth/jwks + Arden, } impl FromStr for OIDCProvider { @@ -140,6 +142,7 @@ impl FromStr for OIDCProvider { "Threedos" => Ok(Self::Threedos), "Onefc" => Ok(Self::Onefc), "FanTV" => Ok(Self::FanTV), + "Arden" => Ok(Self::Arden), _ => { let re = Regex::new( r"AwsTenant-region:(?P[^.]+)-tenant_id:(?P[^/]+)", @@ -174,6 +177,7 @@ impl ToString for OIDCProvider { Self::Threedos => "Threedos".to_string(), Self::Onefc => "Onefc".to_string(), Self::FanTV => "FanTV".to_string(), + Self::Arden => "Arden".to_string(), Self::AwsTenant((region, tenant_id)) => { format!("AwsTenant-region:{}-tenant_id:{}", region, tenant_id) } @@ -247,6 +251,10 @@ impl OIDCProvider { "https://accounts.fantv.world", "https://fantv-apis.fantiger.com/v1/web3/jwks.json", ), + OIDCProvider::Arden => ProviderConfig::new( + "https://oidc.arden.cc", + "https://api.arden.cc/auth/jwks", + ), } } @@ -268,6 +276,7 @@ impl OIDCProvider { Ok(Self::Onefc) } "https://accounts.fantv.world" => Ok(Self::FanTV), + "https://oidc.arden.cc" => Ok(Self::Arden), iss if match_micrsoft_iss_substring(iss) => Ok(Self::Microsoft), _ => match parse_aws_iss_substring(iss) { Ok((region, tenant_id)) => { diff --git a/fastcrypto-zkp/src/bn254/zklogin_test_vectors.json b/fastcrypto-zkp/src/bn254/zklogin_test_vectors.json index d435e1348..9d372ccc7 100644 --- a/fastcrypto-zkp/src/bn254/zklogin_test_vectors.json +++ b/fastcrypto-zkp/src/bn254/zklogin_test_vectors.json @@ -52,5 +52,11 @@ "kid": "O5ryxF-zMCLmS6hQhcTC3pAAhQ4YYPEHoiQt1qx_86o", "n": "mBi1td_GT0MubU5Lfeg4P4XsMUzpzcxuI9Yb1xDOpWFekEZF0TwTLJ6v4a28hiAU_ateCxlFQSkHrhbpdFkEWuDQnPUAnlAr5I7-W8ccKkWuuPwZz0wHcgFSxH5fstFaGuOACewBSmP3BlScQqRYhrj1QB_7j1_G7g17Q-QIBGrvp8gtb2K-saumUlF67ySZrSM_FV1_XalI0Z31oXKMECUfnbje-fLiIvSuXKK-sfO-MSrEEkB8dbzP6ez-xYGYIFisyiqeGlCeO4-ZDkvDrBnDGLxpgLcsWbgcUUvnmyrSQjTxqub17GkuPPwXpof0b8OHhPAC12TfUTRRP1CUfQ", "provider": "Fantv" + }, + { + "jwt": "eyJhbGciOiJSUzI1NiIsImtpZCI6InJzYS0yMDQ4LTE3MjU1NTIwNjgiLCJ0eXAiOiJKV1QifQ.eyJzdWIiOiJkZXZAYXJkZW4uY2MiLCJlbWFpbCI6ImRldkBhcmRlbi5jYyIsImF1ZCI6IjAyZDg0MWJhLWU3OGUtNDc2Mi04MWMxLWY4YmQ5MTNkNmY4MiIsInNjb3BlIjoib3BlbmlkIiwibm9uY2UiOiJoVFBwZ0Y3WEFLYlczN3JFVVM2cEVWWnFtb0kiLCJleHAiOjE3MjU1NTYwNDgsImlhdCI6MTcyNTU1MjQ0OCwiaXNzIjoiaHR0cHM6Ly9vaWRjLmFyZGVuLmNjIn0.HKf5ejMp0nxBSrAS2losqjSPHju-MbB9PdAzG81fdgE6mGT3RDpkQkPjdx0RgSOfdKt3cEXV82Y-ZwslzKn7R4pMsuX3G06AKDSdJdRjGz4Dx0nryYzbPQCCasS_u5X9KkVSS0qxd7jKX2q5krfnxQZtGj6HVNbysF43xSNXXNLHrAm5G_PG4aY9C-v-engGxIu6Y7OJSMZY4bDW5E43i1lBxES_3uozYEJ8JieMSApTsgywDql2dGM_4H9mJE_Ijwa4UlE0xHq9MLwbs0rRuLt_p5fFplOfWeYbm6n3hR0kKYI8YkOs1AK8iFzuhbmopByID-Dxslg1oyEm9UV8bg", + "kid": "rsa-2048-1725567906", + "n": "91zWDFsVOv6IZ_DIjy3fJZRKdLSLxBsW63bs_mpqHJ3JV2KfgVsuiOd69yFixukDnWfh1z-ty57vagwWa8MfSAxy_K2sNEcgbhzK7h8FCS4zXOjOdZ4oT368HEf4witvQ1aX7IgUFS_LgXs56X0cUPWEsH94NyhAlvMghuEbZKujInxYhiSCMJwWZS7K8-jk5xQR7fz3MMxvj_2PdXQ_wW3Hv2_SCdQbBKiGV_YyM_h4FSdloNnsSUEXE8CGg_csNO19FnbsQhKwc3OmPXsSIvGg3j9p2MRFc4trE6s-lvCLn6zIoKKjGhwVzlh_QthGqhzXuNy8lTMtJLNub5aICQ", + "provider": "Arden" } ]