Research Article

Distributed Blockchain-Based Authentication and Authorization Protocol for Smart Grid

Algorithm 8

GrantResource.
Input
OutputResource or None
1: Generate an access token with the owner’s signature.
2: Long timeStamp = ;
3: String data = accountId + timeStamp + PublicKey;
4: Get ECDSA signature result sigdata = SignWithSecp256k1(data);
5: The user sends the signed token to the server.
6: Resource server queries the owner’s information on the blockchain.
7:  = -
8: then
9:  Query the owner’s information on the blockchain.
10:   =
11:   =
12:  ifthen
13:   String tmpPublicKey = result.getValue2();
14:   String resourceData = result.getValue3();
15:   String tmpsigdata = result.getValue4();
16:   Verify the validity of the access token
17:   iftmpPublicKey.equals(PublicKey) then
18:    Get cryptographic suite cryptoSuite = new CryptoSuite(CryptoType.ECDSATYPE);
19:    hashData = cryptoSuite.hash(dataToBeSigned);
20:    Boolean nVerification = cryptoSuite.verify (hashData, sigdata);
21:    String tmpdataToBeVrified = accountId + UserInfo + tmpPublicKey;
22:    String hashData = cryptoSuite.hash(tmpdataToBeVrified);
23:    Boolean nVerification = cryptoSuite.verify(hashData);
24:    ifnVerification == Truethen
25:     Verify the validity of the resource data
26:     String tmpdataToBeVrified = resourceData + accountId + tmpPublicKey;
27:     hashData = cryptoSuite.hash(tmpdataToBeVrified);
28:     nVerification = cryptoSuite.verify(hashData);
29:     ifnVerification == Truethen
30:      returnResource
31:     end if
32:    end if
33:   end if
34:  end if
35: end if
36: returnNone