From ea73ad22ba5b4b508af892945808b7cbad5ad9e6 Mon Sep 17 00:00:00 2001 From: devan-ko <143364659+devan-ko@users.noreply.github.com> Date: Thu, 12 Sep 2024 16:10:34 +0900 Subject: [PATCH] Add FanTV's OIDC provider on Zklogin --- fastcrypto-zkp/src/bn254/unit_tests/zk_login_tests.rs | 1 + fastcrypto-zkp/src/bn254/utils.rs | 1 + fastcrypto-zkp/src/bn254/zk_login.rs | 9 +++++++++ fastcrypto-zkp/src/bn254/zklogin_test_vectors.json | 6 ++++++ 4 files changed, 17 insertions(+) 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 806ff8af3..e752e7afd 100644 --- a/fastcrypto-zkp/src/bn254/unit_tests/zk_login_tests.rs +++ b/fastcrypto-zkp/src/bn254/unit_tests/zk_login_tests.rs @@ -445,6 +445,7 @@ async fn test_get_jwks() { OIDCProvider::Credenza3, OIDCProvider::Playtron, OIDCProvider::Threedos, + OIDCProvider::FanTV, ] { 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 dbedb5482..d6f23f9c4 100644 --- a/fastcrypto-zkp/src/bn254/utils.rs +++ b/fastcrypto-zkp/src/bn254/utils.rs @@ -87,6 +87,7 @@ pub fn get_oidc_url( OIDCProvider::TestIssuer => return Err(FastCryptoError::InvalidInput), // Test issuer does not issue JWTs interactively, this is not valid to call. OIDCProvider::Playtron => return Err(FastCryptoError::InvalidInput), // Playtron does not issue JWTs interactively, this is not valid to call. OIDCProvider::Threedos => return Err(FastCryptoError::InvalidInput), // Threedos does not issue JWTs interactively yet, this is not valid to call. + OIDCProvider::FanTV => return Err(FastCryptoError::InvalidInput), // FanTV does not issue JWTs interactively yet, this is not valid to call. }) } diff --git a/fastcrypto-zkp/src/bn254/zk_login.rs b/fastcrypto-zkp/src/bn254/zk_login.rs index a6698feba..e06b2c8c5 100644 --- a/fastcrypto-zkp/src/bn254/zk_login.rs +++ b/fastcrypto-zkp/src/bn254/zk_login.rs @@ -115,6 +115,8 @@ pub enum OIDCProvider { Playtron, /// https://auth.3dos.io/.well-known/openid-configuration Threedos, + /// https://fantv-apis.fantiger.com/v1/web3/jwks.json + FanTV, } impl FromStr for OIDCProvider { @@ -134,6 +136,7 @@ impl FromStr for OIDCProvider { "Credenza3" => Ok(Self::Credenza3), "Playtron" => Ok(Self::Playtron), "Threedos" => Ok(Self::Threedos), + "FanTV" => Ok(Self::FanTV), _ => { let re = Regex::new( r"AwsTenant-region:(?P[^.]+)-tenant_id:(?P[^/]+)", @@ -166,6 +169,7 @@ impl ToString for OIDCProvider { Self::Credenza3 => "Credenza3".to_string(), Self::Playtron => "Playtron".to_string(), Self::Threedos => "Threedos".to_string(), + Self::FanTV => "FanTV".to_string(), Self::AwsTenant((region, tenant_id)) => { format!("AwsTenant-region:{}-tenant_id:{}", region, tenant_id) } @@ -231,6 +235,10 @@ impl OIDCProvider { "https://auth.3dos.io", "https://auth.3dos.io/.well-known/jwks.json", ), + OIDCProvider::FanTV => ProviderConfig::new( + "https://accounts.fantv.world", + "https://fantv-apis.fantiger.com/v1/web3/jwks.json", + ), } } @@ -248,6 +256,7 @@ impl OIDCProvider { "https://accounts.credenza3.com" => Ok(Self::Credenza3), "https://oauth2.playtron.one" => Ok(Self::Playtron), "https://auth.3dos.io" => Ok(Self::Threedos), + "https://accounts.fantv.world" => Ok(Self::FanTV), 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 76b050aa3..ea8667247 100644 --- a/fastcrypto-zkp/src/bn254/zklogin_test_vectors.json +++ b/fastcrypto-zkp/src/bn254/zklogin_test_vectors.json @@ -40,5 +40,11 @@ "kid": "6d361dc9637a275eb585a915af26198ff0d97326ca13f4baf0e4805f72f2a9a0", "n": "y_8hHwq7w2yE4968sbQF98iGUhnu0BwyB5khTxVPAcUnMCYdp61zYcRWml2zdY4HAfq-Nnjb_pAli6I66Vpe9IE8Gf8uGRB0oYIo2S6tYMEe0lhRaEDYVbMdQkuKxTIYMNBXSd_kCHKJM1ZUAo7uFoq_bWuzt2hRG2-79z-Ycbiw0wil0rzFHlpNBKsBLKM4GSGUwOejaL2zCiE_rjf77AvOaJLRd4I_DBYG16t8D1BkxbhkcQCmOxYGG0NqjP3z0lz-w1ALqHCNfhzczZOsgaCrbSlcTKcBTq1syAUUhQmounW7nG5clBIfPQRVH7jCoPztiJUZg6Xz1AN6V07xnw", "provider": "Threedos" + }, + { + "jwt": "eyJ0eXAiOiJqd3QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImI5ZC1iOXZxSkJCZFNyWERGaWdmRUQ5NlpzSmVQS0kwZ3lSSnV3SUtNQ0kifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmZhbnR2LndvcmxkIiwiYXpwIjoicjI0YnNreHlhZnd3dWE2OGV0MndtdXFleW9hLmFwcHMuZmFudHYud29ybGQiLCJhdWQiOiJyMjRic2t4eWFmd3d1YTY4ZXQyd211cWV5b2EuYXBwcy5mYW50di53b3JsZCIsInN1YiI6IjYyOGRmNDU0YjA4MmE5NzAyOWNkYjNhZSIsIm5vbmNlIjoiYXVHeHk1TlRZaWNnVldvWnM5ck5fMUM0X0xvIiwiaWF0IjoxNzEwNDk4OTkyODcwLCJleHAiOjE3MTA0OTg5OTIsImp0aSI6Imx0c2l4cHQyLWZsY3l4c2I4eGEifQ.wFIor5-CSr8tyWOkU1-0fI4jwytSgRgeT9EApjgU-8UFRwbih8mDfXtfnpK5kMWbrAnP0sUrQaQ1-37BtEvvD6Yyfn4VWsNnKc4M5tP3z1YsJVOM4TKKOZBBUdzj4EbryJ-8-C_-Jolikr7MhxcNHeSXWbtfJ8y2Kck6EpEzRsYMeTlhhHUaFgbDeHDS23natyi3QD0epB8eJ1RWRU5La39oSezk0gKy7Z6Y72dacOYUwc2sccmZ6J9KV41pRF-Oo7z1XLeu-_eiNTvXLdgttHLCgioCPzB0mEiE0dNKzREGpNt3K0bA_E-iSO3xy_9Bq5SacKBzPyffj3FCwHqG9A", + "kid": "O5ryxF-zMCLmS6hQhcTC3pAAhQ4YYPEHoiQt1qx_86o", + "n": "mBi1td_GT0MubU5Lfeg4P4XsMUzpzcxuI9Yb1xDOpWFekEZF0TwTLJ6v4a28hiAU_ateCxlFQSkHrhbpdFkEWuDQnPUAnlAr5I7-W8ccKkWuuPwZz0wHcgFSxH5fstFaGuOACewBSmP3BlScQqRYhrj1QB_7j1_G7g17Q-QIBGrvp8gtb2K-saumUlF67ySZrSM_FV1_XalI0Z31oXKMECUfnbje-fLiIvSuXKK-sfO-MSrEEkB8dbzP6ez-xYGYIFisyiqeGlCeO4-ZDkvDrBnDGLxpgLcsWbgcUUvnmyrSQjTxqub17GkuPPwXpof0b8OHhPAC12TfUTRRP1CUfQ", + "provider": "FanTV" } ]