Skip to content

Commit 33303ca

Browse files
Updated for Review Comments
1 parent 072ae8f commit 33303ca

File tree

1 file changed

+37
-18
lines changed

1 file changed

+37
-18
lines changed

src/lib/verify.js

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,9 @@ export const verify = async (token) => {
5050

5151
const publicKey = Loader.Cardano.PublicKey.from_bytes(headermap.key_id());
5252

53-
if (!verifyAddress(address, publicKey)) {
54-
throw new Error("Address verification failed");
53+
const verifyAddressResponse = verifyAddress(address, publicKey);
54+
if (!verifyAddressResponse.status) {
55+
throw new Error(verifyAddressResponse.msg);
5556
}
5657

5758
const parsed_body = parseAsHeaders(body);
@@ -70,13 +71,16 @@ export const verify = async (token) => {
7071
};
7172
};
7273

74+
/**
75+
* Validate the Address provided. To do this we take the Address (or Base Address)
76+
* and compare it to an address (BaseAddress or RewardAddress) reconstructed from the
77+
* publicKey.
78+
* @param {Loader.Cardano.Address} checkAddress
79+
* @param {Loader.Cardano.PublicKey} publicKey
80+
* @returns {{status: bool, msg?: string, code?: number}}
81+
*/
7382
const verifyAddress = (checkAddress, publicKey) => {
74-
console.log("publicKey", publicKey.hash());
75-
// if (this.headers.address.to_bech32() !== checkAddress.to_bech32()) {
76-
// console.log("FASLE1");
77-
// return false;
78-
// }
79-
// check if BaseAddress
83+
let errorMsg = "";
8084
try {
8185
const baseAddress = Loader.Cardano.BaseAddress.from_address(checkAddress);
8286
//reconstruct address
@@ -88,22 +92,37 @@ const verifyAddress = (checkAddress, publicKey) => {
8892
Loader.Cardano.StakeCredential.from_keyhash(stakeKeyHash)
8993
);
9094

91-
return (
92-
checkAddress.to_bech32() === reconstructedAddress.to_address().to_bech32()
93-
);
95+
const status = checkAddress.to_bech32() === reconstructedAddress.to_address().to_bech32();
96+
return {
97+
status,
98+
msg: status ? "Valid Address" : "Base Address does not validate to Reconstructed address",
99+
code: 1
100+
};
94101
} catch (e) {
95-
console.error(e);
102+
errorMsg += ` ${e.message}`
96103
}
97104

98105
try {
99-
const stakeKeyHash = address.hash();
106+
const stakeKeyHash = checkAddress.hash();
100107
const reconstructedAddress = RewardAddress.new(
101108
checkAddress.network_id(),
102109
StakeCredential.from_keyhash(stakeKeyHash)
103110
);
104-
return (
105-
checkAddress.to_bech32() === reconstructedAddress.to_address().to_bech32()
106-
);
107-
} catch (e) {}
108-
return false;
111+
112+
const status = checkAddress.to_bech32() === reconstructedAddress.to_address().to_bech32();
113+
return {
114+
status,
115+
msg: status ? "Valid Address" : "Address does not validate to Reconstructed address",
116+
code: 1
117+
};
118+
119+
} catch (e) {
120+
errorMsg += ` ${e.message}`
121+
}
122+
123+
return {
124+
status: false,
125+
msg: `Error: ${errorMsg}`,
126+
code: 3
127+
};
109128
};

0 commit comments

Comments
 (0)