Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/rekor_types/_internal/hashedrekord.py: 97%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

30 statements  

1# generated by datamodel-codegen: 

2# filename: hashedrekord_schema.json 

3# version: 0.26.3 

4 

5from __future__ import annotations 

6 

7from enum import Enum 

8from typing import Optional 

9 

10from pydantic import BaseModel, ConfigDict, Field, RootModel, StrictStr 

11 

12 

13class PublicKey(BaseModel): 

14 """The public key that can verify the signature; this can also be an X509 code signing certificate that contains the raw public key information""" 

15 

16 model_config = ConfigDict( 

17 populate_by_name=True, 

18 ) 

19 content: Optional[str] = Field( 

20 default=None, 

21 description="Specifies the content of the public key or code signing certificate inline within the document", 

22 ) 

23 

24 

25class Signature(BaseModel): 

26 """Information about the detached signature associated with the entry""" 

27 

28 model_config = ConfigDict( 

29 populate_by_name=True, 

30 ) 

31 content: Optional[str] = Field( 

32 default=None, 

33 description="Specifies the content of the signature inline within the document", 

34 ) 

35 public_key: Optional[PublicKey] = Field( 

36 default=None, 

37 alias="publicKey", 

38 description="The public key that can verify the signature; this can also be an X509 code signing certificate that contains the raw public key information", 

39 ) 

40 

41 

42class Algorithm(str, Enum): 

43 """The hashing function used to compute the hash value""" 

44 

45 SHA256 = "sha256" 

46 SHA384 = "sha384" 

47 SHA512 = "sha512" 

48 

49 

50class Hash(BaseModel): 

51 """Specifies the hash algorithm and value for the content""" 

52 

53 model_config = ConfigDict( 

54 populate_by_name=True, 

55 ) 

56 algorithm: Algorithm = Field( 

57 ..., 

58 description="The hashing function used to compute the hash value", 

59 ) 

60 value: StrictStr = Field( 

61 ..., 

62 description="The hash value for the content, as represented by a lower case hexadecimal string", 

63 ) 

64 

65 

66class Data(BaseModel): 

67 """Information about the content associated with the entry""" 

68 

69 model_config = ConfigDict( 

70 populate_by_name=True, 

71 ) 

72 hash: Optional[Hash] = Field( 

73 default=None, 

74 description="Specifies the hash algorithm and value for the content", 

75 ) 

76 

77 

78class HashedrekordV001Schema(BaseModel): 

79 """Schema for Hashed Rekord object""" 

80 

81 model_config = ConfigDict( 

82 populate_by_name=True, 

83 ) 

84 signature: Signature = Field( 

85 ..., 

86 description="Information about the detached signature associated with the entry", 

87 ) 

88 data: Data = Field(..., description="Information about the content associated with the entry") 

89 

90 

91class HashedrekordSchema(RootModel[HashedrekordV001Schema]): 

92 model_config = ConfigDict( 

93 populate_by_name=True, 

94 ) 

95 root: HashedrekordV001Schema = Field( 

96 ..., 

97 description="Schema for Hashedrekord objects", 

98 title="Hashedrekord Schema", 

99 )