{
  "$defs": {
    "byte_array": {
      "items": {
        "maximum": 255,
        "minimum": 0,
        "type": "integer"
      },
      "type": "array"
    }
  },
  "$id": "https://raw.githubusercontent.com/lowRISC/opentitan/master/sw/host/cryptotest/testvectors/data/schemas/rsa_schema.json",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "A list of testvectors for RSA Signature Verification testing",
  "items": {
    "additionalProperties": false,
    "properties": {
      "algorithm": {
        "description": "Should be rsa",
        "enum": [
          "rsa"
        ],
        "type": "string"
      },
      "ciphertext": {
        "$ref": "#/$defs/byte_array",
        "description": "Ciphertext to decrypt"
      },
      "d": {
        "$ref": "#/$defs/byte_array",
        "description": "RSA private value d"
      },
      "e": {
        "description": "RSA exponent e",
        "type": "integer"
      },
      "hash_alg": {
        "description": "Hash algorithm for message encoding",
        "enum": [
          "sha-256",
          "sha-384",
          "sha-512",
          "sha3-224",
          "sha3-256",
          "sha3-384",
          "sha3-512",
          "shake-128",
          "shake-256"
        ],
        "type": "string"
      },
      "label": {
        "$ref": "#/$defs/byte_array",
        "description": "Label for OAEP encryption"
      },
      "message": {
        "$ref": "#/$defs/byte_array",
        "description": "Un-hashed plaintext message"
      },
      "n": {
        "$ref": "#/$defs/byte_array",
        "description": "RSA public value n"
      },
      "operation": {
        "description": "RSA operation",
        "enum": [
          "sign",
          "verify",
          "encrypt",
          "decrypt"
        ],
        "type": "string"
      },
      "padding": {
        "description": "RSA padding type",
        "enum": [
          "pkcs1_1.5",
          "pss",
          "oaep"
        ],
        "type": "string"
      },
      "result": {
        "description": "Expected signature verification result",
        "type": "boolean"
      },
      "security_level": {
        "description": "RSA security level",
        "enum": [
          2048,
          3072,
          4096
        ],
        "type": "integer"
      },
      "signature": {
        "$ref": "#/$defs/byte_array",
        "description": "RSA signature"
      },
      "test_case_id": {
        "description": "Test case ID from test vector source -- used for debugging",
        "type": "integer"
      },
      "vendor": {
        "description": "Test vector vendor name",
        "type": "string"
      }
    },
    "type": "object"
  },
  "minItems": 1,
  "title": "Cryptotest RSA Signature Verification Test Vector",
  "type": "array"
}