public static byte[] BuildOCSPResp(byte[] cert, byte[] ocspResp) { // Generate the VLR structure DataStructs.VlrHeader vlrHeader = GenerateVLR(DataStructs.VlrIdType.OCSP_RESP_VLR_ID, ocspResp.Length); byte[] ret = new byte[vlrHeader.VLRLength]; GeneralUtils.StructureToByteArray(vlrHeader).CopyTo(ret, 0); ocspResp.CopyTo(ret, DataStructs.VLR_HEADER_LEN); return(ret); }
/** * Checks whther BK exists in the signed message, as a part of the S3 message validation */ public static bool DoesBKExist(SigmaDataStructs.SigmaS3Message S3Message, ref byte[] GaGbSig) { // Process certificate header in order to get cert length byte[] header = new byte[DataStructs.VLR_HEADER_LEN]; Array.Copy(S3Message.data, header, header.Length); object certHeader = new DataStructs.VlrHeader(); GeneralUtils.ByteArrayToStructure(header, ref certHeader); int certLen = ((DataStructs.VlrHeader)certHeader).VLRLength; // Extract GaGb from the signed message data Array.Copy(S3Message.data, certLen + DataStructs.VLR_HEADER_LEN, GaGbSig, 0, GaGbSig.Length); byte[] BK = GetBKValuesFromSignedMessage(GaGbSig); return BK != null; }