# Alternative SIOP diagrams
#### Web3 flow using OIDC + PKCE
```mermaid
sequenceDiagram
dApp->>SDK: signIn (+ requested claims)
SDK-->>dApp: create OIDC request + redirect
dApp->>OP: redirect with OIDC request
OP->>OP: authn + authz (eip712, eip2844, + enter user data)
OP->>Wallet: eip712, eip2844
Wallet-->>OP: signature
OP-->>dApp: redirect with code
dApp->>OP: code for id_token (+PKCE stuff)
OP-->>dApp: id_token (including VPs + DID)
dApp->>SDK: verify id_token
SDK-->>dApp: verified data (+ DID)
```
#### Web3 flow using SIOP Bridge
```mermaid
sequenceDiagram
dApp->>Bridge: signIn (+ requested claims)
Bridge->>Bridge: provide widget with wallet options
Bridge->>Wallet: eip712, eip2844, SIOPv2, + enter some data ...
Wallet-->>Bridge: signed id_token (alg=urn:eip712, ...)
Bridge-->>dApp: verified data
```
#### Web3 flow using OIDC + SIOPv2
```mermaid
sequenceDiagram
dApp->>SDK: signIn (+ requested claims)
SDK->>SDK: provide widget with wallet options
SDK->>Wallet: eip712, eip2844, SIOPv2 ...
Wallet-->SDK: signed id_token (alg=urn:eip712, ...)
SDK-->dApp: id_token
```
#### ENS Web2 flow using SIOPv2
```mermaid
sequenceDiagram
note over Browser: loading VCs into ENS
SomeApp->>ENS: add VCs and claims
ENS-->>SomeApp: ok
note over Browser: sign-in process starts here
Browser->>Web2RP: get sign-in page
Web2RP->>SDKServer: create request
SDKServer-->>Web2RP: SIOP request
Web2RP-->>Browser: sign-in page (with SIOP request)
Browser->>SDKFrontend: SIOP request
SDKFrontend->>Wallet: web3 connect
Wallet-->>SDKFrontend: eth accounts
SDKFrontend->>ENS: reverse resolution
ENS-->>SDKFrontend: ENS name
SDKFrontend->>ENS: lookup other claims and VCs
ENS-->>SDKFrontend: claims and VCs
SDKFrontend->>SDKFrontend: ENS name to did:ens (defaults to simple secp256k1 auth/assertion key)
SDKFrontend->>Wallet: EthereumEip712Signature2021 (id_token and optionally second call to sign VP)
Wallet-->>SDKFrontend: signature
SDKFrontend->>SDKFrontend: pack id_token and optionally VP with signature(s)
SDKFrontend->>Web2RP: id_token
Web2RP->>SDKServer: verify id_token (+ VCs)
SDKServer-->>Web2RP: ok
Web2RP-->>SDKFrontend: session + userinfo
SDKFrontend-->>Browser: ok
Browser->>Browser: request new page with session, or just reload, or just set userinfo
```