]> git.saurik.com Git - apple/security.git/blobdiff - KeychainCircle/KCSRPContext.h
Security-57740.1.18.tar.gz
[apple/security.git] / KeychainCircle / KCSRPContext.h
diff --git a/KeychainCircle/KCSRPContext.h b/KeychainCircle/KCSRPContext.h
new file mode 100644 (file)
index 0000000..c0d8149
--- /dev/null
@@ -0,0 +1,76 @@
+//
+//  SRPSession.h
+//  KeychainCircle
+//
+//
+
+#import <Foundation/Foundation.h>
+
+#include <corecrypto/ccdigest.h>
+#include <corecrypto/ccrng.h>
+#include <corecrypto/ccsrp.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface KCSRPContext : NSObject
+
+- (instancetype) init NS_UNAVAILABLE;
+
+- (instancetype) initWithUser: (NSString*) user
+                   digestInfo: (const struct ccdigest_info *) di
+                        group: (ccsrp_const_gp_t) gp
+                 randomSource: (struct ccrng_state *) rng NS_DESIGNATED_INITIALIZER;
+
+- (bool) isAuthenticated;
+
+// Returns an NSData that refers to the key in the context.
+// It becomes invalid when this context is released.
+- (NSData*) getKey;
+
+@end
+
+@interface KCSRPClientContext : KCSRPContext
+
+- (nullable NSData*) copyStart: (NSError**) error;
+- (nullable NSData*) copyResposeToChallenge: (NSData*) B_data
+                          password: (NSString*) password
+                              salt: (NSData*) salt
+                             error: (NSError**) error;
+- (bool) verifyConfirmation: (NSData*) HAMK_data
+                      error: (NSError**) error;
+
+@end
+
+@interface KCSRPServerContext : KCSRPContext
+@property (readonly) NSData* salt;
+
+- (instancetype) initWithUser: (NSString*) user
+                         salt: (NSData*) salt
+                     verifier: (NSData*) verifier
+                   digestInfo: (const struct ccdigest_info *) di
+                        group: (ccsrp_const_gp_t) gp
+                 randomSource: (struct ccrng_state *) rng NS_DESIGNATED_INITIALIZER;
+
+- (instancetype) initWithUser: (NSString*)user
+                     password: (NSString*)password
+                   digestInfo: (const struct ccdigest_info *) di
+                        group: (ccsrp_const_gp_t) gp
+                 randomSource: (struct ccrng_state *) rng NS_DESIGNATED_INITIALIZER;
+
+- (instancetype) initWithUser: (NSString*) user
+                   digestInfo: (const struct ccdigest_info *) di
+                        group: (ccsrp_const_gp_t) gp
+                 randomSource: (struct ccrng_state *) rng NS_UNAVAILABLE;
+
+
+- (bool) resetWithPassword: (NSString*) password
+                     error: (NSError**) error;
+
+- (nullable NSData*) copyChallengeFor: (NSData*) A_data
+                       error: (NSError**) error;
+- (nullable NSData*) copyConfirmationFor: (NSData*) M_data
+                          error: (NSError**) error;
+
+@end
+
+NS_ASSUME_NONNULL_END