MCPcopy Create free account
hub / github.com/denoland/std / parseSignatureInput

Function parseSignatureInput

http/unstable_message_signatures.ts:1086–1154  ·  view source on GitHub ↗
(
  il: InnerList,
  label: string,
)

Source from the content-addressed store, hash-verified

1084}
1085
1086function parseSignatureInput(
1087 il: InnerList,
1088 label: string,
1089): ParsedSignatureParams {
1090 const components: ComponentIdentifier[] = [];
1091
1092 for (const member of il.items) {
1093 if (member.value.type !== "string") {
1094 throw new TypeError(
1095 `Component identifier in "${label}" is not a String`,
1096 );
1097 }
1098 const name = member.value.value;
1099 const params: ComponentParameters = {};
1100 for (const [key, value] of member.parameters) {
1101 switch (key) {
1102 case "sf":
1103 if (value.type === "boolean" && value.value) params.sf = true;
1104 break;
1105 case "key":
1106 if (value.type === "string") params.key = value.value;
1107 break;
1108 case "bs":
1109 if (value.type === "boolean" && value.value) params.bs = true;
1110 break;
1111 case "req":
1112 if (value.type === "boolean" && value.value) params.req = true;
1113 break;
1114 case "tr":
1115 if (value.type === "boolean" && value.value) params.tr = true;
1116 break;
1117 case "name":
1118 if (value.type === "string") params.name = value.value;
1119 break;
1120 }
1121 }
1122 const hasParams = Object.values(params).some((v) => v !== undefined);
1123 components.push(hasParams ? { name, parameters: params } : { name });
1124 }
1125
1126 const result: ParsedSignatureParams = { components };
1127
1128 for (const [key, value] of il.parameters) {
1129 switch (key) {
1130 case "created":
1131 if (value.type === "integer") result.created = value.value;
1132 break;
1133 case "expires":
1134 if (value.type === "integer") result.expires = value.value;
1135 break;
1136 case "nonce":
1137 if (value.type === "string") result.nonce = value.value;
1138 break;
1139 case "alg":
1140 if (value.type === "string" && isSupportedAlgorithm(value.value)) {
1141 result.algorithm = value.value;
1142 }
1143 break;

Callers 1

verifyMessageFunction · 0.85

Calls 3

isSupportedAlgorithmFunction · 0.85
valuesMethod · 0.80
pushMethod · 0.45

Tested by

no test coverage detected