| | Initialization phase |
| (1) | if (DMID.exist = true) then |
| (2) | return error() |
| (3) | else |
| (4) | creat.block(DID, DMID,parameters, Ppub, Domian_Chain) |
| (5) | creat.block(DID, DMID, Block_num, Alliance_Chain) |
| (6) | end if |
| Registration phase |
| (1) | if (DID.exist = true) then |
| (2) | get(parameters, Ppub) |
| (3) | If (TDID.exist = false) then |
| (4) | If (Sig.TDID = valid) then |
| (5) | creat.block |
| (6) | creat.block |
| (7) | reg_sucess |
| (8) | end if |
| (9) | end if |
| (10) | else |
| (11) | return error() |
| (12) | end if |
| Intradomain authentication |
| (1) | if (DMID.exist = true) then |
| (2) | get(parameters, Ppub) |
| (3) | if (TDID.exist< = true) then |
| (4) | if (Hash(Sig.DMID)&Sig.TDID = valid) then |
| (5) | return auth_sucess |
| (6) | end if |
| (7) | end if |
| (8) | else |
| (9) | return error() |
| (10) | end if |
| | Cross-domain authentication |
| (1) | if (DMID.exist&TDID.exit = true) then |
| (2) | get(parameters, Ppub) |
| (3) | DMID.Merkle_Path = getDomainChainPath(DMID.Block_num) |
| (4) | DMID.Merkle_Root = getDomainChainPath(DMID.Block_num) |
| (5) | DMID.Merkle_hash = computeMerkleTree(DMID_info, Merkle_Path) |
| (6) | if (DMID.Merkle_hash = DMID.Merkle_Root) then |
| (7) | TDID.Merkle_Path = getDomainChainPath(TDID.Block_num) |
| (8) | TDID.Merkle_Root = getDomainChainRoot(TDID.Block_num) |
| (9) | TDID.Merkle_hash = computeMerkleTree(TDID_info, Merkle_Path) |
| (10) | if (TDID.Merkle_hash = TDID.Merkle_Root) then |
| (11) | if (Sig.TDID)&cross_authorization = valid) then |
| (12) | return auth_sucess |
| (13) | end if |
| (14) | end if |
| (15) | end if |
| (16) | else |
| (17) | return error() |
| (18) | end if |