{
    "$id": "SignCertificateRequest",
    "comment": "OCPP 2.1 Edition 1 (c) OCA, Creative Commons Attribution-NoDerivatives 4.0 International Public License",
    "definitions": {
        "CertificateSigningUseEnumType": {
            "description": "Indicates the type of certificate that is to be signed. When omitted the certificate is to be used for both the 15118 connection (if implemented) and the Charging Station to CSMS connection.\r\n\r\n",
            "javaType": "CertificateSigningUseEnum",
            "type": "string",
            "additionalProperties": false,
            "enum": ["ChargingStationCertificate", "V2GCertificate", "V2G20Certificate"],
            "tsEnumNames": ["ChargingStationCertificate", "V2GCertificate", "V2G20Certificate"]
        },
        "HashAlgorithmEnumType": {
            "description": "Used algorithms for the hashes provided.\r\n",
            "javaType": "HashAlgorithmEnum",
            "type": "string",
            "additionalProperties": false,
            "enum": ["SHA256", "SHA384", "SHA512"],
            "tsEnumNames": ["SHA256", "SHA384", "SHA512"]
        },
        "CertificateHashDataType": {
            "javaType": "CertificateHashData",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "hashAlgorithm": {
                    "$ref": "#/definitions/HashAlgorithmEnumType"
                },
                "issuerNameHash": {
                    "description": "The hash of the issuer’s distinguished\r\nname (DN), that must be calculated over the DER\r\nencoding of the issuer’s name field in the certificate\r\nbeing checked.\r\n\r\n",
                    "type": "string",
                    "maxLength": 128
                },
                "issuerKeyHash": {
                    "description": "The hash of the DER encoded public key:\r\nthe value (excluding tag and length) of the subject\r\npublic key field in the issuer’s certificate.\r\n",
                    "type": "string",
                    "maxLength": 128
                },
                "serialNumber": {
                    "description": "The string representation of the\r\nhexadecimal value of the serial number without the\r\nprefix \"0x\" and without leading zeroes.\r\n",
                    "type": "string",
                    "maxLength": 40
                },
                "customData": {
                    "$ref": "#/definitions/CustomDataType"
                }
            },
            "required": ["hashAlgorithm", "issuerNameHash", "issuerKeyHash", "serialNumber"]
        },
        "CustomDataType": {
            "description": "This class does not get 'AdditionalProperties = false' in the schema generation, so it can be extended with arbitrary JSON properties to allow adding custom data.",
            "javaType": "CustomData",
            "type": "object",
            "properties": {
                "vendorId": {
                    "type": "string",
                    "maxLength": 255
                }
            },
            "required": ["vendorId"]
        }
    },
    "type": "object",
    "additionalProperties": false,
    "properties": {
        "csr": {
            "description": "The Charging Station SHALL send the public key in form of a Certificate Signing Request (CSR) as described in RFC 2986 [22] and then PEM encoded, using the &lt;&lt;signcertificaterequest,SignCertificateRequest&gt;&gt; message.\r\n",
            "type": "string",
            "maxLength": 5500
        },
        "certificateType": {
            "$ref": "#/definitions/CertificateSigningUseEnumType"
        },
        "hashRootCertificate": {
            "$ref": "#/definitions/CertificateHashDataType"
        },
        "requestId": {
            "description": "*(2.1)* RequestId to match this message with the CertificateSignedRequest.\r\n",
            "type": "integer"
        },
        "customData": {
            "$ref": "#/definitions/CustomDataType"
        }
    },
    "required": ["csr"]
}
