예제 #1
0
        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);
        }
예제 #2
0
        /**
         * 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;
        }