@@ -31,11 +31,15 @@ extension AES._CBC {
31
31
UInt8 , UInt8 , UInt8 , UInt8 , UInt8 , UInt8 , UInt8 , UInt8
32
32
)
33
33
34
- private var bytes : IVTuple
34
+ var bytes : IVTuple
35
+ static var emptyBytes : IVTuple = (
36
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
37
+ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
38
+ )
35
39
36
40
/// Creates a new random nonce.
37
41
public init ( ) {
38
- var bytes = IVTuple ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 )
42
+ var bytes = Self . emptyBytes
39
43
Swift . withUnsafeMutableBytes ( of: & bytes) {
40
44
let count = MemoryLayout< IVTuple> . size
41
45
$0. initializeWithRandomBytes ( count: count)
@@ -52,11 +56,11 @@ extension AES._CBC {
52
56
/// - ivBytes: A collection of bytes representation of the nonce.
53
57
/// The initializer throws an error if the data has the incorrect length.
54
58
public init < IVBytes: Collection > ( ivBytes: IVBytes ) throws where IVBytes. Element == UInt8 {
55
- guard ivBytes. count == MemoryLayout < IVTuple > . size else {
59
+ guard [ 16 ] . contains ( ivBytes. count) else {
56
60
throw CryptoKitError . incorrectKeySize
57
61
}
58
62
59
- var bytes = IVTuple ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 )
63
+ var bytes = Self . emptyBytes
60
64
Swift . withUnsafeMutableBytes ( of: & bytes) { bytesPtr in
61
65
bytesPtr. copyBytes ( from: ivBytes)
62
66
}
@@ -72,11 +76,11 @@ extension AES._CBC {
72
76
/// - data: A data representation of the nonce. The initializer throws an
73
77
/// error if the data has the incorrect length.
74
78
public init < D: DataProtocol > ( data: D ) throws {
75
- if data. count != MemoryLayout < IVTuple > . size {
76
- throw CryptoKitError . incorrectParameterSize
79
+ guard [ 16 ] . contains ( data. count) else {
80
+ throw CryptoKitError . incorrectKeySize
77
81
}
78
82
79
- var bytes = IVTuple ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 )
83
+ var bytes = Self . emptyBytes
80
84
Swift . withUnsafeMutableBytes ( of: & bytes) { bytesPtr in
81
85
data. copyBytes ( to: bytesPtr)
82
86
}
@@ -123,11 +127,12 @@ extension AES._CFB {
123
127
public struct IV : Sendable , ContiguousBytes , Sequence {
124
128
typealias IVTuple = ( UInt64 , UInt64 )
125
129
126
- private var bytes : IVTuple
130
+ var bytes : IVTuple
131
+ static var emptyBytes : IVTuple = ( 0 , 0 )
127
132
128
133
/// Creates a new random nonce.
129
134
public init ( ) {
130
- var bytes = IVTuple ( 0 , 0 )
135
+ var bytes = Self . emptyBytes
131
136
Swift . withUnsafeMutableBytes ( of: & bytes) {
132
137
let count = MemoryLayout< IVTuple> . size
133
138
$0. initializeWithRandomBytes ( count: count)
@@ -144,11 +149,11 @@ extension AES._CFB {
144
149
/// - ivBytes: A collection of bytes representation of the nonce.
145
150
/// The initializer throws an error if the data has the incorrect length.
146
151
public init < IVBytes: Collection > ( ivBytes: IVBytes ) throws where IVBytes. Element == UInt8 {
147
- guard ivBytes. count == MemoryLayout < IVTuple > . size else {
152
+ guard [ 16 ] . contains ( ivBytes. count) else {
148
153
throw CryptoKitError . incorrectKeySize
149
154
}
150
155
151
- var bytes = IVTuple ( 0 , 0 )
156
+ var bytes = Self . emptyBytes
152
157
Swift . withUnsafeMutableBytes ( of: & bytes) { bytesPtr in
153
158
bytesPtr. copyBytes ( from: ivBytes)
154
159
}
@@ -164,11 +169,11 @@ extension AES._CFB {
164
169
/// - data: A data representation of the nonce. The initializer throws an
165
170
/// error if the data has the incorrect length.
166
171
public init < D: DataProtocol > ( data: D ) throws {
167
- if data. count != MemoryLayout < IVTuple > . size {
168
- throw CryptoKitError . incorrectParameterSize
172
+ guard [ 16 ] . contains ( data. count) else {
173
+ throw CryptoKitError . incorrectKeySize
169
174
}
170
175
171
- var bytes = IVTuple ( 0 , 0 )
176
+ var bytes = Self . emptyBytes
172
177
Swift . withUnsafeMutableBytes ( of: & bytes) { bytesPtr in
173
178
data. copyBytes ( to: bytesPtr)
174
179
}
@@ -215,11 +220,12 @@ extension AES._CTR {
215
220
public struct Nonce : Sendable , ContiguousBytes , Sequence {
216
221
typealias NonceTuple = ( UInt64 , UInt32 , UInt32 )
217
222
218
- private var bytes : NonceTuple
223
+ var bytes : NonceTuple
224
+ static var emptyBytes : NonceTuple = ( 0 , 0 , 0 )
219
225
220
226
/// Creates a new random nonce.
221
227
public init ( ) {
222
- var bytes = NonceTuple ( 0 , 0 , 0 )
228
+ var bytes = Self . emptyBytes
223
229
Swift . withUnsafeMutableBytes ( of: & bytes) {
224
230
let count = MemoryLayout< NonceTuple> . size
225
231
$0. initializeWithRandomBytes ( count: count)
@@ -236,11 +242,11 @@ extension AES._CTR {
236
242
/// - nonceBytes: A collection of bytes representation of the nonce.
237
243
/// The initializer throws an error if the data has the incorrect length.
238
244
public init < NonceBytes: Collection > ( nonceBytes: NonceBytes ) throws where NonceBytes. Element == UInt8 {
239
- guard nonceBytes. count == MemoryLayout < NonceTuple > . size else {
245
+ guard [ 12 , 16 ] . contains ( nonceBytes. count) else {
240
246
throw CryptoKitError . incorrectKeySize
241
247
}
242
248
243
- var bytes = NonceTuple ( 0 , 0 , 0 )
249
+ var bytes = Self . emptyBytes
244
250
Swift . withUnsafeMutableBytes ( of: & bytes) { bytesPtr in
245
251
bytesPtr. copyBytes ( from: nonceBytes)
246
252
}
@@ -256,11 +262,11 @@ extension AES._CTR {
256
262
/// - data: A data representation of the nonce. The initializer throws an
257
263
/// error if the data has the incorrect length.
258
264
public init < D: DataProtocol > ( data: D ) throws {
259
- if data. count != MemoryLayout < NonceTuple > . size {
260
- throw CryptoKitError . incorrectParameterSize
265
+ guard [ 12 , 16 ] . contains ( data. count) else {
266
+ throw CryptoKitError . incorrectKeySize
261
267
}
262
268
263
- var bytes = NonceTuple ( 0 , 0 , 0 )
269
+ var bytes = Self . emptyBytes
264
270
Swift . withUnsafeMutableBytes ( of: & bytes) { bytesPtr in
265
271
data. copyBytes ( to: bytesPtr)
266
272
}
0 commit comments