Coverage for src/django_otp_webauthn/migrations/0001_initial.py: 100%

7 statements  

« prev     ^ index     » next       coverage.py v7.5.4, created at 2024-06-23 20:15 +0000

1# Generated by Django 5.0.4 on 2024-04-30 15:34 

2 

3import django.db.models.deletion 

4from django.conf import settings 

5from django.db import migrations, models 

6 

7 

8class Migration(migrations.Migration): 

9 initial = True 

10 

11 dependencies = [ 

12 migrations.swappable_dependency(settings.AUTH_USER_MODEL), 

13 ] 

14 

15 operations = [ 

16 migrations.CreateModel( 

17 name="WebAuthnCredential", 

18 fields=[ 

19 ( 

20 "id", 

21 models.BigAutoField( 

22 auto_created=True, 

23 primary_key=True, 

24 serialize=False, 

25 verbose_name="ID", 

26 ), 

27 ), 

28 ( 

29 "name", 

30 models.CharField( 

31 help_text="The human-readable name of this device.", 

32 max_length=64, 

33 ), 

34 ), 

35 ( 

36 "confirmed", 

37 models.BooleanField(default=True, help_text="Is this device ready for use?"), 

38 ), 

39 ( 

40 "credential_type", 

41 models.CharField( 

42 choices=[("public-key", "Public Key")], 

43 default="public-key", 

44 editable=False, 

45 max_length=32, 

46 verbose_name="credential type", 

47 ), 

48 ), 

49 ( 

50 "credential_id", 

51 models.BinaryField(max_length=1023, verbose_name="credential id data"), 

52 ), 

53 ( 

54 "public_key", 

55 models.BinaryField(max_length=1023, verbose_name="COSE public key data"), 

56 ), 

57 ( 

58 "transports", 

59 models.JSONField(default=list, editable=False, verbose_name="transports"), 

60 ), 

61 ( 

62 "sign_count", 

63 models.PositiveIntegerField(default=0, editable=False, verbose_name="sign count"), 

64 ), 

65 ( 

66 "backup_eligible", 

67 models.BooleanField(default=False, editable=False, verbose_name="backup eligible"), 

68 ), 

69 ( 

70 "backup_state", 

71 models.BooleanField(default=False, editable=False, verbose_name="backup state"), 

72 ), 

73 ( 

74 "created_at", 

75 models.DateTimeField(auto_now_add=True, verbose_name="created at"), 

76 ), 

77 ( 

78 "last_used_at", 

79 models.DateTimeField(null=True, verbose_name="last used at"), 

80 ), 

81 ( 

82 "aaguid", 

83 models.CharField(editable=False, max_length=36, verbose_name="AAGUID"), 

84 ), 

85 ( 

86 "credential_id_sha256", 

87 models.BinaryField(max_length=32, unique=True, verbose_name="hashed credential id"), 

88 ), 

89 ( 

90 "discoverable", 

91 models.BooleanField( 

92 default=None, 

93 editable=False, 

94 null=True, 

95 verbose_name="discoverable", 

96 ), 

97 ), 

98 ( 

99 "user", 

100 models.ForeignKey( 

101 help_text="The user that this device belongs to.", 

102 on_delete=django.db.models.deletion.CASCADE, 

103 to=settings.AUTH_USER_MODEL, 

104 ), 

105 ), 

106 ], 

107 options={ 

108 "verbose_name": "WebAuthn credential", 

109 "verbose_name_plural": "WebAuthn credentials", 

110 "abstract": False, 

111 }, 

112 ), 

113 migrations.CreateModel( 

114 name="WebAuthnAttestation", 

115 fields=[ 

116 ( 

117 "id", 

118 models.BigAutoField( 

119 auto_created=True, 

120 primary_key=True, 

121 serialize=False, 

122 verbose_name="ID", 

123 ), 

124 ), 

125 ( 

126 "fmt", 

127 models.CharField( 

128 choices=[ 

129 ("packed", "packed"), 

130 ("tpm", "tpm"), 

131 ("android-key", "android-key"), 

132 ("android-safetynet", "android-safetynet"), 

133 ("fido-u2f", "fido-u2f"), 

134 ("none", "none"), 

135 ], 

136 editable=False, 

137 max_length=255, 

138 verbose_name="format", 

139 ), 

140 ), 

141 ("data", models.BinaryField(verbose_name="data")), 

142 ( 

143 "client_data_json", 

144 models.BinaryField(verbose_name="client data JSON"), 

145 ), 

146 ( 

147 "credential", 

148 models.OneToOneField( 

149 editable=False, 

150 on_delete=django.db.models.deletion.CASCADE, 

151 related_name="attestation", 

152 to="django_otp_webauthn.webauthncredential", 

153 verbose_name="credential", 

154 ), 

155 ), 

156 ], 

157 options={ 

158 "verbose_name": "WebAuthn attestation", 

159 "verbose_name_plural": "WebAuthn attestations", 

160 "abstract": False, 

161 }, 

162 ), 

163 migrations.AddIndex( 

164 model_name="webauthncredential", 

165 index=models.Index(fields=["credential_id_sha256"], name="webauthncredential_sha256_idx"), 

166 ), 

167 ]