More standard way to separate algorithm versions.
This commit is contained in:
		@@ -158,6 +158,10 @@
 | 
			
		||||
		DA32D07C19D7D784004F3F0E /* background.png in Resources */ = {isa = PBXBuildFile; fileRef = DA32D07919D7D784004F3F0E /* background.png */; };
 | 
			
		||||
		DA3509FE15F101A500C14A8E /* PearlQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = DA3509FC15F101A500C14A8E /* PearlQueue.h */; };
 | 
			
		||||
		DA3509FF15F101A500C14A8E /* PearlQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = DA3509FD15F101A500C14A8E /* PearlQueue.m */; };
 | 
			
		||||
		DA35148A233EF93400BCF504 /* mpw-algorithm_v0.c in Sources */ = {isa = PBXBuildFile; fileRef = 93D390A99850139D0FF0211E /* mpw-algorithm_v0.c */; };
 | 
			
		||||
		DA35148B233EF93400BCF504 /* mpw-algorithm_v1.c in Sources */ = {isa = PBXBuildFile; fileRef = 93D396F918E6470DB846C17F /* mpw-algorithm_v1.c */; };
 | 
			
		||||
		DA35148C233EF93400BCF504 /* mpw-algorithm_v2.c in Sources */ = {isa = PBXBuildFile; fileRef = 93D390A3B351FEF1B9EDAB56 /* mpw-algorithm_v2.c */; };
 | 
			
		||||
		DA35148D233EF93400BCF504 /* mpw-algorithm_v3.c in Sources */ = {isa = PBXBuildFile; fileRef = 93D39D4E713564B7654341B0 /* mpw-algorithm_v3.c */; };
 | 
			
		||||
		DA3BCFCB19BD09D5006B2681 /* SourceCodePro-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = DA3BCFCA19BD09D5006B2681 /* SourceCodePro-Regular.otf */; };
 | 
			
		||||
		DA4522441902355C008F650A /* icon_book.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD370C1711E29500CF925C /* icon_book.png */; };
 | 
			
		||||
		DA4522451902355C008F650A /* icon_book@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = DABD370D1711E29500CF925C /* icon_book@2x.png */; };
 | 
			
		||||
@@ -732,6 +736,10 @@
 | 
			
		||||
		DA3509FC15F101A500C14A8E /* PearlQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PearlQueue.h; sourceTree = "<group>"; };
 | 
			
		||||
		DA3509FD15F101A500C14A8E /* PearlQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PearlQueue.m; sourceTree = "<group>"; };
 | 
			
		||||
		DA3B844D190FC5DF00246EEA /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = ../../../External/iOS/Crashlytics.framework; sourceTree = "<group>"; };
 | 
			
		||||
		DA351486233EF8FE00BCF504 /* mpw-algorithm_v2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "mpw-algorithm_v2.h"; sourceTree = "<group>"; };
 | 
			
		||||
		DA351487233EF8FE00BCF504 /* mpw-algorithm_v1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "mpw-algorithm_v1.h"; sourceTree = "<group>"; };
 | 
			
		||||
		DA351488233EF8FE00BCF504 /* mpw-algorithm_v3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "mpw-algorithm_v3.h"; sourceTree = "<group>"; };
 | 
			
		||||
		DA351489233EF8FE00BCF504 /* mpw-algorithm_v0.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "mpw-algorithm_v0.h"; sourceTree = "<group>"; };
 | 
			
		||||
		DA3BCFCA19BD09D5006B2681 /* SourceCodePro-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SourceCodePro-Regular.otf"; sourceTree = "<group>"; };
 | 
			
		||||
		DA45711B1F572F1E00D54152 /* PearlCryptUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PearlCryptUtils.m; sourceTree = "<group>"; };
 | 
			
		||||
		DA45711C1F572F1E00D54152 /* PearlCryptUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PearlCryptUtils.h; sourceTree = "<group>"; };
 | 
			
		||||
@@ -1770,9 +1778,13 @@
 | 
			
		||||
				DA5B0B3E1F36469400B663F0 /* base64.c */,
 | 
			
		||||
				DA5B0B3F1F36469400B663F0 /* base64.h */,
 | 
			
		||||
				93D390A99850139D0FF0211E /* mpw-algorithm_v0.c */,
 | 
			
		||||
				DA351489233EF8FE00BCF504 /* mpw-algorithm_v0.h */,
 | 
			
		||||
				93D396F918E6470DB846C17F /* mpw-algorithm_v1.c */,
 | 
			
		||||
				DA351487233EF8FE00BCF504 /* mpw-algorithm_v1.h */,
 | 
			
		||||
				93D390A3B351FEF1B9EDAB56 /* mpw-algorithm_v2.c */,
 | 
			
		||||
				DA351486233EF8FE00BCF504 /* mpw-algorithm_v2.h */,
 | 
			
		||||
				93D39D4E713564B7654341B0 /* mpw-algorithm_v3.c */,
 | 
			
		||||
				DA351488233EF8FE00BCF504 /* mpw-algorithm_v3.h */,
 | 
			
		||||
				93D3969393A3A46BD27D7078 /* mpw-algorithm.c */,
 | 
			
		||||
				93D3990D850D76A94C6B7A4D /* mpw-algorithm.h */,
 | 
			
		||||
				DAB7AE981F3DDEE000C856B1 /* mpw-marshal-util.c */,
 | 
			
		||||
@@ -1949,11 +1961,11 @@
 | 
			
		||||
			isa = PBXGroup;
 | 
			
		||||
			children = (
 | 
			
		||||
				93D39A2239FFFE6BEC83E191 /* core */,
 | 
			
		||||
				DABD3B9F1711E2DB00CF925C /* Source */,
 | 
			
		||||
				DACA23B41705DF7D002C6C22 /* Resources */,
 | 
			
		||||
				DACA22121705DDC5002C6C22 /* External */,
 | 
			
		||||
				DA5BFA47147E415C00F98B1E /* Frameworks */,
 | 
			
		||||
				DA5BFA45147E415C00F98B1E /* Products */,
 | 
			
		||||
				DACA23B41705DF7D002C6C22 /* Resources */,
 | 
			
		||||
				DABD3B9F1711E2DB00CF925C /* Source */,
 | 
			
		||||
			);
 | 
			
		||||
			sourceTree = "<group>";
 | 
			
		||||
		};
 | 
			
		||||
@@ -4008,6 +4020,7 @@
 | 
			
		||||
				93D396D8B67DA6522CDBA142 /* MPCoachmarkViewController.m in Sources */,
 | 
			
		||||
				DAADBFE01A68763B00F7A756 /* mpw-algorithm.c in Sources */,
 | 
			
		||||
				DA0CC54E1EB6AD0E009A8ED9 /* MasterPassword.xcdatamodeld in Sources */,
 | 
			
		||||
				DA35148D233EF93400BCF504 /* mpw-algorithm_v3.c in Sources */,
 | 
			
		||||
				DAB07C9D1F7725C500CC6D43 /* aes.c in Sources */,
 | 
			
		||||
				93D39EAA4D064193074D3021 /* MPFixable.m in Sources */,
 | 
			
		||||
				93D394982CBD25D46692DD7C /* MPWebViewController.m in Sources */,
 | 
			
		||||
@@ -4021,6 +4034,9 @@
 | 
			
		||||
				93D395B715D15F2B56F2A2EE /* mpw-types.c in Sources */,
 | 
			
		||||
				93D39943D01E70DAC3B0DF76 /* mpw-util.c in Sources */,
 | 
			
		||||
				DA5B0B401F36469400B663F0 /* base64.c in Sources */,
 | 
			
		||||
				DA35148B233EF93400BCF504 /* mpw-algorithm_v1.c in Sources */,
 | 
			
		||||
				DA35148A233EF93400BCF504 /* mpw-algorithm_v0.c in Sources */,
 | 
			
		||||
				DA35148C233EF93400BCF504 /* mpw-algorithm_v2.c in Sources */,
 | 
			
		||||
				93D39577FD8BB0945DB2F0A3 /* MPAlgorithmV3.m in Sources */,
 | 
			
		||||
				93D39E5F7F6D7F5C0FAD090F /* MPTypes.m in Sources */,
 | 
			
		||||
				DA0CC58C1EB6B030009A8ED9 /* MPGeneratedSiteEntity+CoreDataClass.m in Sources */,
 | 
			
		||||
 
 | 
			
		||||
@@ -28,8 +28,6 @@
 | 
			
		||||
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
 | 
			
		||||
      language = ""
 | 
			
		||||
      shouldUseLaunchSchemeArgsEnv = "YES">
 | 
			
		||||
      <Testables>
 | 
			
		||||
      </Testables>
 | 
			
		||||
      <MacroExpansion>
 | 
			
		||||
         <BuildableReference
 | 
			
		||||
            BuildableIdentifier = "primary"
 | 
			
		||||
@@ -39,8 +37,8 @@
 | 
			
		||||
            ReferencedContainer = "container:MasterPassword-iOS.xcodeproj">
 | 
			
		||||
         </BuildableReference>
 | 
			
		||||
      </MacroExpansion>
 | 
			
		||||
      <AdditionalOptions>
 | 
			
		||||
      </AdditionalOptions>
 | 
			
		||||
      <Testables>
 | 
			
		||||
      </Testables>
 | 
			
		||||
   </TestAction>
 | 
			
		||||
   <LaunchAction
 | 
			
		||||
      buildConfiguration = "Debug"
 | 
			
		||||
 
 | 
			
		||||
@@ -68,6 +68,22 @@
 | 
			
		||||
		DA3509FE15F101A500C14A8E /* PearlQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = DA3509FC15F101A500C14A8E /* PearlQueue.h */; };
 | 
			
		||||
		DA3509FF15F101A500C14A8E /* PearlQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = DA3509FD15F101A500C14A8E /* PearlQueue.m */; };
 | 
			
		||||
		DA3B844F190FC60900246EEA /* Crashlytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA3B844A190FC5A900246EEA /* Crashlytics.framework */; };
 | 
			
		||||
		DA35148E233EF93E00BCF504 /* mpw-algorithm_v0.c in Sources */ = {isa = PBXBuildFile; fileRef = DA831A271A6E1146000AC234 /* mpw-algorithm_v0.c */; };
 | 
			
		||||
		DA35148F233EF93E00BCF504 /* mpw-algorithm_v1.c in Sources */ = {isa = PBXBuildFile; fileRef = DA831A281A6E1146000AC234 /* mpw-algorithm_v1.c */; };
 | 
			
		||||
		DA351490233EF93E00BCF504 /* mpw-algorithm_v2.c in Sources */ = {isa = PBXBuildFile; fileRef = DA831A291A6E1146000AC234 /* mpw-algorithm_v2.c */; };
 | 
			
		||||
		DA351491233EF93E00BCF504 /* mpw-algorithm_v3.c in Sources */ = {isa = PBXBuildFile; fileRef = DA831A2A1A6E1146000AC234 /* mpw-algorithm_v3.c */; };
 | 
			
		||||
		DA351492233EF94300BCF504 /* mpw-algorithm_v0.c in Sources */ = {isa = PBXBuildFile; fileRef = DA831A271A6E1146000AC234 /* mpw-algorithm_v0.c */; };
 | 
			
		||||
		DA351493233EF94300BCF504 /* mpw-algorithm_v1.c in Sources */ = {isa = PBXBuildFile; fileRef = DA831A281A6E1146000AC234 /* mpw-algorithm_v1.c */; };
 | 
			
		||||
		DA351494233EF94300BCF504 /* mpw-algorithm_v2.c in Sources */ = {isa = PBXBuildFile; fileRef = DA831A291A6E1146000AC234 /* mpw-algorithm_v2.c */; };
 | 
			
		||||
		DA351495233EF94300BCF504 /* mpw-algorithm_v3.c in Sources */ = {isa = PBXBuildFile; fileRef = DA831A2A1A6E1146000AC234 /* mpw-algorithm_v3.c */; };
 | 
			
		||||
		DA351496233EF94300BCF504 /* mpw-algorithm_v0.c in Sources */ = {isa = PBXBuildFile; fileRef = DA831A271A6E1146000AC234 /* mpw-algorithm_v0.c */; };
 | 
			
		||||
		DA351497233EF94300BCF504 /* mpw-algorithm_v1.c in Sources */ = {isa = PBXBuildFile; fileRef = DA831A281A6E1146000AC234 /* mpw-algorithm_v1.c */; };
 | 
			
		||||
		DA351498233EF94300BCF504 /* mpw-algorithm_v2.c in Sources */ = {isa = PBXBuildFile; fileRef = DA831A291A6E1146000AC234 /* mpw-algorithm_v2.c */; };
 | 
			
		||||
		DA351499233EF94300BCF504 /* mpw-algorithm_v3.c in Sources */ = {isa = PBXBuildFile; fileRef = DA831A2A1A6E1146000AC234 /* mpw-algorithm_v3.c */; };
 | 
			
		||||
		DA35149A233EF94500BCF504 /* mpw-algorithm_v0.c in Sources */ = {isa = PBXBuildFile; fileRef = DA831A271A6E1146000AC234 /* mpw-algorithm_v0.c */; };
 | 
			
		||||
		DA35149B233EF94500BCF504 /* mpw-algorithm_v1.c in Sources */ = {isa = PBXBuildFile; fileRef = DA831A281A6E1146000AC234 /* mpw-algorithm_v1.c */; };
 | 
			
		||||
		DA35149C233EF94500BCF504 /* mpw-algorithm_v2.c in Sources */ = {isa = PBXBuildFile; fileRef = DA831A291A6E1146000AC234 /* mpw-algorithm_v2.c */; };
 | 
			
		||||
		DA35149D233EF94500BCF504 /* mpw-algorithm_v3.c in Sources */ = {isa = PBXBuildFile; fileRef = DA831A2A1A6E1146000AC234 /* mpw-algorithm_v3.c */; };
 | 
			
		||||
		DA3B8452190FC86F00246EEA /* NSManagedObject+Pearl.m in Sources */ = {isa = PBXBuildFile; fileRef = DA3B8450190FC86F00246EEA /* NSManagedObject+Pearl.m */; };
 | 
			
		||||
		DA3B8453190FC86F00246EEA /* NSManagedObject+Pearl.h in Headers */ = {isa = PBXBuildFile; fileRef = DA3B8451190FC86F00246EEA /* NSManagedObject+Pearl.h */; };
 | 
			
		||||
		DA3B8456190FC89700246EEA /* MPFixable.m in Sources */ = {isa = PBXBuildFile; fileRef = DA3B8454190FC89700246EEA /* MPFixable.m */; };
 | 
			
		||||
@@ -433,6 +449,10 @@
 | 
			
		||||
		DA3509FC15F101A500C14A8E /* PearlQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PearlQueue.h; sourceTree = "<group>"; };
 | 
			
		||||
		DA3509FD15F101A500C14A8E /* PearlQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PearlQueue.m; sourceTree = "<group>"; };
 | 
			
		||||
		DA3B844A190FC5A900246EEA /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Crashlytics.framework; sourceTree = "<group>"; };
 | 
			
		||||
		DA351482233EF8E800BCF504 /* mpw-algorithm_v3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "mpw-algorithm_v3.h"; sourceTree = "<group>"; };
 | 
			
		||||
		DA351483233EF8E800BCF504 /* mpw-algorithm_v0.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "mpw-algorithm_v0.h"; sourceTree = "<group>"; };
 | 
			
		||||
		DA351484233EF8E800BCF504 /* mpw-algorithm_v2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "mpw-algorithm_v2.h"; sourceTree = "<group>"; };
 | 
			
		||||
		DA351485233EF8E800BCF504 /* mpw-algorithm_v1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "mpw-algorithm_v1.h"; sourceTree = "<group>"; };
 | 
			
		||||
		DA3B8450190FC86F00246EEA /* NSManagedObject+Pearl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSManagedObject+Pearl.m"; sourceTree = "<group>"; };
 | 
			
		||||
		DA3B8451190FC86F00246EEA /* NSManagedObject+Pearl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSManagedObject+Pearl.h"; sourceTree = "<group>"; };
 | 
			
		||||
		DA3B8454190FC89700246EEA /* MPFixable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MPFixable.m; sourceTree = "<group>"; };
 | 
			
		||||
@@ -1805,9 +1825,13 @@
 | 
			
		||||
				DA5B0B391F36467300B663F0 /* base64.h */,
 | 
			
		||||
				DA1C7AB71F1A8F6E009A3551 /* cli */,
 | 
			
		||||
				DA831A271A6E1146000AC234 /* mpw-algorithm_v0.c */,
 | 
			
		||||
				DA351483233EF8E800BCF504 /* mpw-algorithm_v0.h */,
 | 
			
		||||
				DA831A281A6E1146000AC234 /* mpw-algorithm_v1.c */,
 | 
			
		||||
				DA351485233EF8E800BCF504 /* mpw-algorithm_v1.h */,
 | 
			
		||||
				DA831A291A6E1146000AC234 /* mpw-algorithm_v2.c */,
 | 
			
		||||
				DA351484233EF8E800BCF504 /* mpw-algorithm_v2.h */,
 | 
			
		||||
				DA831A2A1A6E1146000AC234 /* mpw-algorithm_v3.c */,
 | 
			
		||||
				DA351482233EF8E800BCF504 /* mpw-algorithm_v3.h */,
 | 
			
		||||
				DA6773BB1A4746AF004F356A /* mpw-algorithm.c */,
 | 
			
		||||
				DA6773BC1A4746AF004F356A /* mpw-algorithm.h */,
 | 
			
		||||
				DA7471A01F2B71A9005F3468 /* mpw-marshal-util.c */,
 | 
			
		||||
@@ -2691,11 +2715,15 @@
 | 
			
		||||
				DA1C7AAA1F1A8F24009A3551 /* mpw-marshal.c in Sources */,
 | 
			
		||||
				DA1C7AAB1F1A8F24009A3551 /* mpw-types.c in Sources */,
 | 
			
		||||
				DA5B0B3D1F36467900B663F0 /* base64.c in Sources */,
 | 
			
		||||
				DA351493233EF94300BCF504 /* mpw-algorithm_v1.c in Sources */,
 | 
			
		||||
				DAB07CA31F77261400CC6D43 /* aes.c in Sources */,
 | 
			
		||||
				DAAF16661F5CA3240013B8AE /* mpw-cli-util.c in Sources */,
 | 
			
		||||
				DA1C7AAC1F1A8F24009A3551 /* mpw-util.c in Sources */,
 | 
			
		||||
				DA351495233EF94300BCF504 /* mpw-algorithm_v3.c in Sources */,
 | 
			
		||||
				DA351492233EF94300BCF504 /* mpw-algorithm_v0.c in Sources */,
 | 
			
		||||
				DA1C7AC31F1A8FBA009A3551 /* mpw-cli.c in Sources */,
 | 
			
		||||
				DA7471A31F2B71AE005F3468 /* mpw-marshal-util.c in Sources */,
 | 
			
		||||
				DA351494233EF94300BCF504 /* mpw-algorithm_v2.c in Sources */,
 | 
			
		||||
				DA1C7AAD1F1A8F24009A3551 /* mpw-algorithm.c in Sources */,
 | 
			
		||||
			);
 | 
			
		||||
			runOnlyForDeploymentPostprocessing = 0;
 | 
			
		||||
@@ -2705,10 +2733,14 @@
 | 
			
		||||
			buildActionMask = 2147483647;
 | 
			
		||||
			files = (
 | 
			
		||||
				DA5B0B3C1F36467900B663F0 /* base64.c in Sources */,
 | 
			
		||||
				DA351499233EF94300BCF504 /* mpw-algorithm_v3.c in Sources */,
 | 
			
		||||
				DA351497233EF94300BCF504 /* mpw-algorithm_v1.c in Sources */,
 | 
			
		||||
				DA351496233EF94300BCF504 /* mpw-algorithm_v0.c in Sources */,
 | 
			
		||||
				DA1C7ACA1F1A8FD8009A3551 /* mpw-types.c in Sources */,
 | 
			
		||||
				DA1C7ACB1F1A8FD8009A3551 /* mpw-util.c in Sources */,
 | 
			
		||||
				DAB07CA61F77262400CC6D43 /* aes.c in Sources */,
 | 
			
		||||
				DA1C7AD71F1A8FE6009A3551 /* mpw-bench.c in Sources */,
 | 
			
		||||
				DA351498233EF94300BCF504 /* mpw-algorithm_v2.c in Sources */,
 | 
			
		||||
				DA1C7ACD1F1A8FD8009A3551 /* mpw-algorithm.c in Sources */,
 | 
			
		||||
			);
 | 
			
		||||
			runOnlyForDeploymentPostprocessing = 0;
 | 
			
		||||
@@ -2722,6 +2754,7 @@
 | 
			
		||||
				DA2686201EBFD7A40001E37E /* MPSiteEntity+CoreDataProperties.m in Sources */,
 | 
			
		||||
				DA5E5CF71724A667003798D8 /* MPAlgorithmV0.m in Sources */,
 | 
			
		||||
				DAA449D51EEC4B6B00E7BDD5 /* mpw-marshal.c in Sources */,
 | 
			
		||||
				DA351491233EF93E00BCF504 /* mpw-algorithm_v3.c in Sources */,
 | 
			
		||||
				DA26861E1EBFD7A40001E37E /* MPGeneratedSiteEntity+CoreDataProperties.m in Sources */,
 | 
			
		||||
				DA5E5CF81724A667003798D8 /* MPAlgorithmV1.m in Sources */,
 | 
			
		||||
				DA2686231EBFD7A40001E37E /* MPStoredSiteEntity+CoreDataClass.m in Sources */,
 | 
			
		||||
@@ -2733,14 +2766,17 @@
 | 
			
		||||
				DA5180CE19FF307E00A587E9 /* MPAppDelegate_Store.m in Sources */,
 | 
			
		||||
				DA5E5CFA1724A667003798D8 /* MPAppDelegate_Shared.m in Sources */,
 | 
			
		||||
				DA5E5CFC1724A667003798D8 /* MPConfig.m in Sources */,
 | 
			
		||||
				DA351490233EF93E00BCF504 /* mpw-algorithm_v2.c in Sources */,
 | 
			
		||||
				DA5B0B3A1F36467300B663F0 /* base64.c in Sources */,
 | 
			
		||||
				DA26861F1EBFD7A40001E37E /* MPSiteEntity+CoreDataClass.m in Sources */,
 | 
			
		||||
				DA35148E233EF93E00BCF504 /* mpw-algorithm_v0.c in Sources */,
 | 
			
		||||
				DA3B8456190FC89700246EEA /* MPFixable.m in Sources */,
 | 
			
		||||
				DA5E5D001724A667003798D8 /* MPEntities.m in Sources */,
 | 
			
		||||
				DA2686261EBFD7A40001E37E /* MPUserEntity+CoreDataProperties.m in Sources */,
 | 
			
		||||
				DA5E5D011724A667003798D8 /* MPKey.m in Sources */,
 | 
			
		||||
				DA5E5D031724A667003798D8 /* MPMacAppDelegate.m in Sources */,
 | 
			
		||||
				DA5E5D041724A667003798D8 /* MPMacConfig.m in Sources */,
 | 
			
		||||
				DA35148F233EF93E00BCF504 /* mpw-algorithm_v1.c in Sources */,
 | 
			
		||||
				DA5E5D0C1724A667003798D8 /* main.m in Sources */,
 | 
			
		||||
				93D39C5789EFA607CF788082 /* MPSiteModel.m in Sources */,
 | 
			
		||||
				DA5180CA19FF2F9200A587E9 /* MPAlgorithmV2.m in Sources */,
 | 
			
		||||
@@ -2766,13 +2802,17 @@
 | 
			
		||||
			isa = PBXSourcesBuildPhase;
 | 
			
		||||
			buildActionMask = 2147483647;
 | 
			
		||||
			files = (
 | 
			
		||||
				DA35149A233EF94500BCF504 /* mpw-algorithm_v0.c in Sources */,
 | 
			
		||||
				DA1C7AD81F1A8FF4009A3551 /* mpw-tests-util.c in Sources */,
 | 
			
		||||
				DA35149B233EF94500BCF504 /* mpw-algorithm_v1.c in Sources */,
 | 
			
		||||
				DA6774451A474A3B004F356A /* mpw-types.c in Sources */,
 | 
			
		||||
				DAB07CA51F77261C00CC6D43 /* aes.c in Sources */,
 | 
			
		||||
				DA6774461A474A3B004F356A /* mpw-util.c in Sources */,
 | 
			
		||||
				DA35149C233EF94500BCF504 /* mpw-algorithm_v2.c in Sources */,
 | 
			
		||||
				DA1C7AD91F1A8FF4009A3551 /* mpw-tests.c in Sources */,
 | 
			
		||||
				DA5B0B3B1F36467800B663F0 /* base64.c in Sources */,
 | 
			
		||||
				DA6774431A474A3B004F356A /* mpw-algorithm.c in Sources */,
 | 
			
		||||
				DA35149D233EF94500BCF504 /* mpw-algorithm_v3.c in Sources */,
 | 
			
		||||
			);
 | 
			
		||||
			runOnlyForDeploymentPostprocessing = 0;
 | 
			
		||||
		};
 | 
			
		||||
 
 | 
			
		||||
@@ -17,10 +17,15 @@
 | 
			
		||||
//==============================================================================
 | 
			
		||||
 | 
			
		||||
#include "mpw-algorithm.h"
 | 
			
		||||
#include "mpw-algorithm_v0.c"
 | 
			
		||||
#include "mpw-algorithm_v1.c"
 | 
			
		||||
#include "mpw-algorithm_v2.c"
 | 
			
		||||
#include "mpw-algorithm_v3.c"
 | 
			
		||||
#include "mpw-algorithm_v0.h"
 | 
			
		||||
#include "mpw-algorithm_v1.h"
 | 
			
		||||
#include "mpw-algorithm_v2.h"
 | 
			
		||||
#include "mpw-algorithm_v3.h"
 | 
			
		||||
#include "mpw-util.h"
 | 
			
		||||
 | 
			
		||||
MP_LIBS_BEGIN
 | 
			
		||||
#include <string.h>
 | 
			
		||||
MP_LIBS_END
 | 
			
		||||
 | 
			
		||||
const MPMasterKey mpw_master_key(const char *fullName, const char *masterPassword, const MPAlgorithmVersion algorithmVersion) {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -16,6 +16,7 @@
 | 
			
		||||
// LICENSE file.  Alternatively, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
//==============================================================================
 | 
			
		||||
 | 
			
		||||
#include "mpw-algorithm_v0.h"
 | 
			
		||||
#include "mpw-util.h"
 | 
			
		||||
#include "base64.h"
 | 
			
		||||
 | 
			
		||||
@@ -31,7 +32,7 @@ MP_LIBS_END
 | 
			
		||||
#define MP_otp_window       5 * 60 /* s */
 | 
			
		||||
 | 
			
		||||
// Algorithm version helpers.
 | 
			
		||||
static const char *mpw_type_template_v0(MPResultType type, uint16_t templateIndex) {
 | 
			
		||||
const char *mpw_type_template_v0(MPResultType type, uint16_t templateIndex) {
 | 
			
		||||
 | 
			
		||||
    size_t count = 0;
 | 
			
		||||
    const char **templates = mpw_type_templates( type, &count );
 | 
			
		||||
@@ -40,7 +41,7 @@ static const char *mpw_type_template_v0(MPResultType type, uint16_t templateInde
 | 
			
		||||
    return template;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char mpw_class_character_v0(char characterClass, uint16_t classIndex) {
 | 
			
		||||
const char mpw_class_character_v0(char characterClass, uint16_t classIndex) {
 | 
			
		||||
 | 
			
		||||
    const char *classCharacters = mpw_class_characters( characterClass );
 | 
			
		||||
    if (!classCharacters)
 | 
			
		||||
@@ -50,7 +51,7 @@ static const char mpw_class_character_v0(char characterClass, uint16_t classInde
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Algorithm version overrides.
 | 
			
		||||
static MPMasterKey mpw_master_key_v0(
 | 
			
		||||
MPMasterKey mpw_master_key_v0(
 | 
			
		||||
        const char *fullName, const char *masterPassword) {
 | 
			
		||||
 | 
			
		||||
    const char *keyScope = mpw_purpose_scope( MPKeyPurposeAuthentication );
 | 
			
		||||
@@ -84,7 +85,7 @@ static MPMasterKey mpw_master_key_v0(
 | 
			
		||||
    return masterKey;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static MPSiteKey mpw_site_key_v0(
 | 
			
		||||
MPSiteKey mpw_site_key_v0(
 | 
			
		||||
        MPMasterKey masterKey, const char *siteName, MPCounterValue siteCounter,
 | 
			
		||||
        MPKeyPurpose keyPurpose, const char *keyContext) {
 | 
			
		||||
 | 
			
		||||
@@ -128,7 +129,7 @@ static MPSiteKey mpw_site_key_v0(
 | 
			
		||||
    return siteKey;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *mpw_site_template_password_v0(
 | 
			
		||||
const char *mpw_site_template_password_v0(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam) {
 | 
			
		||||
 | 
			
		||||
    const char *_siteKey = (const char *)siteKey;
 | 
			
		||||
@@ -158,7 +159,7 @@ static const char *mpw_site_template_password_v0(
 | 
			
		||||
    return sitePassword;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *mpw_site_crypted_password_v0(
 | 
			
		||||
const char *mpw_site_crypted_password_v0(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *cipherText) {
 | 
			
		||||
 | 
			
		||||
    if (!cipherText) {
 | 
			
		||||
@@ -183,12 +184,13 @@ static const char *mpw_site_crypted_password_v0(
 | 
			
		||||
    mpw_free( &plainBytes, bufSize );
 | 
			
		||||
    if (!plainText)
 | 
			
		||||
        err( "AES decryption error: %s", strerror( errno ) );
 | 
			
		||||
    trc( "decrypted -> plainText: %zu bytes = %s = %s", strlen( plainText ), plainText, mpw_hex( plainText, strlen( plainText ) ) );
 | 
			
		||||
    else
 | 
			
		||||
        trc( "decrypted -> plainText: %zu bytes = %s = %s", strlen( plainText ), plainText, mpw_hex( plainText, strlen( plainText ) ) );
 | 
			
		||||
 | 
			
		||||
    return plainText;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *mpw_site_derived_password_v0(
 | 
			
		||||
const char *mpw_site_derived_password_v0(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam) {
 | 
			
		||||
 | 
			
		||||
    switch (resultType) {
 | 
			
		||||
@@ -233,7 +235,7 @@ static const char *mpw_site_derived_password_v0(
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *mpw_site_state_v0(
 | 
			
		||||
const char *mpw_site_state_v0(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *plainText) {
 | 
			
		||||
 | 
			
		||||
    // Encrypt
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										42
									
								
								platform-independent/c/core/src/mpw-algorithm_v0.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								platform-independent/c/core/src/mpw-algorithm_v0.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
//==============================================================================
 | 
			
		||||
// This file is part of Master Password.
 | 
			
		||||
// Copyright (c) 2011-2017, Maarten Billemont.
 | 
			
		||||
//
 | 
			
		||||
// Master Password is free software: you can redistribute it and/or modify
 | 
			
		||||
// it under the terms of the GNU General Public License as published by
 | 
			
		||||
// the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
// (at your option) any later version.
 | 
			
		||||
//
 | 
			
		||||
// Master Password is distributed in the hope that it will be useful,
 | 
			
		||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
// GNU General Public License for more details.
 | 
			
		||||
//
 | 
			
		||||
// You can find a copy of the GNU General Public License in the
 | 
			
		||||
// LICENSE file.  Alternatively, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
//==============================================================================
 | 
			
		||||
 | 
			
		||||
#ifndef _MPW_ALGORITHM_V0_H
 | 
			
		||||
#define _MPW_ALGORITHM_V0_H
 | 
			
		||||
 | 
			
		||||
#include "mpw-algorithm.h"
 | 
			
		||||
 | 
			
		||||
const char *mpw_type_template_v0(
 | 
			
		||||
        MPResultType type, uint16_t templateIndex);
 | 
			
		||||
const char mpw_class_character_v0(
 | 
			
		||||
        char characterClass, uint16_t classIndex);
 | 
			
		||||
MPMasterKey mpw_master_key_v0(
 | 
			
		||||
        const char *fullName, const char *masterPassword);
 | 
			
		||||
MPSiteKey mpw_site_key_v0(
 | 
			
		||||
        MPMasterKey masterKey, const char *siteName, MPCounterValue siteCounter,
 | 
			
		||||
        MPKeyPurpose keyPurpose, const char *keyContext);
 | 
			
		||||
const char *mpw_site_template_password_v0(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam);
 | 
			
		||||
const char *mpw_site_crypted_password_v0(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *cipherText);
 | 
			
		||||
const char *mpw_site_derived_password_v0(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam);
 | 
			
		||||
const char *mpw_site_state_v0(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *plainText);
 | 
			
		||||
 | 
			
		||||
#endif // _MPW_ALGORITHM_V0_H
 | 
			
		||||
@@ -16,6 +16,7 @@
 | 
			
		||||
// LICENSE file.  Alternatively, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
//==============================================================================
 | 
			
		||||
 | 
			
		||||
#include "mpw-algorithm_v1.h"
 | 
			
		||||
#include "mpw-util.h"
 | 
			
		||||
 | 
			
		||||
MP_LIBS_BEGIN
 | 
			
		||||
@@ -27,34 +28,21 @@ MP_LIBS_END
 | 
			
		||||
#define MP_p                2U
 | 
			
		||||
#define MP_otp_window       5 * 60 /* s */
 | 
			
		||||
 | 
			
		||||
// Inherited functions.
 | 
			
		||||
MPMasterKey mpw_master_key_v0(
 | 
			
		||||
        const char *fullName, const char *masterPassword);
 | 
			
		||||
MPSiteKey mpw_site_key_v0(
 | 
			
		||||
        MPMasterKey masterKey, const char *siteName, MPCounterValue siteCounter,
 | 
			
		||||
        MPKeyPurpose keyPurpose, const char *keyContext);
 | 
			
		||||
const char *mpw_site_crypted_password_v0(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *cipherText);
 | 
			
		||||
const char *mpw_site_derived_password_v0(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam);
 | 
			
		||||
const char *mpw_site_state_v0(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *state);
 | 
			
		||||
 | 
			
		||||
// Algorithm version overrides.
 | 
			
		||||
static MPMasterKey mpw_master_key_v1(
 | 
			
		||||
MPMasterKey mpw_master_key_v1(
 | 
			
		||||
        const char *fullName, const char *masterPassword) {
 | 
			
		||||
 | 
			
		||||
    return mpw_master_key_v0( fullName, masterPassword );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static MPSiteKey mpw_site_key_v1(
 | 
			
		||||
MPSiteKey mpw_site_key_v1(
 | 
			
		||||
        MPMasterKey masterKey, const char *siteName, MPCounterValue siteCounter,
 | 
			
		||||
        MPKeyPurpose keyPurpose, const char *keyContext) {
 | 
			
		||||
 | 
			
		||||
    return mpw_site_key_v0( masterKey, siteName, siteCounter, keyPurpose, keyContext );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *mpw_site_template_password_v1(
 | 
			
		||||
const char *mpw_site_template_password_v1(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam) {
 | 
			
		||||
 | 
			
		||||
    // Determine the template.
 | 
			
		||||
@@ -81,19 +69,19 @@ static const char *mpw_site_template_password_v1(
 | 
			
		||||
    return sitePassword;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *mpw_site_crypted_password_v1(
 | 
			
		||||
const char *mpw_site_crypted_password_v1(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *cipherText) {
 | 
			
		||||
 | 
			
		||||
    return mpw_site_crypted_password_v0( masterKey, siteKey, resultType, cipherText );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *mpw_site_derived_password_v1(
 | 
			
		||||
const char *mpw_site_derived_password_v1(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam) {
 | 
			
		||||
 | 
			
		||||
    return mpw_site_derived_password_v0( masterKey, siteKey, resultType, resultParam );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *mpw_site_state_v1(
 | 
			
		||||
const char *mpw_site_state_v1(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *state) {
 | 
			
		||||
 | 
			
		||||
    return mpw_site_state_v0( masterKey, siteKey, resultType, state );
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										42
									
								
								platform-independent/c/core/src/mpw-algorithm_v1.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								platform-independent/c/core/src/mpw-algorithm_v1.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
//==============================================================================
 | 
			
		||||
// This file is part of Master Password.
 | 
			
		||||
// Copyright (c) 2011-2017, Maarten Billemont.
 | 
			
		||||
//
 | 
			
		||||
// Master Password is free software: you can redistribute it and/or modify
 | 
			
		||||
// it under the terms of the GNU General Public License as published by
 | 
			
		||||
// the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
// (at your option) any later version.
 | 
			
		||||
//
 | 
			
		||||
// Master Password is distributed in the hope that it will be useful,
 | 
			
		||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
// GNU General Public License for more details.
 | 
			
		||||
//
 | 
			
		||||
// You can find a copy of the GNU General Public License in the
 | 
			
		||||
// LICENSE file.  Alternatively, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
//==============================================================================
 | 
			
		||||
 | 
			
		||||
#ifndef _MPW_ALGORITHM_V1_H
 | 
			
		||||
#define _MPW_ALGORITHM_V1_H
 | 
			
		||||
 | 
			
		||||
#include "mpw-algorithm_v0.h"
 | 
			
		||||
 | 
			
		||||
const char *mpw_type_template_v1(
 | 
			
		||||
        MPResultType type, uint16_t templateIndex);
 | 
			
		||||
const char mpw_class_character_v1(
 | 
			
		||||
        char characterClass, uint16_t classIndex);
 | 
			
		||||
MPMasterKey mpw_master_key_v1(
 | 
			
		||||
        const char *fullName, const char *masterPassword);
 | 
			
		||||
MPSiteKey mpw_site_key_v1(
 | 
			
		||||
        MPMasterKey masterKey, const char *siteName, MPCounterValue siteCounter,
 | 
			
		||||
        MPKeyPurpose keyPurpose, const char *keyContext);
 | 
			
		||||
const char *mpw_site_template_password_v1(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam);
 | 
			
		||||
const char *mpw_site_crypted_password_v1(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *cipherText);
 | 
			
		||||
const char *mpw_site_derived_password_v1(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam);
 | 
			
		||||
const char *mpw_site_state_v1(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *plainText);
 | 
			
		||||
 | 
			
		||||
#endif // _MPW_ALGORITHM_V1_H
 | 
			
		||||
@@ -16,6 +16,7 @@
 | 
			
		||||
// LICENSE file.  Alternatively, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
//==============================================================================
 | 
			
		||||
 | 
			
		||||
#include "mpw-algorithm_v2.h"
 | 
			
		||||
#include "mpw-util.h"
 | 
			
		||||
 | 
			
		||||
MP_LIBS_BEGIN
 | 
			
		||||
@@ -29,26 +30,14 @@ MP_LIBS_END
 | 
			
		||||
#define MP_p                2U
 | 
			
		||||
#define MP_otp_window       5 * 60 /* s */
 | 
			
		||||
 | 
			
		||||
// Inherited functions.
 | 
			
		||||
MPMasterKey mpw_master_key_v1(
 | 
			
		||||
        const char *fullName, const char *masterPassword);
 | 
			
		||||
const char *mpw_site_template_password_v1(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam);
 | 
			
		||||
const char *mpw_site_crypted_password_v1(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *cipherText);
 | 
			
		||||
const char *mpw_site_derived_password_v1(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam);
 | 
			
		||||
const char *mpw_site_state_v1(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *state);
 | 
			
		||||
 | 
			
		||||
// Algorithm version overrides.
 | 
			
		||||
static MPMasterKey mpw_master_key_v2(
 | 
			
		||||
MPMasterKey mpw_master_key_v2(
 | 
			
		||||
        const char *fullName, const char *masterPassword) {
 | 
			
		||||
 | 
			
		||||
    return mpw_master_key_v1( fullName, masterPassword );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static MPSiteKey mpw_site_key_v2(
 | 
			
		||||
MPSiteKey mpw_site_key_v2(
 | 
			
		||||
        MPMasterKey masterKey, const char *siteName, MPCounterValue siteCounter,
 | 
			
		||||
        MPKeyPurpose keyPurpose, const char *keyContext) {
 | 
			
		||||
 | 
			
		||||
@@ -92,25 +81,25 @@ static MPSiteKey mpw_site_key_v2(
 | 
			
		||||
    return siteKey;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *mpw_site_template_password_v2(
 | 
			
		||||
const char *mpw_site_template_password_v2(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam) {
 | 
			
		||||
 | 
			
		||||
    return mpw_site_template_password_v1( masterKey, siteKey, resultType, resultParam );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *mpw_site_crypted_password_v2(
 | 
			
		||||
const char *mpw_site_crypted_password_v2(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *cipherText) {
 | 
			
		||||
 | 
			
		||||
    return mpw_site_crypted_password_v1( masterKey, siteKey, resultType, cipherText );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *mpw_site_derived_password_v2(
 | 
			
		||||
const char *mpw_site_derived_password_v2(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam) {
 | 
			
		||||
 | 
			
		||||
    return mpw_site_derived_password_v1( masterKey, siteKey, resultType, resultParam );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *mpw_site_state_v2(
 | 
			
		||||
const char *mpw_site_state_v2(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *state) {
 | 
			
		||||
 | 
			
		||||
    return mpw_site_state_v1( masterKey, siteKey, resultType, state );
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										42
									
								
								platform-independent/c/core/src/mpw-algorithm_v2.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								platform-independent/c/core/src/mpw-algorithm_v2.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
//==============================================================================
 | 
			
		||||
// This file is part of Master Password.
 | 
			
		||||
// Copyright (c) 2011-2017, Maarten Billemont.
 | 
			
		||||
//
 | 
			
		||||
// Master Password is free software: you can redistribute it and/or modify
 | 
			
		||||
// it under the terms of the GNU General Public License as published by
 | 
			
		||||
// the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
// (at your option) any later version.
 | 
			
		||||
//
 | 
			
		||||
// Master Password is distributed in the hope that it will be useful,
 | 
			
		||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
// GNU General Public License for more details.
 | 
			
		||||
//
 | 
			
		||||
// You can find a copy of the GNU General Public License in the
 | 
			
		||||
// LICENSE file.  Alternatively, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
//==============================================================================
 | 
			
		||||
 | 
			
		||||
#ifndef _MPW_ALGORITHM_V2_H
 | 
			
		||||
#define _MPW_ALGORITHM_V2_H
 | 
			
		||||
 | 
			
		||||
#include "mpw-algorithm_v1.h"
 | 
			
		||||
 | 
			
		||||
const char *mpw_type_template_v2(
 | 
			
		||||
        MPResultType type, uint16_t templateIndex);
 | 
			
		||||
const char mpw_class_character_v2(
 | 
			
		||||
        char characterClass, uint16_t classIndex);
 | 
			
		||||
MPMasterKey mpw_master_key_v2(
 | 
			
		||||
        const char *fullName, const char *masterPassword);
 | 
			
		||||
MPSiteKey mpw_site_key_v2(
 | 
			
		||||
        MPMasterKey masterKey, const char *siteName, MPCounterValue siteCounter,
 | 
			
		||||
        MPKeyPurpose keyPurpose, const char *keyContext);
 | 
			
		||||
const char *mpw_site_template_password_v2(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam);
 | 
			
		||||
const char *mpw_site_crypted_password_v2(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *cipherText);
 | 
			
		||||
const char *mpw_site_derived_password_v2(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam);
 | 
			
		||||
const char *mpw_site_state_v2(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *plainText);
 | 
			
		||||
 | 
			
		||||
#endif // _MPW_ALGORITHM_V2_H
 | 
			
		||||
@@ -16,6 +16,7 @@
 | 
			
		||||
// LICENSE file.  Alternatively, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
//==============================================================================
 | 
			
		||||
 | 
			
		||||
#include "mpw-algorithm_v3.h"
 | 
			
		||||
#include "mpw-util.h"
 | 
			
		||||
 | 
			
		||||
MP_LIBS_BEGIN
 | 
			
		||||
@@ -28,21 +29,8 @@ MP_LIBS_END
 | 
			
		||||
#define MP_p                2U
 | 
			
		||||
#define MP_otp_window       5 * 60 /* s */
 | 
			
		||||
 | 
			
		||||
// Inherited functions.
 | 
			
		||||
MPSiteKey mpw_site_key_v2(
 | 
			
		||||
        MPMasterKey masterKey, const char *siteName, MPCounterValue siteCounter,
 | 
			
		||||
        MPKeyPurpose keyPurpose, const char *keyContext);
 | 
			
		||||
const char *mpw_site_template_password_v2(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam);
 | 
			
		||||
const char *mpw_site_crypted_password_v2(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *cipherText);
 | 
			
		||||
const char *mpw_site_derived_password_v2(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam);
 | 
			
		||||
const char *mpw_site_state_v2(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *state);
 | 
			
		||||
 | 
			
		||||
// Algorithm version overrides.
 | 
			
		||||
static MPMasterKey mpw_master_key_v3(
 | 
			
		||||
MPMasterKey mpw_master_key_v3(
 | 
			
		||||
        const char *fullName, const char *masterPassword) {
 | 
			
		||||
 | 
			
		||||
    const char *keyScope = mpw_purpose_scope( MPKeyPurposeAuthentication );
 | 
			
		||||
@@ -76,32 +64,32 @@ static MPMasterKey mpw_master_key_v3(
 | 
			
		||||
    return masterKey;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static MPSiteKey mpw_site_key_v3(
 | 
			
		||||
MPSiteKey mpw_site_key_v3(
 | 
			
		||||
        MPMasterKey masterKey, const char *siteName, MPCounterValue siteCounter,
 | 
			
		||||
        MPKeyPurpose keyPurpose, const char *keyContext) {
 | 
			
		||||
 | 
			
		||||
    return mpw_site_key_v2( masterKey, siteName, siteCounter, keyPurpose, keyContext );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *mpw_site_template_password_v3(
 | 
			
		||||
const char *mpw_site_template_password_v3(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam) {
 | 
			
		||||
 | 
			
		||||
    return mpw_site_template_password_v2( masterKey, siteKey, resultType, resultParam );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *mpw_site_crypted_password_v3(
 | 
			
		||||
const char *mpw_site_crypted_password_v3(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *cipherText) {
 | 
			
		||||
 | 
			
		||||
    return mpw_site_crypted_password_v2( masterKey, siteKey, resultType, cipherText );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *mpw_site_derived_password_v3(
 | 
			
		||||
const char *mpw_site_derived_password_v3(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam) {
 | 
			
		||||
 | 
			
		||||
    return mpw_site_derived_password_v2( masterKey, siteKey, resultType, resultParam );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *mpw_site_state_v3(
 | 
			
		||||
const char *mpw_site_state_v3(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *state) {
 | 
			
		||||
 | 
			
		||||
    return mpw_site_state_v2( masterKey, siteKey, resultType, state );
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										42
									
								
								platform-independent/c/core/src/mpw-algorithm_v3.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								platform-independent/c/core/src/mpw-algorithm_v3.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
//==============================================================================
 | 
			
		||||
// This file is part of Master Password.
 | 
			
		||||
// Copyright (c) 2011-2017, Maarten Billemont.
 | 
			
		||||
//
 | 
			
		||||
// Master Password is free software: you can redistribute it and/or modify
 | 
			
		||||
// it under the terms of the GNU General Public License as published by
 | 
			
		||||
// the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
// (at your option) any later version.
 | 
			
		||||
//
 | 
			
		||||
// Master Password is distributed in the hope that it will be useful,
 | 
			
		||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
// GNU General Public License for more details.
 | 
			
		||||
//
 | 
			
		||||
// You can find a copy of the GNU General Public License in the
 | 
			
		||||
// LICENSE file.  Alternatively, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
//==============================================================================
 | 
			
		||||
 | 
			
		||||
#ifndef _MPW_ALGORITHM_V3_H
 | 
			
		||||
#define _MPW_ALGORITHM_V3_H
 | 
			
		||||
 | 
			
		||||
#include "mpw-algorithm_v2.h"
 | 
			
		||||
 | 
			
		||||
const char *mpw_type_template_v3(
 | 
			
		||||
        MPResultType type, uint16_t templateIndex);
 | 
			
		||||
const char mpw_class_character_v3(
 | 
			
		||||
        char characterClass, uint16_t classIndex);
 | 
			
		||||
MPMasterKey mpw_master_key_v3(
 | 
			
		||||
        const char *fullName, const char *masterPassword);
 | 
			
		||||
MPSiteKey mpw_site_key_v3(
 | 
			
		||||
        MPMasterKey masterKey, const char *siteName, MPCounterValue siteCounter,
 | 
			
		||||
        MPKeyPurpose keyPurpose, const char *keyContext);
 | 
			
		||||
const char *mpw_site_template_password_v3(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam);
 | 
			
		||||
const char *mpw_site_crypted_password_v3(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *cipherText);
 | 
			
		||||
const char *mpw_site_derived_password_v3(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *resultParam);
 | 
			
		||||
const char *mpw_site_state_v3(
 | 
			
		||||
        MPMasterKey masterKey, MPSiteKey siteKey, MPResultType resultType, const char *plainText);
 | 
			
		||||
 | 
			
		||||
#endif // _MPW_ALGORITHM_V3_H
 | 
			
		||||
		Reference in New Issue
	
	Block a user