1# generated by datamodel-codegen:
2# filename: jar_schema.json
3# version: 0.26.3
4
5from __future__ import annotations
6
7from enum import Enum
8from typing import Optional, Union
9
10from pydantic import BaseModel, ConfigDict, Field, RootModel, StrictStr
11
12
13class PublicKey(BaseModel):
14 """The X509 certificate containing the public key JAR which verifies the signature of the JAR"""
15
16 model_config = ConfigDict(
17 populate_by_name=True,
18 )
19 content: str = Field(
20 ...,
21 description="Specifies the content of the X509 certificate containing the public key used to verify the signature",
22 )
23
24
25class Signature(BaseModel):
26 """Information about the included signature in the JAR file"""
27
28 model_config = ConfigDict(
29 populate_by_name=True,
30 )
31 content: str = Field(
32 ...,
33 description="Specifies the PKCS7 signature embedded within the JAR file ",
34 )
35 public_key: PublicKey = Field(
36 ...,
37 alias="publicKey",
38 description="The X509 certificate containing the public key JAR which verifies the signature of the JAR",
39 )
40
41
42class Algorithm(str, Enum):
43 """The hashing function used to compute the hash value"""
44
45 SHA256 = "sha256"
46
47
48class Hash(BaseModel):
49 """Specifies the hash algorithm and value encompassing the entire signed archive"""
50
51 model_config = ConfigDict(
52 populate_by_name=True,
53 )
54 algorithm: Algorithm = Field(
55 ...,
56 description="The hashing function used to compute the hash value",
57 )
58 value: StrictStr = Field(..., description="The hash value for the archive")
59
60
61class Archive(BaseModel):
62 """Information about the archive associated with the entry"""
63
64 model_config = ConfigDict(
65 populate_by_name=True,
66 )
67 hash: Hash = Field(
68 ...,
69 description="Specifies the hash algorithm and value encompassing the entire signed archive",
70 )
71 content: Optional[str] = Field(
72 default=None,
73 description="Specifies the archive inline within the document",
74 )
75
76
77class Hash1(Hash):
78 """Specifies the hash algorithm and value encompassing the entire signed archive"""
79
80
81class Archive1(BaseModel):
82 """Information about the archive associated with the entry"""
83
84 model_config = ConfigDict(
85 populate_by_name=True,
86 )
87 hash: Optional[Hash1] = Field(
88 default=None,
89 description="Specifies the hash algorithm and value encompassing the entire signed archive",
90 )
91 content: str = Field(..., description="Specifies the archive inline within the document")
92
93
94class JarV001Schema(BaseModel):
95 """Schema for JAR entries"""
96
97 model_config = ConfigDict(
98 populate_by_name=True,
99 )
100 signature: Optional[Signature] = Field(
101 default=None,
102 description="Information about the included signature in the JAR file",
103 )
104 archive: Union[Archive, Archive1] = Field(
105 ...,
106 description="Information about the archive associated with the entry",
107 )
108
109
110class JarSchema(RootModel[JarV001Schema]):
111 model_config = ConfigDict(
112 populate_by_name=True,
113 )
114 root: JarV001Schema = Field(..., description="Schema for JAR objects", title="JAR Schema")