Commit 974c2e27 authored by garciay's avatar garciay
Browse files

Rebuild with TestCastT3:

1) Add missing valueof() for template (value)
2) Remove duplicate group deviceSignatureHelpers
parent 35d93411
Loading
Loading
Loading
Loading
+29 −34
Original line number Original line Diff line number Diff line
@@ -128,7 +128,7 @@ module LibItsSecurity_Functions {
                    e_signature
                    e_signature
                );
                );
                
                
                return v_toBeSignedSecuredMessage;
                return valueof(v_toBeSignedSecuredMessage);
            }
            }
            
            
            /**
            /**
@@ -422,8 +422,8 @@ module LibItsSecurity_Functions {
                // Build the signature
                // Build the signature
                v_signature := 
                v_signature := 
                    '0000'O & 
                    '0000'O & 
                    p_certificateToBeVerified.signature_.signature_.ecdsa_signature.r.x & 
                    valueof(p_certificateToBeVerified.signature_.signature_.ecdsa_signature.r.x) & 
                    p_certificateToBeVerified.signature_.signature_.ecdsa_signature.s;
                    valueof(p_certificateToBeVerified.signature_.signature_.ecdsa_signature.s);
                log("v_signature=", v_signature);
                log("v_signature=", v_signature);
                
                
                // Verify the certificate
                // Verify the certificate
@@ -432,8 +432,8 @@ module LibItsSecurity_Functions {
                v_result := f_verifyWithEcdsaNistp256WithSha256(
                v_result := f_verifyWithEcdsaNistp256WithSha256(
                    toBeVerifiedData,
                    toBeVerifiedData,
                    v_signature,
                    v_signature,
                    p_publicKey.public_key.eccPoint.x,
                    valueof(p_publicKey).public_key.eccPoint.x,
                    p_publicKey.public_key.eccPoint.y.y
                    valueof(p_publicKey).public_key.eccPoint.y.y
                );
                );
                
                
                log("f_verifyCertificateSignatureWithPublicKey: ", v_result);
                log("f_verifyCertificateSignatureWithPublicKey: ", v_result);
@@ -455,7 +455,7 @@ module LibItsSecurity_Functions {
                
                
                for (v_counter := 0; v_counter < lengthof(p_issuingCertificate.subject_attributes); v_counter := v_counter + 1) {
                for (v_counter := 0; v_counter < lengthof(p_issuingCertificate.subject_attributes); v_counter := v_counter + 1) {
                    log("f_verifyCertificateSignatureWithIssuingCertificate: processing ", p_issuingCertificate.subject_attributes[v_counter]);
                    log("f_verifyCertificateSignatureWithIssuingCertificate: processing ", p_issuingCertificate.subject_attributes[v_counter]);
                    if (p_issuingCertificate.subject_attributes[v_counter].type_ == e_verification_key) {
                    if (valueof(p_issuingCertificate).subject_attributes[v_counter].type_ == e_verification_key) {
                        return f_verifyCertificateSignatureWithPublicKey(
                        return f_verifyCertificateSignatureWithPublicKey(
                            p_certificateToBeVerified,
                            p_certificateToBeVerified,
                            p_issuingCertificate.subject_attributes[v_counter].attribute.key);
                            p_issuingCertificate.subject_attributes[v_counter].attribute.key);
@@ -465,10 +465,6 @@ module LibItsSecurity_Functions {
                return false;
                return false;
            } // End of function f_verifyCertificateSignatureWithIssuingCertificate
            } // End of function f_verifyCertificateSignatureWithIssuingCertificate
            
            
        } // End of group hostSignatureHelpers
        
        group deviceSignatureHelpers {
            
            /**
            /**
             * @desc Verify the signature of the provided secured message
             * @desc Verify the signature of the provided secured message
             * @param p_securedMessage  The message to be verified
             * @param p_securedMessage  The message to be verified
@@ -494,7 +490,7 @@ module LibItsSecurity_Functions {
                
                
                // Create SecuredMessage payload to be signed
                // Create SecuredMessage payload to be signed
                v_toBeSignedSecuredMessage := m_toBeSignedSecuredMessage(
                v_toBeSignedSecuredMessage := m_toBeSignedSecuredMessage(
                    p_securedMessage.security_profile,
                    valueof(p_securedMessage).security_profile,
                    p_securedMessage.header_fields, 
                    p_securedMessage.header_fields, 
                    p_securedMessage.payload_fields, 
                    p_securedMessage.payload_fields, 
                    e_signature
                    e_signature
@@ -510,18 +506,18 @@ module LibItsSecurity_Functions {
                // Verify payload
                // Verify payload
                for (v_counter := 0; v_counter < lengthof(p_securedMessage.trailer_fields); v_counter := v_counter + 1) {
                for (v_counter := 0; v_counter < lengthof(p_securedMessage.trailer_fields); v_counter := v_counter + 1) {
                    if (
                    if (
                        (p_securedMessage.trailer_fields[v_counter].type_ == e_signature) and 
                        (valueof(p_securedMessage).trailer_fields[v_counter].type_ == e_signature) and 
                        (p_securedMessage.trailer_fields[v_counter].trailerField.signature_.algorithm == e_ecdsa_nistp256_with_sha256)
                        (valueof(p_securedMessage).trailer_fields[v_counter].trailerField.signature_.algorithm == e_ecdsa_nistp256_with_sha256)
                    ) {
                    ) {
                        v_signedData := 
                        v_signedData := 
                            '0000'O & 
                            '0000'O & 
                            p_securedMessage.trailer_fields[v_counter].trailerField.signature_.signature_.ecdsa_signature.r.x & 
                            valueof(p_securedMessage).trailer_fields[v_counter].trailerField.signature_.signature_.ecdsa_signature.r.x & 
                            p_securedMessage.trailer_fields[v_counter].trailerField.signature_.signature_.ecdsa_signature.s;
                            valueof(p_securedMessage).trailer_fields[v_counter].trailerField.signature_.signature_.ecdsa_signature.s;
                        v_result := f_verifyWithEcdsaNistp256WithSha256(
                        v_result := f_verifyWithEcdsaNistp256WithSha256(
                            v_hash,
                            v_hash,
                            v_signedData,
                            v_signedData,
                            p_publicKey.public_key.eccPoint.x,
                            valueof(p_publicKey).public_key.eccPoint.x,
                            p_publicKey.public_key.eccPoint.y.y
                            valueof(p_publicKey).public_key.eccPoint.y.y
                        );
                        );
                    }
                    }
                } // End of 'for' statement
                } // End of 'for' statement
@@ -544,7 +540,7 @@ module LibItsSecurity_Functions {
                
                
                for (v_counter := 0; v_counter < lengthof(p_certificate.subject_attributes); v_counter := v_counter + 1) {
                for (v_counter := 0; v_counter < lengthof(p_certificate.subject_attributes); v_counter := v_counter + 1) {
                    log("f_verifyGnSecuredMessageSignatureWithCertificate: processing ", p_certificate.subject_attributes[v_counter]);
                    log("f_verifyGnSecuredMessageSignatureWithCertificate: processing ", p_certificate.subject_attributes[v_counter]);
                    if (p_certificate.subject_attributes[v_counter].type_ == e_verification_key) {
                    if (valueof(p_certificate).subject_attributes[v_counter].type_ == e_verification_key) {
                        return f_verifyGnSecuredMessageSignatureWithPublicKey(
                        return f_verifyGnSecuredMessageSignatureWithPublicKey(
                            p_securedMessage,
                            p_securedMessage,
                            p_certificate.subject_attributes[v_counter].attribute.key);
                            p_certificate.subject_attributes[v_counter].attribute.key);
@@ -573,8 +569,8 @@ module LibItsSecurity_Functions {
                var integer v_index;
                var integer v_index;
                
                
                for (v_index := 0; v_index < v_length; v_index := v_index + 1) {
                for (v_index := 0; v_index < v_length; v_index := v_index + 1) {
                    if (p_securedMessage.header_fields[v_index].type_ == p_headerFieldType) {
                    if (valueof(p_securedMessage).header_fields[v_index].type_ == p_headerFieldType) {
                        v_return := p_securedMessage.header_fields[v_index]; 
                        v_return := valueof(p_securedMessage).header_fields[v_index]; 
                        break;
                        break;
                    }
                    }
                }
                }
@@ -586,15 +582,14 @@ module LibItsSecurity_Functions {
             * @desc    return SignerInfo SecuredMessage field
             * @desc    return SignerInfo SecuredMessage field
             */
             */
            function f_getMsgSignerInfo (
            function f_getMsgSignerInfo (
                                         in template (value) SecuredMessage p_securedMessage
                                         in template (value) SecuredMessage p_securedMessage,
            ) return SignerInfo {
			                             out SignerInfo p_signerInfo
            ) {
                var HeaderField v_hf := f_getMsgHeaderField(p_securedMessage, e_signer_info);
                var HeaderField v_hf := f_getMsgHeaderField(p_securedMessage, e_signer_info);
                
                
                if (isbound(v_hf)) {
                if (isbound(v_hf)) {
                    return v_hf.headerField.signer;
                    p_signerInfo := v_hf.headerField.signer;
                }
                }
                
                return null;
            }
            }
            
            
        }// End of group messageGetters
        }// End of group messageGetters
@@ -610,8 +605,8 @@ module LibItsSecurity_Functions {
                var integer v_index;
                var integer v_index;
                
                
                for (v_index := 0; v_index < v_length; v_index := v_index + 1) {
                for (v_index := 0; v_index < v_length; v_index := v_index + 1) {
                    if( p_cert.validity_restrictions[v_index].type_ == p_type ) {
                    if (valueof(p_cert).validity_restrictions[v_index].type_ == p_type ) {
                        v_return := p_cert.validity_restrictions[v_index];
                        v_return := valueof(p_cert).validity_restrictions[v_index];
                        break;
                        break;
                    }
                    }
                }
                }
@@ -623,7 +618,7 @@ module LibItsSecurity_Functions {
            ) return SignerInfo {
            ) return SignerInfo {
                var SignerInfo ret;
                var SignerInfo ret;
                if (lengthof(p_cert.signer_infos) > 0) {
                if (lengthof(p_cert.signer_infos) > 0) {
                    ret := p_cert.signer_infos[0];
                    ret := valueof(p_cert).signer_infos[0];
                }
                }
                return ret;
                return ret;
            }
            }
@@ -701,8 +696,8 @@ module LibItsSecurity_Functions {
         */
         */
        function f_isValidTwoDLocation(in template (value) TwoDLocation p_location
        function f_isValidTwoDLocation(in template (value) TwoDLocation p_location
        ) return boolean {
        ) return boolean {
            return  p_location.longitude != c_maxLongitude+1 
            return  valueof(p_location).longitude != c_maxLongitude+1 
                and p_location.latitude != c_maxLatitude+1; 
                and valueof(p_location).latitude != c_maxLatitude+1; 
        }
        }


        /**
        /**
@@ -717,10 +712,10 @@ module LibItsSecurity_Functions {
        function f_isRectangularRegionsIntersected(in template (value) RectangularRegion p_r1,
        function f_isRectangularRegionsIntersected(in template (value) RectangularRegion p_r1,
                                                   in template (value) RectangularRegion p_r2
                                                   in template (value) RectangularRegion p_r2
        ) return boolean {                                           
        ) return boolean {                                           
            return not (    p_r2.northwest.longitude > p_r1.southeast.longitude
            return not (    valueof(p_r2).northwest.longitude > valueof(p_r1).southeast.longitude
                         or p_r2.southeast.longitude < p_r1.northwest.longitude
                         or valueof(p_r2).southeast.longitude < valueof(p_r1).northwest.longitude
                         or p_r2.southeast.latitude  > p_r1.northwest.latitude
                         or valueof(p_r2).southeast.latitude  > valueof(p_r1).northwest.latitude
                         or p_r2.northwest.latitude  < p_r1.southeast.latitude );
                         or valueof(p_r2).northwest.latitude  < valueof(p_r1).southeast.latitude );
        }
        }
        
        
        function f_isContinuousRectangularRegions(in template (value) RectangularRegions regions
        function f_isContinuousRectangularRegions(in template (value) RectangularRegions regions
+49 −49
Original line number Original line Diff line number Diff line
@@ -28,19 +28,19 @@ module LibItsSecurity_Pixits {
                    signerInfo    := omit
                    signerInfo    := omit
                }
                }
            },
            },
            subject_info        := m_subject_info_root_ca(
            subject_info        := valueof(m_subject_info_root_ca(
                '455453495f506c7567746573745f526f6f74'O // ETSI_Plugtest_Root
                '455453495f506c7567746573745f526f6f74'O // ETSI_Plugtest_Root
            ),
            )),
            subject_attributes  := {
            subject_attributes  := {
                m_subject_attribute_verification_key(
                valueof(m_subject_attribute_verification_key(
                    m_publicKey_eccPoint(
                    m_publicKey_eccPoint(
                        m_eccPointecdsa_nistp256_with_sha256_uncompressed(
                        m_eccPointecdsa_nistp256_with_sha256_uncompressed(
                            '681bd7f8b4f4483763130b659099a64a6b5d734ea729f966e4436bf8da128c55'O,
                            '681bd7f8b4f4483763130b659099a64a6b5d734ea729f966e4436bf8da128c55'O,
                            '9596f82dcf60625bb2ef113cf85f1a7cc4adda09e239a869e2dd6b974d442378'O
                            '9596f82dcf60625bb2ef113cf85f1a7cc4adda09e239a869e2dd6b974d442378'O
                        )
                        )
                    )
                    )
                ),
                )),
                m_subject_attribute_encryption_key(
                valueof(m_subject_attribute_encryption_key(
                    m_publicKey_aesccm(
                    m_publicKey_aesccm(
                        m_aesccm(
                        m_aesccm(
                            m_eccPointecdsa_nistp256_with_sha256_uncompressed(
                            m_eccPointecdsa_nistp256_with_sha256_uncompressed(
@@ -49,26 +49,26 @@ module LibItsSecurity_Pixits {
                            )
                            )
                        )
                        )
                    )
                    )
                ),
                )),
                m_subject_attribute_assurance_level(
                valueof(m_subject_attribute_assurance_level(
                    m_subjectAssurance(
                    m_subjectAssurance(
                        '001'B, 
                        '001'B, 
                        '00'B
                        '00'B
                    )
                    )
                ),
                )),
                m_subject_attribute_its_aid_list(
                valueof(m_subject_attribute_its_aid_list(
                    { 
                    { 
                        16512,
                        16512,
                        16513
                        16513
                    }
                    }
                )
                ))
            },
            },
            validity_restrictions   := {
            validity_restrictions   := {
                m_validity_restriction_time_start_and_end(
                valueof(m_validity_restriction_time_start_and_end(
                    1408802285,
                    1408802285,
                    1513691885
                    1513691885
                ),
                )),
                m_validity_restriction_region(
                valueof(m_validity_restriction_region(
                    m_geographicRegion_polygonial(
                    m_geographicRegion_polygonial(
                        {
                        {
                            {
                            {
@@ -85,19 +85,19 @@ module LibItsSecurity_Pixits {
                            } 
                            } 
                        }
                        }
                    )
                    )
                )
                ))
            },
            },
            signature_              := m_signature(
            signature_              := valueof(m_signature(
                m_ecdsaSignature(
                m_ecdsaSignature(
                    m_eccPointecdsa_nistp256_with_sha256_x_coordinate_only(
                    m_eccPointecdsa_nistp256_with_sha256_x_coordinate_only(
                        'b668e238a4f243331cc5caa87069b64c35389a23817cc07219556f957648e251'O
                        'b668e238a4f243331cc5caa87069b64c35389a23817cc07219556f957648e251'O
                    ),
                    ),
                    'bc5f2ecf8bba774c3c35b7aab80280e972c1530401ecda8794e387f579a705e8'O
                    'bc5f2ecf8bba774c3c35b7aab80280e972c1530401ecda8794e387f579a705e8'O
                )
                )
            )
            ))
        } // End of config #0
        } // End of config #0
        // TODO Add additional configurations
        // TODO Add additional configurations
    };
    }; // End of modulepar PX_CA_CERTIFICATES
    
    
    /**
    /**
     * @desc AA certificates to be used by the Test Adapter
     * @desc AA certificates to be used by the Test Adapter
@@ -113,19 +113,19 @@ module LibItsSecurity_Pixits {
                    } // End of field signerInfo
                    } // End of field signerInfo
                } 
                } 
            },
            },
            subject_info        := m_subject_info_authorization_authority(
            subject_info        := valueof(m_subject_info_authorization_authority(
                '455453495F506C7567746573745F4141'O // ETSI_Plugtest_Root
                '455453495F506C7567746573745F4141'O // ETSI_Plugtest_Root
            ),
            )),
            subject_attributes  := {
            subject_attributes  := {
                m_subject_attribute_verification_key(
                valueof(m_subject_attribute_verification_key(
                    m_publicKey_eccPoint(
                    m_publicKey_eccPoint(
                        m_eccPointecdsa_nistp256_with_sha256_uncompressed(
                        m_eccPointecdsa_nistp256_with_sha256_uncompressed(
                            'c1ec9c8107f820f54345f4b996a74f984d0cf0b145e894417fedb973e6b23c83'O,
                            'c1ec9c8107f820f54345f4b996a74f984d0cf0b145e894417fedb973e6b23c83'O,
                            'b5bf92da1bbb0704067a8350ee478492d4433c81ea522c713d14685d81c70ea6'O
                            'b5bf92da1bbb0704067a8350ee478492d4433c81ea522c713d14685d81c70ea6'O
                        )
                        )
                    )
                    )
                ),
                )),
                m_subject_attribute_encryption_key(
                valueof(m_subject_attribute_encryption_key(
                    m_publicKey_aesccm(
                    m_publicKey_aesccm(
                        m_aesccm(
                        m_aesccm(
                            m_eccPointecdsa_nistp256_with_sha256_uncompressed(
                            m_eccPointecdsa_nistp256_with_sha256_uncompressed(
@@ -134,26 +134,26 @@ module LibItsSecurity_Pixits {
                            )
                            )
                        )
                        )
                    )
                    )
                ),
                )),
                m_subject_attribute_assurance_level(
                valueof(m_subject_attribute_assurance_level(
                    m_subjectAssurance(
                    m_subjectAssurance(
                        '001'B, 
                        '001'B, 
                        '00'B
                        '00'B
                    )
                    )
                ),
                )),
                m_subject_attribute_its_aid_list(
                valueof(m_subject_attribute_its_aid_list(
                    { 
                    { 
                        16512,
                        16512,
                        16513
                        16513
                    }
                    }
                )
                ))
            },
            },
            validity_restrictions   := {
            validity_restrictions   := {
                m_validity_restriction_time_start_and_end(
                valueof(m_validity_restriction_time_start_and_end(
                    1408802285,
                    1408802285,
                    1513691885
                    1513691885
                ),
                )),
                m_validity_restriction_region(
                valueof(m_validity_restriction_region(
                    m_geographicRegion_polygonial(
                    m_geographicRegion_polygonial(
                        {
                        {
                            {
                            {
@@ -170,19 +170,19 @@ module LibItsSecurity_Pixits {
                            } 
                            } 
                        }
                        }
                    )
                    )
                )
                ))
            },
            },
            signature_              := m_signature(
            signature_              := valueof(m_signature(
                m_ecdsaSignature(
                m_ecdsaSignature(
                    m_eccPointecdsa_nistp256_with_sha256_x_coordinate_only(
                    m_eccPointecdsa_nistp256_with_sha256_x_coordinate_only(
                        '46aa93c900e529b40b9e38af110f89f625ebae187bf4bdc908382eaa019eabef'O
                        '46aa93c900e529b40b9e38af110f89f625ebae187bf4bdc908382eaa019eabef'O
                    ),
                    ),
                    'e2ccb867b96b5f1c9151325297937078020955cf36c435102fa4a04e1e68ab4c'O
                    'e2ccb867b96b5f1c9151325297937078020955cf36c435102fa4a04e1e68ab4c'O
                )
                )
            )
            ))
        } // End of config #0
        } // End of config #0
        // TODO Add additional configurations
        // TODO Add additional configurations
    };
    }; // End of modulepar PX_AA_CERTIFICATES
    
    
    /**
    /**
     * @desc AT certificates to be used by the Test Adapter
     * @desc AT certificates to be used by the Test Adapter
@@ -198,17 +198,17 @@ module LibItsSecurity_Pixits {
                    } // End of field signerInfo
                    } // End of field signerInfo
                } 
                } 
            },
            },
            subject_info        := m_subject_info_authorization_ticket,
            subject_info        := valueof(m_subject_info_authorization_ticket),
            subject_attributes  := {
            subject_attributes  := {
                m_subject_attribute_verification_key(
                valueof(m_subject_attribute_verification_key(
                    m_publicKey_eccPoint(
                    m_publicKey_eccPoint(
                        m_eccPointecdsa_nistp256_with_sha256_uncompressed(
                        m_eccPointecdsa_nistp256_with_sha256_uncompressed(
                            'b9e9c238c335ef8d2fb484e196b0fc36bb90f2aef1f7ce7b28401341ed122f14'O,
                            'b9e9c238c335ef8d2fb484e196b0fc36bb90f2aef1f7ce7b28401341ed122f14'O,
                            'a759ffdfd44d278df2877ac04f079190649e7f495d923c30e549452f33ff5832'O
                            'a759ffdfd44d278df2877ac04f079190649e7f495d923c30e549452f33ff5832'O
                        )
                        )
                    )
                    )
                ),
                )),
                m_subject_attribute_encryption_key(
                valueof(m_subject_attribute_encryption_key(
                    m_publicKey_aesccm(
                    m_publicKey_aesccm(
                        m_aesccm(
                        m_aesccm(
                            m_eccPointecdsa_nistp256_with_sha256_uncompressed(
                            m_eccPointecdsa_nistp256_with_sha256_uncompressed(
@@ -217,37 +217,37 @@ module LibItsSecurity_Pixits {
                            )
                            )
                        )
                        )
                    )
                    )
                ),
                )),
                m_subject_attribute_assurance_level(
                valueof(m_subject_attribute_assurance_level(
                    m_subjectAssurance(
                    m_subjectAssurance(
                        '001'B, 
                        '001'B, 
                        '00'B
                        '00'B
                    )
                    )
                ),
                )),
                m_subject_attribute_its_aid_list(
                valueof(m_subject_attribute_its_aid_list(
                    { 
                    { 
                        16512,
                        16512,
                        16513
                        16513
                    }
                    }
                )
                ))
            },
            },
            validity_restrictions   := {
            validity_restrictions   := {
                m_validity_restriction_time_start_and_end(
                valueof(m_validity_restriction_time_start_and_end(
                    1408802285,
                    1408802285,
                    1513691885
                    1513691885
                )
                ))
            },
            },
            signature_              := m_signature(
            signature_              := valueof(m_signature(
                m_ecdsaSignature(
                m_ecdsaSignature(
                    m_eccPointecdsa_nistp256_with_sha256_x_coordinate_only(
                    m_eccPointecdsa_nistp256_with_sha256_x_coordinate_only(
                        'a108820c22e03a9f0e9e2b2bebd90692994e9d7e787d2b78cc814926107e841a'O
                        'a108820c22e03a9f0e9e2b2bebd90692994e9d7e787d2b78cc814926107e841a'O
                    ),
                    ),
                    '9571f152dbc23065226dc6e955af599b52d93d7e2b63d651d4188dee0a67a8cf'O
                    '9571f152dbc23065226dc6e955af599b52d93d7e2b63d651d4188dee0a67a8cf'O
                )
                )
            )
            ))
        } // End of config #0
        } // End of config #0
        // TODO Add additional configurations
        // TODO Add additional configurations
    };
    }; // End of modulepar PX_AT_CERTIFICATES
    
    
    /**
    /**
     * @desc 3D locations
     * @desc 3D locations
@@ -259,7 +259,7 @@ module LibItsSecurity_Pixits {
            elevation   := '020E'O
            elevation   := '020E'O
        } // End of config #0
        } // End of config #0
        // TODO Add additional configurations
        // TODO Add additional configurations
    };
    }; // End of modulepar PX_TRHEED_LOCATIONS
    
    
    /**
    /**
     * @desc Desscribes the Test Adapter security configurations
     * @desc Desscribes the Test Adapter security configurations
+1 −1
Original line number Original line Diff line number Diff line
@@ -1914,7 +1914,7 @@ module LibItsSecurity_Templates {
            signer_infos            := p_certificate.signer_infos,
            signer_infos            := p_certificate.signer_infos,
            subject_info            := p_certificate.subject_info,
            subject_info            := p_certificate.subject_info,
            subject_attributes      := p_certificate.subject_attributes,
            subject_attributes      := p_certificate.subject_attributes,
            validity_restrictions   := p_certificate.validity_restrictions.
            validity_restrictions   := p_certificate.validity_restrictions
        } // End of template m_toBeSignedCertificate
        } // End of template m_toBeSignedCertificate
        
        
    } // End of group profileCertificates
    } // End of group profileCertificates