Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit 6ff78f35 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

adding date to component verification form, more work on user manual

parent b97c87e2
Branches
Tags
No related merge requests found
Showing
with 23430 additions and 2 deletions
...@@ -52,11 +52,19 @@ Computing the digest value of an XML document in the VECTO context is done apply ...@@ -52,11 +52,19 @@ Computing the digest value of an XML document in the VECTO context is done apply
Currently, only two canonicalization methods, namely http://www.w3.org/2001/10/xml-exc-c14n#, and urn:vecto:xml:2017:canonicalization, and one digest method, namely http://www.w3.org/2001/04/xmlenc#sha256 are supported. Both canonicalization methods are mandatory (as described above). Further methods may be added later. Currently, only two canonicalization methods, namely http://www.w3.org/2001/10/xml-exc-c14n#, and urn:vecto:xml:2017:canonicalization, and one digest method, namely http://www.w3.org/2001/04/xmlenc#sha256 are supported. Both canonicalization methods are mandatory (as described above). Further methods may be added later.
## Main Screen
![](images/VectoHashingTool_Start.PNG)
The main screen allows to select from the four main functionalities the VECTO Hashing Tool provides.
## Hashing Component Data ## Hashing Component Data
### Functionality
The "Hash Component Data" window allows to compute the digest value and adds the Signature element to an XML component file. The "Hash Component Data" window allows to compute the digest value and adds the Signature element to an XML component file.
The selected component data file has to contain the structure of an XML component file as described in the XML schema, *except* it *must not* contain the Signature element following the Data element. Moreover, the selected file has to be a component file (engine, gearbox, axlegear, angledrive, tyre, retarder, torque converter), other file types such as job files and report files are *not supported*!. The selected component data file has to be in the form of an XML component file as described in the XML schema, *except* it *must not* contain the Signature element following the Data element. Moreover, the selected file has to be a component file (engine, gearbox, axlegear, angledrive, tyre, retarder, torque converter), other file types such as job files and report files are *not supported*!.
The component data may already contain an id-attribute in the Data element. However, if the length of the id value is less than 5 characters it will be overwritten by the hashing tool in order to guarantee sufficient uniqueness. The component data may already contain an id-attribute in the Data element. However, if the length of the id value is less than 5 characters it will be overwritten by the hashing tool in order to guarantee sufficient uniqueness.
...@@ -66,13 +74,76 @@ As a refeence for the user, the GUI shows the canonicalization method and digest ...@@ -66,13 +74,76 @@ As a refeence for the user, the GUI shows the canonicalization method and digest
If the generated component file validates against the XML schema it can be saved to disk. Otherwise, the error messges and warnings can be inspected via the /Details.../ button. If the generated component file validates against the XML schema it can be saved to disk. Otherwise, the error messges and warnings can be inspected via the /Details.../ button.
### UI Elements
![](images/VectoHashingTool_HashComponentData_ann.svg)
1 ... File selection dialog, see [here fore more details](#file-selection-dialog)
2 ... Error indicator. Shows more details in case the selected file could not be read correctly (see [error dialgo](#error-dialog)).
3 ... Information area. If the generated component file is valid this area shows the canonicalization methods and digest method used to compute the digest value shown below. The digest value can be copied to tye clipboard using the 'Copy' button next to the textbox showing the digest value.
4 ... Status indicator. Either shows a green checkmark in case the generated component file is valid or a red cross if the component file is not valid. More details can be found in the [error dialgo](#error-dialog).
5 ... Allows to save the component file if it is valid.
6 ... Go back to the main screen
## Verifying Integrity Component Data ## Verifying Integrity Component Data
### Functionality
The 'Verify Component Data' screen allows to verify the integrity of a component file. The canonicalization methods and digest method as well as the digest value are read from the selected XML file and displayed. Using the same canonicalization methods and digest method the digest value is re-computed. If the computed digest value equals the digest value read from the file the component file is valid.
In case the computed digest value does not equal the digest value read from the file the component file is invalid and may not be used further.
### UI Elements
![](images/VectoHashingTool_VerifyComponentData_ann.svg)
1 ... File selection dialog, see [here fore more details](#file-selection-dialog)
2 ... Error indicator. Shows more details in case the selected file could not be read correctly (see [error dialgo](#error-dialog)).
3 ... Information area. Displays the VECTO component identified in the file, its certification date, the canonicalization methods and digest method as well as the digest value contained in the selected file. The VECTO Hashing Tool re-computes the digest value using the same methods as specified in the file and shows it in the informaiton area.
4 ... Status indicator. If the digest values match (i.e., the component file is valid) a green checkmark is shown or a red cross if the component file is not valid. More details can be found in the [error dialgo](#error-dialog).
5 ... Go back to the main screen
## Verifying Integrity VECTO Job Data ## Verifying Integrity VECTO Job Data
### Functionality
The 'Verify VECTO Job' screen allows to verify the integrity of all components in a VECTO Job file.
ToDo: - File Dialog + Status
- General Info output
- Components list
- Status indicator
## Verifying Integrity VECTO Results ## Verifying Integrity VECTO Results
## Using the Hashing Library ## Using the Hashing Library
## General UI Elements
### File Selection Dialog
ToDo: Image
The file selection dialog allows to browse for a file in the VECTO Hashing Tool via the 'Browse...' button. Alternatively, the path to an XML file can be entered into the textfield. Next to the 'Browse...' button is a status indicator showing the status of the selected file.
![](images/Icon_XML_outline.svg) No file has been selected
![](images/Icon_XML_red.svg) Failed to read the file. Check that the file exists and is an XML file.
![](images/Icon_XML_green1.svg) Failed to validate the selected XML file against a known XML schema. Check that the selected file is a valid VECTO XML file
![](images/Icon_XML_green2.svg) The selected file is a valid VECTO XML file but has the wrong contents. Check that the selected file contains the expected data (e.g., component data, job data, report, etc.)
![](images/Icon_XML_green.svg) The selected file is a valid VECTO XML file and has the correct contents.
### Error Dialog
ToDo: Image
This dialog shows more details about errors during loading a VECTO XML file and validating its contents. The error messages can be copied to the clipboard using the 'Copy Errors' button.
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
overflow="visible"
id="svg4471"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="Icon_XML_green.svg"
width="83.300781"
height="28.63282"
style="overflow:visible">
<metadata
id="metadata4485">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs4483" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="857"
inkscape:window-height="480"
id="namedview4481"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="2.36"
inkscape:cx="50"
inkscape:cy="-21.36718"
inkscape:window-x="2364"
inkscape:window-y="136"
inkscape:window-maximized="0"
inkscape:current-layer="svg4471" />
<svg
id="svg4473"
version="1.1"
inkscape:version="0.91 r13725"
width="100%"
height="100%">
<g
transform="translate(-59.285156,-215.2361)"
id="g4475">
<svg
id="flowRoot4136"
version="1.1"
inkscape:version="0.91 r13725"
width="100%"
height="100%"
style="fill-opacity:1">
<path
d="m 59.285156,243.86892 9.785156,-14.94141 -8.867187,-13.69141 6.757812,0 5.742188,9.19922 5.625,-9.19922 6.699219,0 -8.90625,13.90625 9.785156,14.72657 -6.972656,0 -6.347657,-9.90235 -6.367187,9.90235 -6.933594,0 z"
id="path4145"
stroke-linejoin="Miter"
stroke-linecap="Flat"
inkscape:connector-curvature="0"
style="fill:#00c000;stroke-width:1" />
<path
d="m 88.835937,243.86892 0,-28.63282 8.652344,0 5.195309,19.53125 5.13672,-19.53125 8.67188,0 0,28.63282 -5.3711,0 0,-22.53907 -5.68359,22.53907 -5.566406,0 -5.664063,-22.53907 0,22.53907 -5.371094,0 z"
id="path4147"
stroke-linejoin="Miter"
stroke-linecap="Flat"
inkscape:connector-curvature="0"
style="fill:#00c000;stroke-width:1" />
<path
d="m 122.42969,243.86892 0,-28.39844 5.78125,0 0,23.57422 14.375,0 0,4.82422 -20.15625,0 z"
id="path4149"
stroke-linejoin="Miter"
stroke-linecap="Flat"
inkscape:connector-curvature="0"
style="fill:#00c000;stroke-width:1" />
</svg>
</g>
</svg>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
overflow="visible"
id="svg5582"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="Icon_XML_green1.svg"
width="83.300781"
height="28.63282"
style="overflow:visible">
<metadata
id="metadata5596">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs5594" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="857"
inkscape:window-height="480"
id="namedview5592"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="2.36"
inkscape:cx="50"
inkscape:cy="-21.36718"
inkscape:window-x="2106"
inkscape:window-y="118"
inkscape:window-maximized="0"
inkscape:current-layer="svg5582" />
<svg
id="svg5584"
version="1.1"
inkscape:version="0.91 r13725"
width="100%"
height="100%">
<g
transform="translate(-59.285156,-215.2361)"
id="g5586">
<svg
id="flowRoot4136"
version="1.1"
inkscape:version="0.91 r13725"
width="100%"
height="100%"
style="fill-opacity:1">
<path
d="m 59.285156,243.86892 9.785156,-14.94141 -8.867187,-13.69141 6.757812,0 5.742188,9.19922 5.625,-9.19922 6.699219,0 -8.90625,13.90625 9.785156,14.72657 -6.972656,0 -6.347657,-9.90235 -6.367187,9.90235 -6.933594,0 z"
id="path4145"
stroke-linejoin="Miter"
stroke-linecap="Flat"
inkscape:connector-curvature="0"
style="fill:#00c000;stroke-width:1" />
<path
d="m 88.835937,243.86892 0,-28.63282 8.652344,0 5.195309,19.53125 5.13672,-19.53125 8.67188,0 0,28.63282 -5.3711,0 0,-22.53907 -5.68359,22.53907 -5.566406,0 -5.664063,-22.53907 0,22.53907 -5.371094,0 z"
id="path4147"
stroke-linejoin="Miter"
stroke-linecap="Flat"
inkscape:connector-curvature="0"
style="fill:#ff0000;stroke-width:1" />
<path
d="m 122.42969,243.86892 0,-28.39844 5.78125,0 0,23.57422 14.375,0 0,4.82422 -20.15625,0 z"
id="path4149"
stroke-linejoin="Miter"
stroke-linecap="Flat"
inkscape:connector-curvature="0"
style="fill:#ff0000;stroke-width:1" />
</svg>
</g>
</svg>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
overflow="visible"
id="svg6138"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="Icon_XML_green2.svg"
width="83.300781"
height="28.63282"
style="overflow:visible">
<metadata
id="metadata6152">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6150" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="857"
inkscape:window-height="480"
id="namedview6148"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="2.36"
inkscape:cx="50"
inkscape:cy="-21.36718"
inkscape:window-x="2288"
inkscape:window-y="98"
inkscape:window-maximized="0"
inkscape:current-layer="svg6138" />
<svg
id="svg6140"
version="1.1"
inkscape:version="0.91 r13725"
width="100%"
height="100%">
<g
transform="translate(-59.285156,-215.2361)"
id="g6142">
<svg
id="flowRoot4136"
version="1.1"
inkscape:version="0.91 r13725"
width="100%"
height="100%"
style="fill-opacity:1">
<path
d="m 59.285156,243.86892 9.785156,-14.94141 -8.867187,-13.69141 6.757812,0 5.742188,9.19922 5.625,-9.19922 6.699219,0 -8.90625,13.90625 9.785156,14.72657 -6.972656,0 -6.347657,-9.90235 -6.367187,9.90235 -6.933594,0 z"
id="path4145"
stroke-linejoin="Miter"
stroke-linecap="Flat"
inkscape:connector-curvature="0"
style="fill:#00c000;stroke-width:1" />
<path
d="m 88.835937,243.86892 0,-28.63282 8.652344,0 5.195309,19.53125 5.13672,-19.53125 8.67188,0 0,28.63282 -5.3711,0 0,-22.53907 -5.68359,22.53907 -5.566406,0 -5.664063,-22.53907 0,22.53907 -5.371094,0 z"
id="path4147"
stroke-linejoin="Miter"
stroke-linecap="Flat"
inkscape:connector-curvature="0"
style="fill:#00c000;stroke-width:1" />
<path
d="m 122.42969,243.86892 0,-28.39844 5.78125,0 0,23.57422 14.375,0 0,4.82422 -20.15625,0 z"
id="path4149"
stroke-linejoin="Miter"
stroke-linecap="Flat"
inkscape:connector-curvature="0"
style="fill:#ff0000;stroke-width:1" />
</svg>
</g>
</svg>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
overflow="visible"
id="svg5027"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="Icon_XML_outline.svg"
width="84.725914"
height="29.63282"
style="overflow:visible">
<metadata
id="metadata5040">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs5038" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="857"
inkscape:window-height="480"
id="namedview5036"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="2.36"
inkscape:cx="50.925133"
inkscape:cy="-20.86718"
inkscape:window-x="2228"
inkscape:window-y="86"
inkscape:window-maximized="0"
inkscape:current-layer="svg5027" />
<svg
id="layer1"
version="1.1"
inkscape:version="0.91 r13725"
width="100%"
height="100%"
transform="translate(0.92513315,0.5)">
<g
transform="translate(-59.285156,-215.2361)"
id="g5030">
<svg
id="flowRoot4136"
version="1.1"
inkscape:version="0.91 r13725"
width="100%"
height="100%"
style="fill-opacity:1">
<path
d="m 59.285156,243.86892 9.785156,-14.94141 -8.867187,-13.69141 6.757812,0 5.742188,9.19922 5.625,-9.19922 6.699219,0 -8.90625,13.90625 9.785156,14.72657 -6.972656,0 -6.347657,-9.90235 -6.367187,9.90235 -6.933594,0 z"
id="path4145"
stroke-linejoin="Miter"
stroke-linecap="Flat"
inkscape:connector-curvature="0"
style="fill:none;stroke:#464646;stroke-width:1" />
<path
d="m 88.835937,243.86892 0,-28.63282 8.652344,0 5.195309,19.53125 5.13672,-19.53125 8.67188,0 0,28.63282 -5.3711,0 0,-22.53907 -5.68359,22.53907 -5.566406,0 -5.664063,-22.53907 0,22.53907 -5.371094,0 z"
id="path4147"
stroke-linejoin="Miter"
stroke-linecap="Flat"
inkscape:connector-curvature="0"
style="fill:none;stroke:#464646;stroke-width:1" />
<path
d="m 122.42969,243.86892 0,-28.39844 5.78125,0 0,23.57422 14.375,0 0,4.82422 -20.15625,0 z"
id="path4149"
stroke-linejoin="Miter"
stroke-linecap="Flat"
inkscape:connector-curvature="0"
style="fill:none;stroke:#464646;stroke-width:1" />
</svg>
</g>
</svg>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
overflow="visible"
id="svg6694"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="Icon_XML_red.svg"
width="83.300781"
height="28.63282"
style="overflow:visible">
<metadata
id="metadata6708">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6706" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="857"
inkscape:window-height="480"
id="namedview6704"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="2.36"
inkscape:cx="50"
inkscape:cy="-21.36718"
inkscape:window-x="2174"
inkscape:window-y="118"
inkscape:window-maximized="0"
inkscape:current-layer="svg6694" />
<svg
id="svg6696"
version="1.1"
inkscape:version="0.91 r13725"
width="100%"
height="100%">
<g
transform="translate(-59.285156,-215.2361)"
id="g6698">
<svg
id="flowRoot4136"
version="1.1"
inkscape:version="0.91 r13725"
width="100%"
height="100%"
style="fill-opacity:1">
<path
d="m 59.285156,243.86892 9.785156,-14.94141 -8.867187,-13.69141 6.757812,0 5.742188,9.19922 5.625,-9.19922 6.699219,0 -8.90625,13.90625 9.785156,14.72657 -6.972656,0 -6.347657,-9.90235 -6.367187,9.90235 -6.933594,0 z"
id="path4145"
stroke-linejoin="Miter"
stroke-linecap="Flat"
inkscape:connector-curvature="0"
style="fill:#ff0000;stroke-width:1" />
<path
d="m 88.835937,243.86892 0,-28.63282 8.652344,0 5.195309,19.53125 5.13672,-19.53125 8.67188,0 0,28.63282 -5.3711,0 0,-22.53907 -5.68359,22.53907 -5.566406,0 -5.664063,-22.53907 0,22.53907 -5.371094,0 z"
id="path4147"
stroke-linejoin="Miter"
stroke-linecap="Flat"
inkscape:connector-curvature="0"
style="fill:#ff0000;stroke-width:1" />
<path
d="m 122.42969,243.86892 0,-28.39844 5.78125,0 0,23.57422 14.375,0 0,4.82422 -20.15625,0 z"
id="path4149"
stroke-linejoin="Miter"
stroke-linecap="Flat"
inkscape:connector-curvature="0"
style="fill:#ff0000;stroke-width:1" />
</svg>
</g>
</svg>
</svg>
Documentation/VectoHashingTool/images/VectoHashingTool_HashComponentData.PNG

93.6 KiB

This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Documentation/VectoHashingTool/images/VectoHashingTool_Start.PNG

77 KiB

Documentation/VectoHashingTool/images/VectoHashingTool_VerifyComponentData.PNG

116 KiB

Documentation/VectoHashingTool/images/VectoHashingTool_VerifyJob.PNG

128 KiB

This diff is collapsed.
Documentation/VectoHashingTool/images/VectoHashingtool_ResultCustR.PNG

164 KiB

Documentation/VectoHashingTool/images/VectoHashingtool_ResultJob.PNG

170 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment