Skip to content

Instantly share code, notes, and snippets.

@GaetanoPiazzolla
Created October 27, 2021 19:07
Show Gist options
  • Save GaetanoPiazzolla/1e88e4cb6bdcb801855851f8d87d0503 to your computer and use it in GitHub Desktop.
Save GaetanoPiazzolla/1e88e4cb6bdcb801855851f8d87d0503 to your computer and use it in GitHub Desktop.
// 4 - create CborObject MAP and retrieve Kid and Signature
CBORObject messageObject = CBORObject.DecodeFromBytes(outputStream.toByteArray());
byte[] coseSignature = messageObject.get(3).GetByteString();
byte[] protectedHeader = messageObject.get(0).GetByteString();
byte[] content = messageObject.get(2).GetByteString();
byte[] dataToBeVerified = getValidationData(protectedHeader, content);
CBORObject unprotectedHeader = messageObject.get(1);
byte[] kid = getKid(protectedHeader, unprotectedHeader);
// ....
private static byte[] getValidationData(byte[] protectedHeader, byte[] content) {
return CBORObject.NewArray().
Add("Signature1").
Add(protectedHeader).
Add(new byte[0]).
Add(content).EncodeToBytes();
}
private static byte[] getKid(byte[] protectedHeader, CBORObject unprotectedHeader) {
CBORObject key = HeaderKeys.KID.AsCBOR();
CBORObject kid;
if (protectedHeader.length != 0) {
try {
kid = CBORObject.DecodeFromBytes(protectedHeader).get(key);
if (kid == null) {
kid = unprotectedHeader.get(key);
}
} catch (Exception var8) {
kid = unprotectedHeader.get(key);
}
} else {
kid = unprotectedHeader.get(key);
}
return kid.GetByteString();
}
@GaetanoPiazzolla
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment