This repository has been archived by the owner on Sep 20, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathNSInputStream+CryptoKit.h
150 lines (123 loc) · 5.2 KB
/
NSInputStream+CryptoKit.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
//
// NSInputStream+CryptoKit.h
// CryptoKit
//
// Created by Andreas Meingast on 10/06/16.
// Copyright © 2016 Andreas Meingast. All rights reserved.
//
#import <CryptoKit/CryptoKitTypes.h>
NS_ASSUME_NONNULL_BEGIN
@interface NSInputStream (CryptoKit)
#pragma mark - Digests
/**
* Generate the MD2 digest of the content of the NSInputStream instance.
*/
- (nullable NSData *)md2Hash:(NSError *__nullable *)error;
/**
* Generate the MD2 digest of the content of the NSInputStream instance in a human readable NSString representation.
*/
- (nullable NSString *)md2HexHash:(NSError *__nullable *)error;
/**
* Generate the MD4 digest of the content of the NSInputStream instance.
*/
- (nullable NSData *)md4Hash:(NSError *__nullable *)error;
/**
* Generate the MD4 digest of the content of the NSInputStream instance in a human readable NSString representation.
*/
- (nullable NSString *)md4HexHash:(NSError *__nullable *)error;
/**
* Generate the MD5 digest of the content of the NSInputStream instance.
*/
- (nullable NSData *)md5Hash:(NSError *__nullable *)error;
/**
* Generate the MD5 digest of the content of the NSInputStream instance in a human readable NSString representation.
*/
- (nullable NSString *)md5HexHash:(NSError *__nullable *)error;
/**
* Generate the SHA1 digest of the content of the NSInputStream instance.
*/
- (nullable NSData *)sha1Hash:(NSError *__nullable *)error;
/**
* Generate the SHA1 digest of the content of the NSInputStream instance in a human readable NSString representation.
*/
- (nullable NSString *)sha1HexHash:(NSError *__nullable *)error;
/**
* Generate the SHA224 digest of the content of the NSInputStream instance.
*/
- (nullable NSData *)sha224Hash:(NSError *__nullable *)error;
/**
* Generate the SHA224 digest of the content of the NSInputStream instance in a human readable NSString representation.
*/
- (nullable NSString *)sha224HexHash:(NSError *__nullable *)error;
/**
* Generate the SHA384 digest of the content of the NSInputStream instance.
*/
- (nullable NSData *)sha384Hash:(NSError *__nullable *)error;
/**
* Generate the SHA384 digest of the content of the NSInputStream instance in a human readable NSString representation.
*/
- (nullable NSString *)sha384HexHash:(NSError *__nullable *)error;
/**
* Generate the SHA512 digest of the content of the NSInputStream instance.
*/
- (nullable NSData *)sha512Hash:(NSError *__nullable *)error;
/**
* Generate the SHA512 digest of the content of the NSInputStream instance in a human readable NSString representation.
*/
- (nullable NSString *)sha512HexHash:(NSError *__nullable *)error;
/**
* Generate the digests of the content of the NSInputStream instance.
*/
- (nullable CKDigestBatchResult *)hashes:(NSError *__nullable *)error;
#pragma mark - Encryption
/**
* Encrypt the contents of the NSInputStream instance using a given password and write the encrypted result to
* outputStream.
*
* This method works especially well for large amounts of streamable data.
*
* @warning This method will block the current thread until all data from the inputStream instance is consumed,
* encrypted and written to the outputStream or an error occured.
*/
- (BOOL)encryptWithPassword:(NSString *)password
toStream:(NSOutputStream *)outputStream
error:(NSError *__nullable *)error;
/**
* Decrypt the contents of the NSInputStream instance using a given password and write the decrypted result to
* outputStream.
*
* This method works especially well for large amounts of streamable data.
*
* @warning This method will block the current thread until all data from the inputStream instance is consumed,
* decrypted and written to the outputStream or an error occured.
*/
- (BOOL)decryptWithPassword:(NSString *)password
toStream:(NSOutputStream *)outputStream
error:(NSError *__nullable *)error;
/**
* Decrypt the contents of the NSInputStream instance using a given password and encrypt the result with newPassword
* to outputStream.
*
* This method works especially well for large amounts of streamable data.
*
* @warning This method will block the current thread until all data from the inputStream instance is consumed,
* decrypted and written to the outputStream or an error occured.
*/
- (BOOL)recryptWithPassword:(NSString *)password
newPassword:(NSString *)newPassword
toStream:(NSOutputStream *)outputStream
error:(NSError *__nullable *)error;
#pragma mark - Partitioning
/**
* Partition and encrypt the contents of the NSInputStream using a given password. chunkHandler is called exactly once
* for each created chunk.
*
* @warning This method will block the current thread until all data from the inputStream instance is consumed,
* chunked, encrypted and passed on to chunkHandler or an error has occured.
*/
- (BOOL)disassembleWithpartitionStrategy:(CKPartitionStrategy)partitionStrategy
password:(NSString *)password
chunkHandler:(CKChunkHandler)chunkHandler
error:(NSError *__nullable *)error;
@end
NS_ASSUME_NONNULL_END