├── .gitattributes
├── .gitignore
├── CBcrypt
├── CBCrypt.sln
├── CBcrypt
│ ├── CBCrypt.csproj
│ ├── CBCryptKey.cs
│ ├── CBcrypt.cs
│ ├── Challenge.cs
│ ├── ChallengeResponse.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── packages.config
└── NUnitTest
│ ├── NUnitTest.csproj
│ ├── Properties
│ └── AssemblyInfo.cs
│ ├── Test.cs
│ └── packages.config
├── Documentation
├── Block_Diagram.gif
├── Block_Diagram.graphml
├── CBCrypt Presentation.pptx
├── CBCrypt.chm
└── html
│ ├── CloseSearch.png
│ ├── CollapseAll.bmp
│ ├── Collapsed.gif
│ ├── ExpandAll.bmp
│ ├── Expanded.gif
│ ├── FillNode.aspx
│ ├── FillNode.php
│ ├── Index.aspx
│ ├── Index.gif
│ ├── Index.html
│ ├── Item.gif
│ ├── LoadIndexKeywords.aspx
│ ├── LoadIndexKeywords.php
│ ├── Search.gif
│ ├── SearchHelp.aspx
│ ├── SearchHelp.inc.php
│ ├── SearchHelp.php
│ ├── Splitter.gif
│ ├── SyncTOC.gif
│ ├── TOC.css
│ ├── TOC.js
│ ├── Web.Config
│ ├── WebKI.xml
│ ├── WebTOC.xml
│ ├── favicon.ico
│ ├── fti
│ ├── FTI_100.json
│ ├── FTI_101.json
│ ├── FTI_102.json
│ ├── FTI_103.json
│ ├── FTI_104.json
│ ├── FTI_105.json
│ ├── FTI_107.json
│ ├── FTI_108.json
│ ├── FTI_109.json
│ ├── FTI_110.json
│ ├── FTI_111.json
│ ├── FTI_112.json
│ ├── FTI_114.json
│ ├── FTI_115.json
│ ├── FTI_116.json
│ ├── FTI_117.json
│ ├── FTI_118.json
│ ├── FTI_97.json
│ ├── FTI_98.json
│ ├── FTI_99.json
│ └── FTI_Files.json
│ ├── html
│ ├── 104880745.htm
│ ├── 1050510383.htm
│ ├── 1163784371.htm
│ ├── 1369563518.htm
│ ├── 1415551336.htm
│ ├── 1441647171.htm
│ ├── 1494598437.htm
│ ├── 151453034.htm
│ ├── 1514855079.htm
│ ├── 1534636348.htm
│ ├── 1564874448.htm
│ ├── 1581038909.htm
│ ├── 1581295153.htm
│ ├── 1718333260.htm
│ ├── 1734766934.htm
│ ├── 1750187521.htm
│ ├── 1882239146.htm
│ ├── 1888296670.htm
│ ├── 1905304697.htm
│ ├── 1917065220.htm
│ ├── 1948183430.htm
│ ├── 1955941255.htm
│ ├── 1961160179.htm
│ ├── 2075119955.htm
│ ├── 2143963147.htm
│ ├── 232981836.htm
│ ├── 326356533.htm
│ ├── 423211944.htm
│ ├── 448759364.htm
│ ├── 46105457.htm
│ ├── 463588477.htm
│ ├── 481982644.htm
│ ├── 508581146.htm
│ ├── 517266944.htm
│ ├── 583375642.htm
│ ├── 609681953.htm
│ ├── 718221398.htm
│ ├── 939002703.htm
│ ├── 952553138.htm
│ ├── 965374767.htm
│ └── 998664710.htm
│ ├── icons
│ ├── CFW.gif
│ ├── Caution.gif
│ ├── LastChild.gif
│ ├── adm.gif
│ ├── adm_arch.gif
│ ├── adm_dev.gif
│ ├── adm_dev_arch.gif
│ ├── alert_caution.gif
│ ├── alert_note.gif
│ ├── alert_security.gif
│ ├── arch.gif
│ ├── big_adm.gif
│ ├── big_arch.gif
│ ├── big_dev.gif
│ ├── big_kw.gif
│ ├── box.gif
│ ├── collall.gif
│ ├── collapse.gif
│ ├── collapse_all.gif
│ ├── copycode.gif
│ ├── copycodeHighlight.gif
│ ├── dev.gif
│ ├── dev_arch.gif
│ ├── dropdown.gif
│ ├── dropdownHover.gif
│ ├── drpdown.gif
│ ├── drpdown_orange.gif
│ ├── drpdown_orange_up.gif
│ ├── drpup.gif
│ ├── exp.gif
│ ├── expall.gif
│ ├── expand_all.gif
│ ├── filter1a.gif
│ ├── filter1c.gif
│ ├── footer.gif
│ ├── gradient.gif
│ ├── greencheck.gif
│ ├── greychck.gif
│ ├── header_prev_next.jpg
│ ├── header_sql_tutorial_blank.jpg
│ ├── header_sql_tutorial_logo.GIF
│ ├── kw.gif
│ ├── kw_adm.gif
│ ├── kw_adm_arch.gif
│ ├── kw_adm_dev.gif
│ ├── kw_adm_dev_arch.gif
│ ├── kw_arch.gif
│ ├── kw_dev.gif
│ ├── kw_dev_arch.gif
│ ├── load.gif
│ ├── load_hover.gif
│ ├── note.gif
│ ├── pencil.GIF
│ ├── privclass.gif
│ ├── privdelegate.gif
│ ├── privenum.gif
│ ├── privenumeration.gif
│ ├── privevent.gif
│ ├── privextension.gif
│ ├── privfield.gif
│ ├── privinterface.gif
│ ├── privmethod.gif
│ ├── privproperty.gif
│ ├── privstructure.gif
│ ├── protclass.gif
│ ├── protdelegate.gif
│ ├── protenum.gif
│ ├── protenumeration.gif
│ ├── protevent.gif
│ ├── protextension.gif
│ ├── protfield.gif
│ ├── protinterface.gif
│ ├── protmethod.gif
│ ├── protoperator.gif
│ ├── protproperty.gif
│ ├── protstructure.gif
│ ├── pubclass.gif
│ ├── pubdelegate.gif
│ ├── pubenum.gif
│ ├── pubenumeration.gif
│ ├── pubevent.gif
│ ├── pubextension.gif
│ ├── pubfield.gif
│ ├── pubinterface.gif
│ ├── pubmethod.gif
│ ├── puboperator.gif
│ ├── pubproperty.gif
│ ├── pubstructure.gif
│ ├── requirements1a.gif
│ ├── requirements1c.gif
│ ├── save.gif
│ ├── save_hover.gif
│ ├── security.gif
│ ├── seealso1a.gif
│ ├── seealso1c.gif
│ ├── slMobile.gif
│ ├── static.gif
│ └── xna.gif
│ ├── images
│ ├── 030c41d9079671d09a62d8e2c1db6973.gif
│ ├── LT_tab.gif
│ ├── RT_tab.gif
│ ├── alert_note.gif
│ ├── lightweight_topnav.png
│ ├── lightweight_topnav_slice.gif
│ ├── lt_search.gif
│ ├── msdn2010branding-stripe.png
│ ├── msdn2010branding-stripe1.png
│ ├── msg-icon.gif
│ ├── msg-incoming.gif
│ ├── msg-outgoing.gif
│ ├── rt_search.gif
│ ├── searchicon.gif
│ └── slice_search.gif
│ ├── index.php
│ ├── scripts
│ ├── CheckboxMenu.js
│ ├── CommonUtilities.js
│ ├── Dropdown.js
│ ├── EventUtilities.js
│ ├── SplitScreen.js
│ ├── languageSelector.js
│ ├── script_feedBack.js
│ └── script_manifold.js
│ └── styles
│ ├── Presentation.css
│ ├── Whidbey
│ └── presentation.css
│ ├── highlight.css
│ ├── highlight.js
│ ├── lightweight.css
│ ├── lw-code.css
│ ├── lw-miranda.css
│ └── msdn10
│ ├── Msdn10-bn20091118.css
│ ├── Msdn10_vstudio-bn20091118.css
│ ├── adart_repository.png
│ ├── bg.png
│ ├── bg_vstudio.png
│ ├── bullet.gif
│ ├── clear.gif
│ ├── contentpane.png
│ ├── contentpaneleft.png
│ ├── contentpaneright.png
│ ├── internav.png
│ ├── mtps-bn20091118.css
│ └── subnav_vstudio.png
├── LICENSE
└── README.md
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Build Folders (you can keep bin if you'd like, to store dlls and pdbs)
2 | [Bb]in/
3 | [Oo]bj/
4 |
5 | # mstest test results
6 | TestResults
7 |
8 | ## Ignore Visual Studio temporary files, build results, and
9 | ## files generated by popular Visual Studio add-ons.
10 |
11 | # User-specific files
12 | *.suo
13 | *.user
14 | *.sln.docstates
15 |
16 | # Build results
17 | [Dd]ebug/
18 | [Rr]elease/
19 | x64/
20 | *_i.c
21 | *_p.c
22 | *.ilk
23 | *.meta
24 | *.obj
25 | *.pch
26 | *.pdb
27 | *.pgc
28 | *.pgd
29 | *.rsp
30 | *.sbr
31 | *.tlb
32 | *.tli
33 | *.tlh
34 | *.tmp
35 | *.log
36 | *.vspscc
37 | *.vssscc
38 | .builds
39 |
40 | # Visual C++ cache files
41 | ipch/
42 | *.aps
43 | *.ncb
44 | *.opensdf
45 | *.sdf
46 |
47 | # Visual Studio profiler
48 | *.psess
49 | *.vsp
50 | *.vspx
51 |
52 | # Guidance Automation Toolkit
53 | *.gpState
54 |
55 | # ReSharper is a .NET coding add-in
56 | _ReSharper*
57 |
58 | # GhostDoc is a .NET coding add-in
59 | *.GhostDoc*
60 |
61 | # NCrunch
62 | *.ncrunch*
63 | .*crunch*.local.xml
64 |
65 | # Installshield output folder
66 | [Ee]xpress
67 |
68 | # DocProject is a documentation generator add-in
69 | DocProject/buildhelp/
70 | DocProject/Help/*.HxT
71 | DocProject/Help/*.HxC
72 | DocProject/Help/*.hhc
73 | DocProject/Help/*.hhk
74 | DocProject/Help/*.hhp
75 | DocProject/Help/Html2
76 | DocProject/Help/html
77 |
78 | # Click-Once directory
79 | publish
80 |
81 | # Publish Web Output
82 | *.Publish.xml
83 |
84 | # NuGet Packages Directory
85 | packages
86 |
87 | # Windows Azure Build Output
88 | csx
89 | *.build.csdef
90 |
91 | # Windows Store app package directory
92 | AppPackages/
93 |
94 | # Others
95 | [Bb]in
96 | [Oo]bj
97 | sql
98 | TestResults
99 | [Tt]est[Rr]esult*
100 | *.Cache
101 | ClientBin
102 | [Ss]tyle[Cc]op.*
103 | ~$*
104 | *.dbmdl
105 | Generated_Code #added for RIA/Silverlight projects
106 |
107 | # Backup & report files from converting an old project file to a newer
108 | # Visual Studio version. Backup files are not needed, because we have git ;-)
109 | _UpgradeReport_Files/
110 | Backup*/
111 | UpgradeLog*.XML
112 | *.userprefs
113 |
--------------------------------------------------------------------------------
/CBcrypt/CBCrypt.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2013
4 | VisualStudioVersion = 12.0.21005.1
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CBCrypt", "CBCrypt\CBCrypt.csproj", "{7AEFCC6A-DD32-4286-9839-5A4765D7E94C}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NUnitTest", "NUnitTest\NUnitTest.csproj", "{4FE62D52-99B6-4EFB-9C53-71DEE771569A}"
9 | EndProject
10 | Global
11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
12 | Debug|Any CPU = Debug|Any CPU
13 | Release|Any CPU = Release|Any CPU
14 | EndGlobalSection
15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
16 | {7AEFCC6A-DD32-4286-9839-5A4765D7E94C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
17 | {7AEFCC6A-DD32-4286-9839-5A4765D7E94C}.Debug|Any CPU.Build.0 = Debug|Any CPU
18 | {7AEFCC6A-DD32-4286-9839-5A4765D7E94C}.Release|Any CPU.ActiveCfg = Release|Any CPU
19 | {7AEFCC6A-DD32-4286-9839-5A4765D7E94C}.Release|Any CPU.Build.0 = Release|Any CPU
20 | {4FE62D52-99B6-4EFB-9C53-71DEE771569A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21 | {4FE62D52-99B6-4EFB-9C53-71DEE771569A}.Debug|Any CPU.Build.0 = Debug|Any CPU
22 | {4FE62D52-99B6-4EFB-9C53-71DEE771569A}.Release|Any CPU.ActiveCfg = Release|Any CPU
23 | {4FE62D52-99B6-4EFB-9C53-71DEE771569A}.Release|Any CPU.Build.0 = Release|Any CPU
24 | EndGlobalSection
25 | GlobalSection(SolutionProperties) = preSolution
26 | HideSolutionNode = FALSE
27 | EndGlobalSection
28 | EndGlobal
29 |
--------------------------------------------------------------------------------
/CBcrypt/CBcrypt/CBCrypt.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {7AEFCC6A-DD32-4286-9839-5A4765D7E94C}
8 | Library
9 | Properties
10 | Org.CBCrypt
11 | CBCrypt
12 | v4.0
13 | 512
14 |
15 |
16 | true
17 | full
18 | false
19 | bin\Debug\
20 | DEBUG;TRACE
21 | prompt
22 | 4
23 |
24 |
25 | true
26 | bin\Release\
27 | TRACE
28 | prompt
29 | 4
30 |
31 |
32 |
33 | ..\packages\BouncyCastle.1.7.0\lib\Net40-Client\BouncyCastle.Crypto.dll
34 |
35 |
36 | ..\packages\SCrypt.2.0.0.2\lib\CryptSharp.SCryptSubset.dll
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
64 |
--------------------------------------------------------------------------------
/CBcrypt/CBcrypt/CBCryptKey.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Security.Cryptography;
3 | using Org.BouncyCastle.Crypto;
4 | using Org.BouncyCastle.X509;
5 | using Org.BouncyCastle.Security;
6 | using Org.BouncyCastle.Crypto.Agreement;
7 |
8 | namespace Org.CBCrypt
9 | {
10 | public class CBCryptKey
11 | {
12 | [Obsolete("Use AsymmetricKey and SymmetricKey Instead")]
13 | public AsymmetricCipherKeyPair Key { get { return AsymmetricKey; } set { AsymmetricKey = value; } }
14 |
15 | public AsymmetricCipherKeyPair AsymmetricKey { get; set; }
16 | public byte[] SymmetricKey { get; set; }
17 |
18 | public CBCryptKey(string CBCryptHostId, string username, string password)
19 | {
20 | byte[] highCostSecret = CBCrypt.GenerateHighCostSecret(CBCryptHostId, username, password);
21 | GenerateKeys(highCostSecret);
22 | }
23 | public CBCryptKey(byte[] highCostSecret)
24 | {
25 | GenerateKeys(highCostSecret);
26 | }
27 |
28 | private void GenerateKeys(byte[] highCostSecret)
29 | {
30 | SecureRandom seededPRNG = CBCrypt.GetSeededDigestRandomGenerator(highCostSecret);
31 | this.AsymmetricKey = CBCrypt.GenerateKeyPair(seededPRNG);
32 | this.SymmetricKey = new byte[32];
33 | seededPRNG.NextBytes(this.SymmetricKey);
34 | }
35 |
36 | public static byte[] GetPublicKeyDerEncoded(AsymmetricCipherKeyPair AsymmetricKey)
37 | {
38 | return SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(AsymmetricKey.Public).GetDerEncoded();
39 | }
40 | public static byte[] GetSharedSecret(AsymmetricCipherKeyPair localKeyWithPrivate, byte[] remotePublicKeyDerEncoded)
41 | {
42 | var remotePublicKey = PublicKeyFactory.CreateKey(remotePublicKeyDerEncoded);
43 | var agreement = new ECDHBasicAgreement();
44 | agreement.Init(localKeyWithPrivate.Private);
45 | using (var sha = SHA256.Create()) {
46 | // CalculateAgreement returns a BigInteger, whose length is variable, and bits are not whitened.
47 | // So hash it.
48 | return sha.ComputeHash(agreement.CalculateAgreement(remotePublicKey).ToByteArray());
49 | }
50 | }
51 | ///
52 | /// Sometimes returns number of bytes != 32
53 | ///
54 | [Obsolete("Used only for backward compatibility with a broken version of CBCrypt")]
55 | public static byte[] GetObsoleteSharedSecret(AsymmetricCipherKeyPair localKeyWithPrivate, byte[] remotePublicKeyDerEncoded)
56 | {
57 | var remotePublicKey = PublicKeyFactory.CreateKey(remotePublicKeyDerEncoded);
58 | var agreement = new ECDHBasicAgreement();
59 | agreement.Init(localKeyWithPrivate.Private);
60 | return agreement.CalculateAgreement(remotePublicKey).ToByteArray();
61 | }
62 |
63 | public byte[] GetPublicKeyDerEncoded()
64 | {
65 | return GetPublicKeyDerEncoded(AsymmetricKey);
66 | }
67 | public byte[] GetSharedSecret(byte[] remotePublicKeyDerEncoded)
68 | {
69 | return GetSharedSecret(AsymmetricKey, remotePublicKeyDerEncoded);
70 | }
71 | ///
72 | /// Sometimes returns number of bytes != 32
73 | ///
74 | [Obsolete("Used only for backward compatibility with a broken version of CBCrypt")]
75 | public byte[] GetObsoleteSharedSecret(byte[] remotePublicKeyDerEncoded)
76 | {
77 | return GetObsoleteSharedSecret(AsymmetricKey, remotePublicKeyDerEncoded);
78 | }
79 |
80 | ~CBCryptKey ()
81 | {
82 | // Although this finalizer will in many situations be insufficient, I'll still do what I can.
83 | // For example, how about sterilizing the HighCostSecret, or the AsymmetricKey, or anything else?
84 | var bytes = SymmetricKey;
85 | if (bytes != null) {
86 | Array.Clear(bytes, 0, bytes.Length);
87 | }
88 | }
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/CBcrypt/CBcrypt/CBcrypt.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | // using CryptSharp.Utility; // Today, doesn't conflict with bouncycastle. But bouncycastle has an implementation of SCrypt might come out someday
3 | using Org.BouncyCastle.Crypto;
4 | using Org.BouncyCastle.Security;
5 | using Org.BouncyCastle.Crypto.Digests;
6 | using Org.BouncyCastle.Crypto.Generators;
7 | using Org.BouncyCastle.Crypto.Prng;
8 |
9 | namespace Org.CBCrypt
10 | {
11 | public static class CBCrypt
12 | {
13 | ///
14 | /// Applies RateLimitingFunction to the LowCostSecret. Returns a HighCostSecret, dkLength = 32 bytes
15 | ///
16 | /// NOTICE: Zero's out LowCostSecret before returning.
17 | ///
18 | private static byte[] DoRateLimitingFunction(byte[] LowCostSecret)
19 | {
20 | /* cost 4096, blockSize 8, parallel 1, cause SCrypt to take ~175-350ms on Core i5-540M, 2.5Ghz
21 | * This is in addition to the approx 100ms-200ms to generate ECDSA keypair.
22 | */
23 | const int dkLength = 32;
24 | byte[] retVal = CryptSharp.Utility.SCrypt.ComputeDerivedKey
25 | (
26 | key: LowCostSecret, // scrypt will transform this into a high cost secret
27 | salt: new byte[16], // zero salt
28 | cost: 4096, // To scale the cost, scale this parameter. Scale is approximately linear.
29 | blockSize: 8, // this is a recommended default by the scrypt authors
30 | parallel: 1, // this is a recommended default by the scrypt authors
31 | maxThreads: null,
32 | derivedKeyLength: dkLength // 32 is surely large enough not to lose any entropy of the user supplied password
33 | );
34 | Array.Clear(LowCostSecret, 0, LowCostSecret.Length);
35 | return retVal;
36 | }
37 |
38 | ///
39 | /// Returns a seed generated from the parameters. Some day we may implement variants with different hashes,
40 | /// but for now it's hard-coded to use Sha256 returning 32 bytes.
41 | ///
42 | private static byte[] GetLowCostSecret(string CBCryptHostId, string username, string password)
43 | {
44 | if (CBCryptHostId == null) {
45 | throw new ArgumentNullException("CBCryptHostId");
46 | }
47 | if (username == null) {
48 | throw new ArgumentNullException("username");
49 | }
50 | if (password == null) {
51 | throw new ArgumentNullException("password");
52 | }
53 | if (CBCryptHostId.Length < 1) {
54 | throw new ArgumentException("CBCryptHostId must not be blank");
55 | }
56 | if (username.Length < 1) {
57 | throw new ArgumentException("username must not be blank");
58 | }
59 | if (password.Length < 1) {
60 | throw new ArgumentException("password must not be blank");
61 | }
62 | byte[] CBCryptHostIdBytes = System.Text.Encoding.UTF8.GetBytes(CBCryptHostId);
63 | byte[] usernameBytes = System.Text.Encoding.UTF8.GetBytes(username);
64 | byte[] passwordBytes = System.Text.Encoding.UTF8.GetBytes(password);
65 |
66 | /* We want to distill all the inputs down to a single hash, which is unique given the specific set of inputs.
67 | * It is important that we don't get the same hash output, if there's any variation of the inputs - in other words,
68 | * we must be resilient to concatenation.
69 | *
70 | * The two ways readily available were to HMAC each input, in turn using the previous HMAC as the key for the next. Or,
71 | * first hash each input separately and independently of each other, and then hash a concatenation of all the hashes.
72 | * The second is slightly faster, as if that matters. Which is why we're using it.
73 | */
74 | using (var hashFunction = System.Security.Cryptography.SHA256.Create()) {
75 | // factorHashes : byte array that will contain the concatenated hashes of all the inputFactors
76 | int hashSizeInBytes = hashFunction.HashSize / 8;
77 | const int thisArgc = 3;
78 | var factorHashes = new byte[hashSizeInBytes * thisArgc];
79 | int factorHashesPos = 0;
80 | byte[] factorHash;
81 |
82 | factorHash = hashFunction.ComputeHash(CBCryptHostIdBytes);
83 | Array.Clear(CBCryptHostIdBytes, 0, CBCryptHostIdBytes.Length);
84 | Array.Copy(factorHash, 0, factorHashes, factorHashesPos, factorHash.Length);
85 | Array.Clear(factorHash, 0, factorHash.Length);
86 | factorHashesPos += hashSizeInBytes;
87 |
88 | factorHash = hashFunction.ComputeHash(usernameBytes);
89 | Array.Clear(usernameBytes, 0, usernameBytes.Length);
90 | Array.Copy(factorHash, 0, factorHashes, factorHashesPos, factorHash.Length);
91 | Array.Clear(factorHash, 0, factorHash.Length);
92 | factorHashesPos += hashSizeInBytes;
93 |
94 | factorHash = hashFunction.ComputeHash(passwordBytes);
95 | Array.Clear(passwordBytes, 0, passwordBytes.Length);
96 | Array.Copy(factorHash, 0, factorHashes, factorHashesPos, factorHash.Length);
97 | Array.Clear(factorHash, 0, factorHash.Length);
98 | // factorHashesPos += hashSizeInBytes; // this is actually unnecessary cuz it's the last one
99 |
100 | byte[] output = hashFunction.ComputeHash(factorHashes);
101 | Array.Clear(factorHashes, 0, factorHashes.Length);
102 | return output;
103 | }
104 | }
105 |
106 | ///
107 | /// Returns seeded PRNG
108 | /// Someday, we might want to add more variants on digests. But for now, Sha256 is the only option.
109 | ///
110 | public static SecureRandom GetSeededDigestRandomGenerator(byte[] seed)
111 | {
112 | var prng = new DigestRandomGenerator(new Sha256Digest());
113 | prng.AddSeedMaterial(seed);
114 | return new SecureRandom(prng);
115 | }
116 |
117 | ///
118 | /// Returns the ECDH/256 keypair derived from the parameters.
119 | ///
120 | public static AsymmetricCipherKeyPair GenerateKeyPair(string CBCryptHostId, string username, string password)
121 | {
122 | byte[] highCostSecret = GenerateHighCostSecret(CBCryptHostId, username, password);
123 | return GenerateKeyPair(highCostSecret);
124 | }
125 | ///
126 | /// Returns the ECDH/256 keypair derived from the HighCostSecret
127 | /// This allows a client to save HighCostSecret, and regenerate the key at a later time without asking user for password
128 | ///
129 | public static AsymmetricCipherKeyPair GenerateKeyPair(byte[] HighCostSecret)
130 | {
131 | SecureRandom seededPRNG = GetSeededDigestRandomGenerator(HighCostSecret);
132 | return GenerateKeyPair(seededPRNG);
133 | }
134 |
135 | public static AsymmetricCipherKeyPair GenerateKeyPair(SecureRandom seededPRNG)
136 | {
137 | // Algorithm possibilities: "EC", "ECDSA", "ECDH", "ECDHC", "ECGOST3410", "ECMQV"
138 | // Default if none specified: "EC"
139 | var ec = new ECKeyPairGenerator("ECDH");
140 | // strength parameters: 192, 224, 239, 256, 384, 521
141 | var keyGenParams = new KeyGenerationParameters(seededPRNG, 256);
142 | ec.Init(keyGenParams);
143 |
144 | return ec.GenerateKeyPair();
145 | }
146 | ///
147 | /// Returns the HighCostSecret derived from the parameters
148 | /// This allows a client to save HighCostSecret, and regenerate the key at a later time without asking user for password
149 | ///
150 | public static byte[] GenerateHighCostSecret(string CBCryptHostId, string username, string password)
151 | {
152 | byte[] lowCostSecret = GetLowCostSecret(CBCryptHostId, username, password);
153 | byte[] highCostSecret = DoRateLimitingFunction(lowCostSecret);
154 | return highCostSecret;
155 | }
156 | }
157 | }
158 |
--------------------------------------------------------------------------------
/CBcrypt/CBcrypt/Challenge.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Org.CBCrypt
4 | {
5 | public class Challenge
6 | {
7 | private const int ChallengeSize = 32;
8 | private const int tempKeySize = 32;
9 | private CBCryptKey ServerEphemeralKey;
10 | public byte[] ChallengeBytes { get; set; }
11 | public string CBCryptHostId { get; set; }
12 | public byte[] ServerPublicKeyDerEncoded { get; set; }
13 |
14 | public Challenge()
15 | {
16 | // Empty constructor is requirement for deserialization
17 | }
18 | public Challenge(string CBCryptHostId)
19 | {
20 | this.CBCryptHostId = CBCryptHostId;
21 | this.ChallengeBytes = new byte[ChallengeSize];
22 | // The easiest way for me to generate an ephemeral key is to feed random bytes into CBCrypt.GenerateKeyPair
23 | var tempKey = new byte[tempKeySize];
24 | using (var rng = new System.Security.Cryptography.RNGCryptoServiceProvider()) {
25 | rng.GetBytes(this.ChallengeBytes);
26 | rng.GetBytes(tempKey);
27 | }
28 | this.ServerEphemeralKey = new CBCryptKey(tempKey);
29 | this.ServerPublicKeyDerEncoded = this.ServerEphemeralKey.GetPublicKeyDerEncoded();
30 | }
31 |
32 | public byte[] GetServerPublicDer()
33 | {
34 | return this.ServerEphemeralKey.GetPublicKeyDerEncoded();
35 | }
36 | public static byte[] GenerateChallengeResponseBytes(byte[] challenge, byte[] sharedSecret)
37 | {
38 | using (var hmac = new System.Security.Cryptography.HMACSHA256(sharedSecret)) {
39 | return hmac.ComputeHash(challenge);
40 | }
41 | }
42 | public bool TryValidateChallengeResponse(ChallengeResponse response)
43 | {
44 | byte[] sharedSecret = this.ServerEphemeralKey.GetSharedSecret(response.PublicKeyDerEncoded);
45 | byte[] challengeResponseCheck = GenerateChallengeResponseBytes(this.ChallengeBytes, sharedSecret);
46 |
47 | // Verify that the challengeResponse matches challengeResponseCheck. Otherwise the client auth has failed.
48 | if (response.ChallengeResponseBytes == null || (response.ChallengeResponseBytes.Length != challengeResponseCheck.Length)) {
49 | return false;
50 | }
51 | for (int i = 0; i < challengeResponseCheck.Length; i++) {
52 | if (response.ChallengeResponseBytes[i] != challengeResponseCheck[i]) {
53 | return false;
54 | }
55 | }
56 | return true;
57 | }
58 |
59 | ///
60 | /// Throws CryptographicException if ObsoleteSharedSecret length != 32
61 | ///
62 | [Obsolete("Used only for backward compatibility with a broken version of CBCrypt")]
63 | public bool TryObsoleteValidateChallengeResponse(ChallengeResponse response)
64 | {
65 | byte[] sharedSecret = this.ServerEphemeralKey.GetObsoleteSharedSecret(response.PublicKeyDerEncoded);
66 | byte[] challengeResponseCheck = GenerateChallengeResponseBytes(this.ChallengeBytes, sharedSecret);
67 |
68 | // Verify that the challengeResponse matches challengeResponseCheck. Otherwise the client auth has failed.
69 | if (response.ChallengeResponseBytes == null || (response.ChallengeResponseBytes.Length != challengeResponseCheck.Length)) {
70 | return false;
71 | }
72 | for (int i = 0; i < challengeResponseCheck.Length; i++) {
73 | if (response.ChallengeResponseBytes[i] != challengeResponseCheck[i]) {
74 | return false;
75 | }
76 | }
77 | return true;
78 | }
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/CBcrypt/CBcrypt/ChallengeResponse.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace Org.CBCrypt
4 | {
5 | public class ChallengeResponse
6 | {
7 | public byte[] PublicKeyDerEncoded { get; set; }
8 | public byte[] ChallengeResponseBytes { get; set; }
9 |
10 | public ChallengeResponse()
11 | {
12 | // Empty constructor is requirement for deserialization
13 | }
14 | public ChallengeResponse(CBCryptKey clientKey, Challenge ChallengeFromServer)
15 | {
16 | this.PublicKeyDerEncoded = clientKey.GetPublicKeyDerEncoded();
17 | byte[] sharedSecret = clientKey.GetSharedSecret(ChallengeFromServer.ServerPublicKeyDerEncoded);
18 | this.ChallengeResponseBytes = Challenge.GenerateChallengeResponseBytes(ChallengeFromServer.ChallengeBytes,sharedSecret);
19 | }
20 |
21 | ///
22 | /// GetObsoleteChallengeResponse exists solely for backward compatibility, for clients to connect to servers running
23 | /// CBCrypt 1.0.5.0 or lower.
24 | ///
25 | [Obsolete]
26 | public static ChallengeResponse GetObsoleteChallengeResponse(CBCryptKey clientKey, Challenge challengeFromServer)
27 | {
28 | var response = new ChallengeResponse();
29 | response.PublicKeyDerEncoded = clientKey.GetPublicKeyDerEncoded();
30 | byte[] obsoleteSharedSecret = clientKey.GetObsoleteSharedSecret(challengeFromServer.ServerPublicKeyDerEncoded);
31 | response.ChallengeResponseBytes = Challenge.GenerateChallengeResponseBytes(challengeFromServer.ChallengeBytes, obsoleteSharedSecret);
32 | return response;
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/CBcrypt/CBcrypt/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("CBCrypt")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("CBCrypt")]
13 | [assembly: AssemblyCopyright("Copyright © 2014")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("5514a466-d0cb-40f6-8528-ab8bce243267")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.6.3")]
36 | [assembly: AssemblyFileVersion("1.0.6.3")]
37 |
--------------------------------------------------------------------------------
/CBcrypt/CBcrypt/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/CBcrypt/NUnitTest/NUnitTest.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | {4FE62D52-99B6-4EFB-9C53-71DEE771569A}
7 | Library
8 | NUnitTest
9 | NUnitTest
10 |
11 |
12 | true
13 | full
14 | false
15 | bin\Debug
16 | DEBUG;TRACE
17 | prompt
18 | 4
19 | false
20 |
21 |
22 | true
23 | bin\Release
24 | prompt
25 | 4
26 | TRACE
27 | false
28 |
29 |
30 |
31 | False
32 | ..\packages\Newtonsoft.Json.6.0.8\lib\net40\Newtonsoft.Json.dll
33 |
34 |
35 | ..\packages\NUnit.2.6.3\lib\nunit.framework.dll
36 |
37 |
38 |
39 | ..\packages\SCrypt.2.0.0.2\lib\CryptSharp.SCryptSubset.dll
40 |
41 |
42 | ..\packages\BouncyCastle.1.7.0\lib\Net40-Client\BouncyCastle.Crypto.dll
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | {7AEFCC6A-DD32-4286-9839-5A4765D7E94C}
53 | CBCrypt
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/CBcrypt/NUnitTest/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("CBCrypt_NUnitTest")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("NUnitTest.Properties")]
13 | [assembly: AssemblyCopyright("Copyright © 2014")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("25ff193f-9957-4766-ad6f-67ade2776925")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | [assembly: AssemblyVersion("1.0.0.0")]
33 | [assembly: AssemblyFileVersion("1.0.0.0")]
34 |
--------------------------------------------------------------------------------
/CBcrypt/NUnitTest/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Documentation/Block_Diagram.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/Block_Diagram.gif
--------------------------------------------------------------------------------
/Documentation/CBCrypt Presentation.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/CBCrypt Presentation.pptx
--------------------------------------------------------------------------------
/Documentation/CBCrypt.chm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/CBCrypt.chm
--------------------------------------------------------------------------------
/Documentation/html/CloseSearch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/CloseSearch.png
--------------------------------------------------------------------------------
/Documentation/html/CollapseAll.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/CollapseAll.bmp
--------------------------------------------------------------------------------
/Documentation/html/Collapsed.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/Collapsed.gif
--------------------------------------------------------------------------------
/Documentation/html/ExpandAll.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/ExpandAll.bmp
--------------------------------------------------------------------------------
/Documentation/html/Expanded.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/Expanded.gif
--------------------------------------------------------------------------------
/Documentation/html/FillNode.aspx:
--------------------------------------------------------------------------------
1 | <%@ Page Language="C#" EnableViewState="False" %>
2 |
3 |
91 |
--------------------------------------------------------------------------------
/Documentation/html/FillNode.php:
--------------------------------------------------------------------------------
1 |
2 | // Contributed to the Sandcastle Help File Builder project by Thomas Levesque
3 |
4 | header("Content-Type: text/html; charset=utf-8");
5 | $toc = new DOMDocument();
6 | $toc->load('WebTOC.xml');
7 | $xpath = new DOMXPath($toc);
8 | $id = $_GET["Id"];
9 | $nodes = $xpath->query("//HelpTOCNode[@Id='$id']/*");
10 | if ($nodes->length == 0)
11 | {
12 | ?>
13 | TOC node not found!
14 |
15 | die();
16 | }
17 | foreach($nodes as $node)
18 | {
19 | $id = $node->getAttribute("Id");
20 | $url = $node->getAttribute("Url");
21 | $title = $node->getAttribute("Title");
22 | if (empty($url))
23 | {
24 | $url = "#";
25 | $target = "";
26 | }
27 | else
28 | {
29 | $target = " target=\"TopicContent\"";
30 | }
31 |
32 | if ($node->hasChildNodes())
33 | {
34 | ?>
35 |
40 |
41 | }
42 | else
43 | {
44 | ?>
45 |
49 |
50 | }
51 | }
52 | ?>
--------------------------------------------------------------------------------
/Documentation/html/Index.aspx:
--------------------------------------------------------------------------------
1 | <%@ Page Language="C#" EnableViewState="False" %>
2 |
3 |
4 |
5 |
6 |
7 | CBCrypt - Table of Content
8 |
9 |
10 |
11 |
12 |
13 |
14 |
71 |
72 |
73 |
74 |
75 |
76 |
158 |
--------------------------------------------------------------------------------
/Documentation/html/Index.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/Index.gif
--------------------------------------------------------------------------------
/Documentation/html/Item.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/Item.gif
--------------------------------------------------------------------------------
/Documentation/html/LoadIndexKeywords.aspx:
--------------------------------------------------------------------------------
1 | <%@ Page Language="C#" EnableViewState="False" %>
2 |
3 |
103 |
--------------------------------------------------------------------------------
/Documentation/html/LoadIndexKeywords.php:
--------------------------------------------------------------------------------
1 |
2 | // Contributed to the Sandcastle Help File Builder project by Thomas Levesque
3 |
4 | $ki = new DOMDocument();
5 | $ki->load("WebKI.xml");
6 | $xpath = new DOMXPath($ki);
7 | $nodes = $xpath->query("/HelpKI/*");
8 | $startIndexParam = $_GET["StartIndex"];
9 | $startIndex = 0;
10 | if (!empty($startIndexParam))
11 | $startIndex = intval($startIndexParam) * 128;
12 | $endIndex = $startIndex + 128;
13 |
14 | if ($endIndex > $nodes->length)
15 | $endIndex = $nodes->length;
16 |
17 | if($startIndex > 0)
18 | {
19 | ?>
20 |
23 |
24 | }
25 |
26 | while($startIndex < $endIndex)
27 | {
28 | $node = $nodes->item($startIndex);
29 | $url = $node->getAttribute("Url");
30 | $title = $node->getAttribute("Title");
31 | $target = " target=\"TopicContent\"";
32 |
33 | if (empty($url))
34 | {
35 | $url = "#";
36 | $target = "";
37 | }
38 | ?>
39 |
40 |
>= $title ?>
41 |
42 | $subNodes = $xpath->query("./HelpKINode", $node);
43 | foreach($subNodes as $subNode)
44 | {
45 | $subUrl = $subNode->getAttribute("Url");
46 | $subTitle = $subNode->getAttribute("Title");
47 | ?>
48 |
51 |
52 |
53 | }
54 | ?>
55 |
56 |
57 | $startIndex++;
58 | }
59 |
60 | if($startIndex < $nodes->length)
61 | {
62 | ?>
63 |
66 |
67 | }
68 | ?>
--------------------------------------------------------------------------------
/Documentation/html/Search.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/Search.gif
--------------------------------------------------------------------------------
/Documentation/html/SearchHelp.inc.php:
--------------------------------------------------------------------------------
1 |
2 | // Contributed to the Sandcastle Help File Builder project by Thomas Levesque
3 |
4 | class Ranking
5 | {
6 | public $filename;
7 | public $pageTitle;
8 | public $rank;
9 |
10 | function __construct($file, $title, $rank)
11 | {
12 | $this->filename = $file;
13 | $this->pageTitle = $title;
14 | $this->rank = $rank;
15 | }
16 | }
17 |
18 |
19 | ///
20 | /// Split the search text up into keywords
21 | ///
22 | /// The keywords to parse
23 | /// A list containing the words for which to search
24 | function ParseKeywords($keywords)
25 | {
26 | $keywordList = array();
27 | $words = preg_split("/[^\w]+/", $keywords);
28 |
29 | foreach($words as $word)
30 | {
31 | $checkWord = strtolower($word);
32 | $first = substr($checkWord, 0, 1);
33 | if(strlen($checkWord) > 2 && !ctype_digit($first) && !in_array($checkWord, $keywordList))
34 | {
35 | array_push($keywordList, $checkWord);
36 | }
37 | }
38 |
39 | return $keywordList;
40 | }
41 |
42 |
43 | ///
44 | /// Search for the specified keywords and return the results as a block of
45 | /// HTML.
46 | ///
47 | /// The keywords for which to search
48 | /// The file list
49 | /// The dictionary used to find the words
50 | /// True to sort by title, false to sort by
51 | /// ranking
52 | /// A block of HTML representing the search results.
53 | function Search($keywords, $fileInfo, $wordDictionary, $sortByTitle)
54 | {
55 | $sb = "";
56 | $matches = array();
57 | $matchingFileIndices = array();
58 | $rankings = array();
59 |
60 | $isFirst = true;
61 |
62 | foreach($keywords as $word)
63 | {
64 | if (!array_key_exists($word, $wordDictionary))
65 | {
66 | return "Nothing found";
67 | }
68 | $occurrences = $wordDictionary[$word];
69 |
70 | $matches[$word] = $occurrences;
71 | $occurrenceIndices = array();
72 |
73 | // Get a list of the file indices for this match
74 | foreach($occurrences as $entry)
75 | array_push($occurrenceIndices, ($entry >> 16));
76 |
77 | if($isFirst)
78 | {
79 | $isFirst = false;
80 | foreach($occurrenceIndices as $i)
81 | {
82 | array_push($matchingFileIndices, $i);
83 | }
84 | }
85 | else
86 | {
87 | // After the first match, remove files that do not appear for
88 | // all found keywords.
89 | for($idx = 0; $idx < count($matchingFileIndices); $idx++)
90 | {
91 | if (!in_array($matchingFileIndices[$idx], $occurrenceIndices))
92 | {
93 | array_splice($matchingFileIndices, $idx, 1);
94 | $idx--;
95 | }
96 | }
97 | }
98 | }
99 |
100 | if(count($matchingFileIndices) == 0)
101 | {
102 | return "Nothing found";
103 | }
104 |
105 | // Rank the files based on the number of times the words occurs
106 | foreach($matchingFileIndices as $index)
107 | {
108 | // Split out the title, filename, and word count
109 | $fileIndex = explode("\x00", $fileInfo[$index]);
110 |
111 | $title = $fileIndex[0];
112 | $filename = $fileIndex[1];
113 | $wordCount = intval($fileIndex[2]);
114 | $matchCount = 0;
115 |
116 | foreach($keywords as $words)
117 | {
118 | $occurrences = $matches[$word];
119 |
120 | foreach($occurrences as $entry)
121 | {
122 | if(($entry >> 16) == $index)
123 | $matchCount += $entry & 0xFFFF;
124 | }
125 | }
126 |
127 | $r = new Ranking($filename, $title, $matchCount * 1000 / $wordCount);
128 | array_push($rankings, $r);
129 | }
130 |
131 | // Sort by rank in descending order or by page title in ascending order
132 | if($sortByTitle)
133 | {
134 | usort($rankings, "cmprankbytitle");
135 | }
136 | else
137 | {
138 | usort($rankings, "cmprank");
139 | }
140 |
141 | // Format the file list and return the results
142 | foreach($rankings as $r)
143 | {
144 | $f = $r->filename;
145 | $t = $r->pageTitle;
146 | $sb .= "\r\n";
150 | }
151 |
152 | // Return the keywords used as well in a hidden span
153 | $k = implode(" ", $keywords);
154 | $sb .= "$k";
155 |
156 | return $sb;
157 | }
158 |
159 | function cmprank($x, $y)
160 | {
161 | return $y->rank - $x->rank;
162 | }
163 |
164 | function cmprankbytitle($x, $y)
165 | {
166 | return strcmp($x->pageTitle, $y->pageTitle);
167 | }
168 |
169 | ?>
--------------------------------------------------------------------------------
/Documentation/html/SearchHelp.php:
--------------------------------------------------------------------------------
1 |
2 | // Contributed to the Sandcastle Help File Builder project by Thomas Levesque
3 |
4 | include("SearchHelp.inc.php");
5 |
6 | $sortByTitle = false;
7 |
8 | // The keywords for which to search should be passed in the query string
9 | $searchText = $_GET["Keywords"];
10 |
11 | if(empty($searchText))
12 | {
13 | ?>
14 | Nothing found
15 |
16 | return;
17 | }
18 |
19 | // An optional SortByTitle option can also be specified
20 | if($_GET["SortByTitle"] == "true")
21 | $sortByTitle = true;
22 |
23 | $keywords = ParseKeywords($searchText);
24 | $letters = array();
25 | $wordDictionary = array();
26 |
27 | // Load the file index
28 | $json = file_get_contents("fti/FTI_Files.json");
29 | $fileList = json_decode($json);
30 |
31 | // Load the required word index files
32 | foreach($keywords as $word)
33 | {
34 | $letter = substr($word, 0, 1);
35 |
36 | if(!in_array($letter, $letters))
37 | {
38 | array_push($letters, $letter);
39 | $ascii = ord($letter);
40 | $ftiFile = "fti/FTI_$ascii.json";
41 |
42 | if(file_exists($ftiFile))
43 | {
44 | $json = file_get_contents($ftiFile);
45 | $ftiWords = json_decode($json, true);
46 |
47 | foreach($ftiWords as $ftiWord => $val)
48 | {
49 | $wordDictionary[$ftiWord] = $val;
50 | }
51 | }
52 | }
53 | }
54 |
55 | // Perform the search and return the results as a block of HTML
56 | $results = Search($keywords, $fileList, $wordDictionary, $sortByTitle);
57 | echo $results;
58 | ?>
--------------------------------------------------------------------------------
/Documentation/html/Splitter.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/Splitter.gif
--------------------------------------------------------------------------------
/Documentation/html/SyncTOC.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/SyncTOC.gif
--------------------------------------------------------------------------------
/Documentation/html/TOC.css:
--------------------------------------------------------------------------------
1 | /* File : TOC.css
2 | // Author : Eric Woodruff (Eric@EWoodruff.us)
3 | // Updated : 09/07/2007
4 | //
5 | // Stylesheet for the table of content
6 | */
7 |
8 | *
9 | {
10 | margin: 0px 0px 0px 0px;
11 | padding: 0px 0px 0px 0px;
12 | }
13 |
14 | body
15 | {
16 | font-family: verdana, arial, sans-serif;
17 | font-size: 8.5pt;
18 | background-color: #6699CC;
19 | color: White;
20 | overflow: hidden;
21 | }
22 |
23 | input
24 | {
25 | font-size: 8.5pt;
26 | }
27 |
28 | img
29 | {
30 | border: 0;
31 | margin-left: 5px;
32 | margin-right: 2px;
33 | }
34 |
35 | img.TreeNodeImg
36 | {
37 | cursor: pointer;
38 | }
39 |
40 | img.TOCLink
41 | {
42 | cursor: pointer;
43 | margin-left: 0;
44 | margin-right: 0;
45 | }
46 |
47 | a.SelectedNode, a.UnselectedNode
48 | {
49 | color: black;
50 | text-decoration: none;
51 | padding: 1px 3px 1px 3px;
52 | white-space: nowrap;
53 | }
54 |
55 | a.SelectedNode
56 | {
57 | background-color: #ffffff;
58 | border: solid 1px #999999;
59 | padding: 0px 2px 0px 2px;
60 | }
61 |
62 | a.UnselectedNode:hover, a.SelectedNode:hover
63 | {
64 | background-color: #cccccc;
65 | border: solid 1px #999999;
66 | padding: 0px 2px 0px 2px;
67 | }
68 |
69 | .Visible
70 | {
71 | display: block;
72 | margin-left: 2em;
73 | }
74 |
75 | .Hidden
76 | {
77 | display: none;
78 | }
79 |
80 | .Tree
81 | {
82 | background-color: #f0f0f0;
83 | color: Black;
84 | width: 300px;
85 | overflow: auto;
86 | }
87 |
88 | .TreeNode, .TreeItem
89 | {
90 | white-space: nowrap;
91 | margin: 2px 2px 2px 2px;
92 | }
93 |
94 | .TOCDiv
95 | {
96 | position: relative;
97 | float: left;
98 | width: 300px;
99 | height: 100%;
100 | }
101 |
102 | .TOCSizer
103 | {
104 | clear: none;
105 | float: left;
106 | width: 10px;
107 | height: 100%;
108 | background-color: #6699CC;
109 | background-image: url("Splitter.gif");
110 | background-position:center center;
111 | background-repeat:no-repeat;
112 | position: relative;
113 | cursor: w-resize;
114 | }
115 |
116 | .TopicContent
117 | {
118 | position: relative;
119 | float: right;
120 | background-color: white;
121 | height: 100%;
122 | }
123 |
124 | .SearchOpts
125 | {
126 | padding: 5px 5px 0px 5px;
127 | background-color: lightgrey;
128 | color: black;
129 | width: 300px;
130 | }
131 |
132 | .NavOpts
133 | {
134 | padding: 5px 5px 0px 5px;
135 | background-color: lightgrey;
136 | color: black;
137 | width: 300px;
138 | }
139 |
140 | .IndexOpts
141 | {
142 | padding: 5px 5px 0px 5px;
143 | background-color: lightgrey;
144 | color: black;
145 | width: 300px;
146 | }
147 |
148 | .IndexItem
149 | {
150 | white-space: nowrap;
151 | margin: 2px 2px 2px 2px;
152 | }
153 |
154 | .IndexSubItem
155 | {
156 | white-space: nowrap;
157 | margin: 2px 2px 2px 12px;
158 | }
159 |
160 | .PaddedText
161 | {
162 | margin: 10px 10px 10px 10px;
163 | }
164 |
--------------------------------------------------------------------------------
/Documentation/html/Web.Config:
--------------------------------------------------------------------------------
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 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Documentation/html/WebKI.xml:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/Documentation/html/WebTOC.xml:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/Documentation/html/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/favicon.ico
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_100.json:
--------------------------------------------------------------------------------
1 | {"description":[3,131075,196609,458753,524289,655361,720897,786433,1572865,1638401,1966081,2097153,2424833,2490371,2555905,2621441],"determines":[1,131073,458753,720897,1572865,2490369],"dll":[65537,262145,327681,393217,589825,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1703937,1769473,1835009,1900545,2031617,2162689,2228225,2293761,2359297],"derived":[655362,1179649,1703937,1966083,2359297,2621443]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_101.json:
--------------------------------------------------------------------------------
1 | {"exposes":[1,131073,196609,458753,720897,786433,1572865,1966081,2097153,2490369,2621441],"equals":[1,131073,458753,720897,1572865,2490369],"equal":[1,131073,458753,720897,1572865,2490369],"ecdh":[655362,1703937,1966082,2359297,2621442]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_102.json:
--------------------------------------------------------------------------------
1 | {"following":[1,131073,196609,458753,720897,786433,1572865,1966081,2097153,2490369,2621441],"finalize":[1,131073,458753,720897,1572865,2490369],"free":[1,131073,458753,720897,1572865,2490369],"function":[1,131073,458753,720897,983041,1179649,1245185,1310721,1441793,1572865,1703937,1835009,1900545,2228225,2359297,2490369],"file":[1,65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_103.json:
--------------------------------------------------------------------------------
1 | {"garbage":[1,131073,458753,720897,1572865,2490369],"gethashcode":[1,131073,458753,720897,1572865,2490369],"gettype":[1,131073,458753,720897,1572865,2490369],"gets":[1,131073,458753,720897,1572865,2490369],"generated":[1,65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441],"ghostdoc":[1,65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441],"getpublickeyderencoded":[131074,983045,1441797,1572866,2424835],"getsharedsecret":[131074,1572866,1638403,1835013,1900549],"generatekeypair":[655363,1703941,1966082,2359301,2621442],"generatechallengeresponsebytes":[720897,1310724,2490369],"getserverpublicder":[720897,2228228,2490369],"generatehighcostsecret":[1179652,1966081,2621441]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_104.json:
--------------------------------------------------------------------------------
1 | {"hash":[1,131073,458753,720897,1572865,2490369],"help":[1,65537,131073,196609,262145,327681,393217,458753,524289,589825,655361,720897,786433,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441],"hierarchy":[262145,327681,851969,1114113],"highcostsecret":[655362,1179650,1703942,1966084,2293764,2621444]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_105.json:
--------------------------------------------------------------------------------
1 | {"inherited":[6,131078,458758,720902,1572870,2490374],"instance":[1,131073,458753,720897,1572865,2490369],"inheritance":[262145,327681,851969,1114113]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_107.json:
--------------------------------------------------------------------------------
1 | {"key":[65540,131073,655361,786433,1179649,1441796,1507332,1703937,1966082,2621442],"keypair":[655362,1703937,1966082,2359297,2621442]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_108.json:
--------------------------------------------------------------------------------
1 | {"list":[655361,1638401,2424833,2555905],"localkeywithprivate":[1900548]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_109.json:
--------------------------------------------------------------------------------
1 | {"members":[2,131074,196609,262145,327681,458753,655361,720897,786433,851969,1114113,1572865,1638401,1966081,2097153,2424833,2490370,2555905,2621442],"methods":[1,131073,458754,720898,1572866,1966082,2490369,2621441],"memberwiseclone":[1,131073,458753,720897,1572865,2490369],"method":[655361,983041,1179649,1245185,1310721,1441793,1638401,1703937,1835009,1900545,2228225,2359297,2424833]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_110.json:
--------------------------------------------------------------------------------
1 | {"namespace":[1,65538,131073,196609,262146,327682,393218,458753,524289,589826,655361,720897,786433,851970,917506,983042,1048578,1114114,1179650,1245186,1310722,1376258,1441794,1507330,1572865,1638401,1703938,1769474,1835010,1900546,1966081,2031618,2097153,2162690,2228226,2293762,2359298,2424833,2490369,2555905,2621441],"new":[65537,393217,1048577,1376257,2293761],"notinheritable":[851969]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_111.json:
--------------------------------------------------------------------------------
1 | {"object":[12,131084,262145,327681,458764,720908,851969,1114113,1572876,2490380],"operations":[1,131073,458753,720897,1572865,2490369],"org":[1,65538,131073,196609,262147,327683,393220,458753,524289,589826,655361,720897,786433,851971,917506,983042,1048578,1114115,1179650,1245187,1310722,1376258,1441794,1507330,1572865,1638401,1703938,1769474,1835010,1900546,1966081,2031618,2097153,2162690,2228226,2293762,2359298,2424833,2490369,2555905,2621441],"overload":[65537,655361,983041,1048577,1441793,1638401,1703937,1835009,1900545,2293761,2359297,2424833,2555905]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_112.json:
--------------------------------------------------------------------------------
1 | {"perform":[1,131073,458753,720897,1572865,2490369],"particular":[1,131073,458753,720897,1572865,2490369],"properties":[1,131073,196610,786434,2097154,2490369],"publickeyderencoded":[1,196609,2162692],"public":[65539,262147,327683,393219,589827,851971,917507,983043,1048579,1114115,1179651,1245187,1310723,1376259,1441795,1507331,1703939,1769475,1835011,1900547,2031619,2162691,2228227,2293763,2359299],"parameters":[65537,393217,655361,1048577,1179650,1245185,1310721,1376257,1441793,1703937,1835009,1900545,1966082,2293761,2359298,2621442],"property":[589827,917507,1507331,1769475,2031619,2162691],"password":[655361,1048580,1179653,1703937,1966082,2359300,2621442]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_114.json:
--------------------------------------------------------------------------------
1 | {"resources":[1,131073,458753,720897,1572865,2490369],"reclaimed":[1,131073,458753,720897,1572865,2490369],"returns":[1,131073,458753,655362,720897,1179649,1572865,1703937,1966083,2359297,2490369,2621443],"represents":[1,131073,458753,720897,1572865,2490369],"ref":[262145,327681,851969,1114113],"regenerate":[655361,1179649,1703937,1966082,2621442],"response":[1245188],"remotepublickeyderencoded":[1835012,1900548]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_115.json:
--------------------------------------------------------------------------------
1 | {"system":[11,131083,262145,327681,458763,589829,720907,851969,917509,983043,1048585,1114113,1179660,1245185,1310731,1376259,1441795,1572875,1703940,1769477,1835015,1900551,2031620,2162693,2228227,2293764,2359305,2490379],"specified":[1,131073,458753,720897,1572865,2490369],"serves":[1,131073,458753,720897,1572865,2490369],"shallow":[1,131073,458753,720897,1572865,2490369],"string":[1,131076,458753,655363,720897,1048591,1179660,1376260,1572865,1966083,2031621,2359311,2490369,2555907,2621443],"syntax":[65537,262145,327681,393217,589825,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1703937,1769473,1835009,1900545,2031617,2162689,2228225,2293761,2359297],"sub":[65537,393217,1048577,1376257,2293761],"set":[589827,917507,1507331,1769475,2031619,2162691],"save":[655361,1179649,1703937,1966082,2621442],"static":[851969,1179650,1310722,1441794,1703938,1900546,2359298],"sealed":[851969],"serverpublickeyderencoded":[917508,2097153,2490369],"shared":[1179649,1310721,1441793,1703937,1900545,2359297],"sharedsecret":[1310724]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_116.json:
--------------------------------------------------------------------------------
1 | {"type":[3,65537,131075,196609,393218,458755,720899,786433,1048579,1179651,1245185,1310722,1376257,1441793,1572867,1703937,1835009,1900546,1966081,2097153,2293761,2359299,2490371,2621441],"try":[1,131073,458753,720897,1572865,2490369],"tostring":[1,131073,458753,720897,1572865,2490369],"time":[655361,1179649,1703937,1966082,2621442],"tryvalidatechallengeresponse":[720897,1245188,2490369]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_117.json:
--------------------------------------------------------------------------------
1 | {"user":[655361,1179649,1703937,1966082,2621442],"username":[1048580,1179652,2359300]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_118.json:
--------------------------------------------------------------------------------
1 | {"void":[589825,917505,1507329,1769473,2031617,2162689],"value":[589825,917505,1507329,1769473,2031617,2162689]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_97.json:
--------------------------------------------------------------------------------
1 | {"allows":[1,131073,458753,655361,720897,1179649,1572865,1703937,1966082,2490369,2621442],"asymmetriccipherkeypair":[65541,131075,1441797,1507333,1572866,1638401,1703939,1900549,2359299,2424833,2555905],"assembly":[65537,262145,327681,393217,589825,851969,917505,983041,1048577,1114113,1179649,1245185,1310721,1376257,1441793,1507329,1703937,1769473,1835009,1900545,2031617,2162689,2228225,2293761,2359297],"array":[131078,589832,655362,917512,983044,1179652,1310736,1441796,1572868,1638404,1703942,1769480,1835018,1900554,1966082,2162696,2228228,2293766,2555906,2621442],"asking":[655361,1179649,1703937,1966082,2621442],"abstract":[851969]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_98.json:
--------------------------------------------------------------------------------
1 | {"bool":[1245186],"boolean":[1245185]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_99.json:
--------------------------------------------------------------------------------
1 | {"challengeresponse":[4,196611,393220,458755,524289,1114118,1245188,1769474,2162690],"constructors":[1,131073,2490369],"current":[4,131076,458756,720900,1572868,2490372],"cleanup":[1,131073,458753,720897,1572865,2490369],"collection":[1,131073,458753,720897,1572865,2490369],"creates":[1,131073,458753,720897,1572865,2490369],"copy":[1,131073,458753,720897,1572865,2490369],"challengeresponsebytes":[1,196609,1769476],"class":[1,65537,131073,196609,262148,327684,393217,458753,524289,589825,655361,720897,786433,851972,917505,983041,1048577,1114116,1179649,1245185,1310721,1376257,1441793,1507329,1572865,1638401,1703937,1769473,1835009,1900545,1966081,2031617,2097153,2162689,2228225,2293761,2359297,2424833,2490369,2555905,2621441],"cbcrypt":[1,65540,131073,196609,262149,327685,393222,458753,524290,589828,655364,720897,786433,851979,917508,983044,1048580,1114117,1179654,1245189,1310724,1376260,1441796,1507332,1572865,1638401,1703942,1769476,1835012,1900548,1966084,2031620,2097153,2162692,2228228,2293764,2359302,2424833,2490369,2555905,2621444],"cbcryptkey":[65541,131078,327686,393220,524289,786435,983042,1048581,1441794,1507330,1572867,1638403,1835010,1900546,2293765,2424835,2555910],"constructor":[65537,393217,1048577,1376257,2293761,2555905],"challenge":[262150,393220,524289,589826,720899,917506,1245186,1310726,1376260,2031618,2097155,2228226,2490372],"clientkey":[393220],"challengefromserver":[393220],"classes":[524289],"challengebytes":[589828,2097153,2490369],"client":[655361,1179649,1703937,1966082,2621442],"cbcrypthostid":[1048580,1179652,1376260,2031620,2097153,2359300,2490369]}
--------------------------------------------------------------------------------
/Documentation/html/fti/FTI_Files.json:
--------------------------------------------------------------------------------
1 | ["ChallengeResponse Members\u0000104880745.htm\u0000168","CBCryptKey Constructor (AsymmetricCipherKeyPair)\u00001050510383.htm\u000077","CBCryptKey Members\u00001163784371.htm\u0000256","ChallengeResponse Properties\u00001369563518.htm\u000029","Challenge Class\u00001415551336.htm\u000063","CBCryptKey Class\u00001441647171.htm\u000063","ChallengeResponse Constructor\u00001494598437.htm\u0000118","ChallengeResponse Methods\u0000151453034.htm\u0000159","Org.CBCrypt Namespace\u00001514855079.htm\u000017","ChallengeBytes Property\u00001534636348.htm\u0000124","GenerateKeyPair Method\u00001564874448.htm\u0000102","Challenge Methods\u00001581038909.htm\u0000162","CBCryptKey Properties\u00001581295153.htm\u000028","CBCrypt Class\u00001718333260.htm\u000067","ServerPublicKeyDerEncoded Property\u00001734766934.htm\u0000124","GetPublicKeyDerEncoded Method\u00001750187521.htm\u000084","CBCryptKey Constructor (String, String, String)\u00001882239146.htm\u0000130","ChallengeResponse Class\u00001888296670.htm\u000063","GenerateHighCostSecret Method\u00001905304697.htm\u0000184","TryValidateChallengeResponse Method\u00001917065220.htm\u0000104","GenerateChallengeResponseBytes Method\u00001948183430.htm\u0000188","Challenge Constructor\u00001955941255.htm\u000075","GetPublicKeyDerEncoded Method (AsymmetricCipherKeyPair)\u00001961160179.htm\u0000112","Key Property\u00002075119955.htm\u000098","CBCryptKey Methods\u00002143963147.htm\u0000218","GetSharedSecret Method\u0000232981836.htm\u000077","GenerateKeyPair Method ()\u0000326356533.htm\u0000159","ChallengeResponseBytes Property\u0000423211944.htm\u0000124","GetSharedSecret Method ()\u0000448759364.htm\u0000140","GetSharedSecret Method (AsymmetricCipherKeyPair, )\u000046105457.htm\u0000165","CBCrypt Methods\u0000463588477.htm\u0000124","CBCryptHostId Property\u0000481982644.htm\u0000102","Challenge Properties\u0000508581146.htm\u000030","PublicKeyDerEncoded Property\u0000517266944.htm\u0000124","GetServerPublicDer Method\u0000583375642.htm\u000082","CBCryptKey Constructor ()\u0000609681953.htm\u0000108","GenerateKeyPair Method (String, String, String)\u0000718221398.htm\u0000161","GetPublicKeyDerEncoded Method\u0000939002703.htm\u000050","Challenge Members\u0000952553138.htm\u0000172","CBCryptKey Constructor\u0000965374767.htm\u000053","CBCrypt Members\u0000998664710.htm\u0000124"]
--------------------------------------------------------------------------------
/Documentation/html/html/1050510383.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | CBCryptKey Constructor (AsymmetricCipherKeyPair)
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 |
CBCryptKey Constructor (AsymmetricCipherKeyPair)
36 |
37 |
38 |
39 |
Namespace:
40 |
Org.CBCrypt
41 |
Assembly:
42 |
CBCrypt (in CBCrypt.dll)
public CBCryptKey(
43 | AsymmetricCipherKeyPair Key
44 | )
Public Sub New ( _
45 | Key As AsymmetricCipherKeyPair _
46 | )
public:
47 | CBCryptKey(
48 | AsymmetricCipherKeyPair^ Key
49 | )
Parameters
- Key
- Type: AsymmetricCipherKeyPair
50 |
51 |
52 |
53 |
54 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/Documentation/html/html/1369563518.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ChallengeResponse Properties
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 |
ChallengeResponse Properties
35 |
36 |
37 |
The ChallengeResponse type exposes the following members.
38 |
39 |
40 |
Properties
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
75 |
76 |
77 |
78 |
See Also
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
89 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
109 |
110 |
111 |
--------------------------------------------------------------------------------
/Documentation/html/html/1415551336.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Challenge Class
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 |
Challenge Class
42 |
43 |
44 |
45 |
Namespace:
46 |
Org.CBCrypt
47 |
Assembly:
48 |
CBCrypt (in CBCrypt.dll)
public ref class Challenge
49 |
50 |
51 |
52 |
53 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/Documentation/html/html/1514855079.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Org.CBCrypt Namespace
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 |
Org.CBCrypt Namespace
36 |
37 |
38 |
39 |
40 |
Classes
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | |
53 | Class |
54 | Description |
55 |
56 |
57 |
58 |
59 | |
60 |
61 | CBCrypt
62 | |
63 | |
64 |
65 |
66 |
67 |
68 | |
69 |
70 | CBCryptKey
71 | |
72 | |
73 |
74 |
75 |
76 |
77 | |
78 |
79 | Challenge
80 | |
81 | |
82 |
83 |
84 |
85 |
86 | |
87 |
88 | ChallengeResponse
89 | |
90 | |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
110 |
111 |
112 |
--------------------------------------------------------------------------------
/Documentation/html/html/1581295153.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | CBCryptKey Properties
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 |
CBCryptKey Properties
35 |
36 |
37 |
The CBCryptKey type exposes the following members.
38 |
39 |
40 |
Properties
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | |
53 | Name |
54 | Description |
55 |
56 |
57 |
58 |
59 | |
60 |
61 | Key
62 | |
63 | |
64 |
65 |
66 |
67 |
68 |
69 |
See Also
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
80 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/Documentation/html/html/1750187521.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | GetPublicKeyDerEncoded Method
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 |
CBCryptKey..::..GetPublicKeyDerEncoded Method
36 |
37 |
38 |
39 |
Namespace:
40 |
Org.CBCrypt
41 |
Assembly:
42 |
CBCrypt (in CBCrypt.dll)
44 |
45 |
46 |
47 |
48 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/Documentation/html/html/508581146.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Challenge Properties
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 |
Challenge Properties
35 |
36 |
37 |
The Challenge type exposes the following members.
38 |
39 |
40 |
Properties
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
84 |
85 |
86 |
87 |
See Also
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
98 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
118 |
119 |
120 |
--------------------------------------------------------------------------------
/Documentation/html/html/583375642.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | GetServerPublicDer Method
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 |
Challenge..::..GetServerPublicDer Method
40 |
41 |
42 |
43 |
Namespace:
44 |
Org.CBCrypt
45 |
Assembly:
46 |
CBCrypt (in CBCrypt.dll)
48 |
49 |
50 |
51 |
52 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/Documentation/html/icons/CFW.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/CFW.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/Caution.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/Caution.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/LastChild.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/LastChild.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/adm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/adm.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/adm_arch.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/adm_arch.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/adm_dev.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/adm_dev.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/adm_dev_arch.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/adm_dev_arch.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/alert_caution.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/alert_caution.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/alert_note.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/alert_note.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/alert_security.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/alert_security.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/arch.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/arch.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/big_adm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/big_adm.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/big_arch.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/big_arch.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/big_dev.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/big_dev.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/big_kw.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/big_kw.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/box.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/box.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/collall.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/collall.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/collapse.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/collapse.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/collapse_all.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/collapse_all.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/copycode.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/copycode.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/copycodeHighlight.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/copycodeHighlight.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/dev.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/dev.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/dev_arch.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/dev_arch.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/dropdown.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/dropdown.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/dropdownHover.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/dropdownHover.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/drpdown.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/drpdown.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/drpdown_orange.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/drpdown_orange.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/drpdown_orange_up.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/drpdown_orange_up.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/drpup.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/drpup.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/exp.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/exp.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/expall.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/expall.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/expand_all.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/expand_all.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/filter1a.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/filter1a.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/filter1c.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/filter1c.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/footer.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/footer.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/gradient.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/gradient.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/greencheck.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/greencheck.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/greychck.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/greychck.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/header_prev_next.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/header_prev_next.jpg
--------------------------------------------------------------------------------
/Documentation/html/icons/header_sql_tutorial_blank.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/header_sql_tutorial_blank.jpg
--------------------------------------------------------------------------------
/Documentation/html/icons/header_sql_tutorial_logo.GIF:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/header_sql_tutorial_logo.GIF
--------------------------------------------------------------------------------
/Documentation/html/icons/kw.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/kw.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/kw_adm.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/kw_adm.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/kw_adm_arch.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/kw_adm_arch.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/kw_adm_dev.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/kw_adm_dev.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/kw_adm_dev_arch.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/kw_adm_dev_arch.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/kw_arch.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/kw_arch.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/kw_dev.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/kw_dev.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/kw_dev_arch.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/kw_dev_arch.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/load.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/load.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/load_hover.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/load_hover.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/note.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/note.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/pencil.GIF:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/pencil.GIF
--------------------------------------------------------------------------------
/Documentation/html/icons/privclass.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/privclass.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/privdelegate.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/privdelegate.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/privenum.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/privenum.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/privenumeration.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/privenumeration.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/privevent.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/privevent.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/privextension.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/privextension.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/privfield.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/privfield.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/privinterface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/privinterface.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/privmethod.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/privmethod.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/privproperty.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/privproperty.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/privstructure.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/privstructure.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/protclass.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/protclass.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/protdelegate.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/protdelegate.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/protenum.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/protenum.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/protenumeration.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/protenumeration.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/protevent.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/protevent.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/protextension.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/protextension.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/protfield.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/protfield.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/protinterface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/protinterface.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/protmethod.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/protmethod.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/protoperator.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/protoperator.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/protproperty.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/protproperty.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/protstructure.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/protstructure.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/pubclass.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/pubclass.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/pubdelegate.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/pubdelegate.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/pubenum.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/pubenum.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/pubenumeration.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/pubenumeration.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/pubevent.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/pubevent.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/pubextension.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/pubextension.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/pubfield.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/pubfield.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/pubinterface.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/pubinterface.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/pubmethod.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/pubmethod.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/puboperator.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/puboperator.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/pubproperty.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/pubproperty.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/pubstructure.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/pubstructure.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/requirements1a.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/requirements1a.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/requirements1c.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/requirements1c.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/save.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/save.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/save_hover.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/save_hover.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/security.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/security.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/seealso1a.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/seealso1a.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/seealso1c.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/seealso1c.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/slMobile.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/slMobile.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/static.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/static.gif
--------------------------------------------------------------------------------
/Documentation/html/icons/xna.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/icons/xna.gif
--------------------------------------------------------------------------------
/Documentation/html/images/030c41d9079671d09a62d8e2c1db6973.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/images/030c41d9079671d09a62d8e2c1db6973.gif
--------------------------------------------------------------------------------
/Documentation/html/images/LT_tab.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/images/LT_tab.gif
--------------------------------------------------------------------------------
/Documentation/html/images/RT_tab.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/images/RT_tab.gif
--------------------------------------------------------------------------------
/Documentation/html/images/alert_note.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/images/alert_note.gif
--------------------------------------------------------------------------------
/Documentation/html/images/lightweight_topnav.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/images/lightweight_topnav.png
--------------------------------------------------------------------------------
/Documentation/html/images/lightweight_topnav_slice.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/images/lightweight_topnav_slice.gif
--------------------------------------------------------------------------------
/Documentation/html/images/lt_search.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/images/lt_search.gif
--------------------------------------------------------------------------------
/Documentation/html/images/msdn2010branding-stripe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/images/msdn2010branding-stripe.png
--------------------------------------------------------------------------------
/Documentation/html/images/msdn2010branding-stripe1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/images/msdn2010branding-stripe1.png
--------------------------------------------------------------------------------
/Documentation/html/images/msg-icon.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/images/msg-icon.gif
--------------------------------------------------------------------------------
/Documentation/html/images/msg-incoming.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/images/msg-incoming.gif
--------------------------------------------------------------------------------
/Documentation/html/images/msg-outgoing.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/images/msg-outgoing.gif
--------------------------------------------------------------------------------
/Documentation/html/images/rt_search.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/images/rt_search.gif
--------------------------------------------------------------------------------
/Documentation/html/images/searchicon.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/images/searchicon.gif
--------------------------------------------------------------------------------
/Documentation/html/images/slice_search.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/images/slice_search.gif
--------------------------------------------------------------------------------
/Documentation/html/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CBCrypt - Table of Content
6 |
7 |
8 |
9 |
10 |
11 |
12 |
109 |
110 |
111 |
112 |
--------------------------------------------------------------------------------
/Documentation/html/scripts/CheckboxMenu.js:
--------------------------------------------------------------------------------
1 |
2 | function CheckboxMenu(id, data, persistkeys, globals)
3 | {
4 | this.id = id;
5 | this.menuCheckboxIds = new Array();
6 | this.data = data;
7 | this.count = 0;
8 |
9 | var element = document.getElementById(id);
10 | var checkboxNodes = element.getElementsByTagName("input");
11 |
12 | for(var checkboxCount=0; checkboxCount < checkboxNodes.length; checkboxCount++)
13 | {
14 | var checkboxId = checkboxNodes[checkboxCount].getAttribute('id');
15 | var checkboxData = checkboxNodes[checkboxCount].getAttribute('data');
16 | var dataSplits = checkboxData.split(',');
17 | var defaultValue = checkboxNodes[checkboxCount].getAttribute('value');
18 | if (checkboxData != null && checkboxData.indexOf("persist") != -1)
19 | persistkeys.push(checkboxId);
20 |
21 | this.menuCheckboxIds[dataSplits[0]] = checkboxId;
22 |
23 | // try to get the value for this checkbox id from globals
24 | var persistedValue = (globals == null) ? null : globals.VariableExists(checkboxId) ? globals.VariableValue(checkboxId) : null;
25 | var currentValue = (persistedValue != null) ? persistedValue : (defaultValue == null) ? "on" : defaultValue;
26 |
27 | // set the checkbox's check state
28 | this.SetCheckState(checkboxId, currentValue);
29 |
30 | this.count++;
31 | }
32 | }
33 |
34 | CheckboxMenu.prototype.SetCheckState=function(id, value)
35 | {
36 | var checkbox = document.getElementById(id);
37 | if(checkbox != null)
38 | {
39 | checkbox.checked = (value == "on") ? true : false;
40 | }
41 |
42 | // set the value for the checkbox id in the data array
43 | this.data[id] = value;
44 | }
45 |
46 | CheckboxMenu.prototype.GetCheckState=function(id)
47 | {
48 | var checkbox = document.getElementById(id);
49 | if(checkbox != null)
50 | return checkbox.checked;
51 | return false;
52 | }
53 |
54 | CheckboxMenu.prototype.ToggleCheckState=function(id)
55 | {
56 | // at least one checkbox must always be checked
57 | var checkedCount = this.GetCheckedCount();
58 |
59 | if(this.data[id] == "on" && checkedCount > 1)
60 | this.SetCheckState(id, "off");
61 | else
62 | this.SetCheckState(id, "on");
63 | }
64 |
65 | // returns the checkbox id associated with a key
66 | CheckboxMenu.prototype.GetCheckboxId=function(key)
67 | {
68 | return this.menuCheckboxIds[key];
69 | }
70 |
71 | // returns the array of checkbox ids
72 | CheckboxMenu.prototype.GetCheckboxIds=function()
73 | {
74 | return this.menuCheckboxIds;
75 | }
76 |
77 | // returns the @data attribute of the checkbox element
78 | CheckboxMenu.prototype.GetCheckboxData=function(checkboxId)
79 | {
80 | var checkbox = document.getElementById(checkboxId);
81 | if (checkbox == null) return "";
82 | return checkbox.getAttribute('data');
83 | }
84 |
85 | CheckboxMenu.prototype.GetDropdownLabelId=function()
86 | {
87 | var checkboxCount = this.count;
88 | var checkedCount = this.GetCheckedCount();
89 | var idPrefix = this.id;
90 |
91 | // if all boxes checked, use showall label
92 | if (checkedCount == checkboxCount)
93 | return idPrefix.concat("AllLabel");
94 |
95 | // if only one is checked, use label appropriate for that one checkbox
96 | if (checkedCount == 1)
97 | {
98 | for(var key in this.menuCheckboxIds)
99 | {
100 | if (this.data[this.menuCheckboxIds[key]] == "on")
101 | {
102 | return idPrefix.concat(key,'Label');
103 | }
104 | }
105 | }
106 |
107 | // if multiple or zero checked, use multiple label
108 | return idPrefix.concat("MultipleLabel");
109 | }
110 |
111 | CheckboxMenu.prototype.GetCheckedCount=function()
112 | {
113 | var count = 0;
114 | for(var key in this.menuCheckboxIds)
115 | {
116 | if (this.data[this.menuCheckboxIds[key]] == "on")
117 | count++;
118 | }
119 | return (count);
120 | }
121 |
122 | // returns an array containing the ids of the checkboxes that are checked
123 | CheckboxMenu.prototype.GetCheckedIds=function()
124 | {
125 | var idArray = new Array();
126 | for(var key in this.menuCheckboxIds)
127 | {
128 | if (this.data[this.menuCheckboxIds[key]] == "on")
129 | idArray.push(this.menuCheckboxIds[key]);
130 | }
131 | return idArray;
132 | }
133 |
134 | CheckboxMenu.prototype.GetGroupCheckedCount=function(checkboxGroup)
135 | {
136 | var count = 0;
137 | for(var i = 0; i < checkboxGroup.length; i++)
138 | {
139 | if (this.data[checkboxGroup[i]] == "on")
140 | count++;
141 | }
142 | return (count);
143 | }
144 |
145 | CheckboxMenu.prototype.ToggleGroupCheckState=function(id, checkboxGroup)
146 | {
147 | // at least one checkbox must always be checked
148 | var checkedCount = this.GetGroupCheckedCount(checkboxGroup);
149 |
150 | // if the group has multiple checkboxes, one must always be checked; so toggle to "off" only if more than one currently checked
151 | // if the group has only one checkbox, it's okay to toggle it on/off
152 | if(this.data[id] == "on" && (checkedCount > 1 || checkboxGroup.length == 1))
153 | this.SetCheckState(id, "off");
154 | else
155 | this.SetCheckState(id, "on");
156 | }
157 |
158 |
--------------------------------------------------------------------------------
/Documentation/html/scripts/Dropdown.js:
--------------------------------------------------------------------------------
1 |
2 | // Dropdown menu control
3 |
4 | function Dropdown(activatorId, dropdownId, containerId) {
5 |
6 | // store activator and dropdown elements
7 | this.activator = document.getElementById(activatorId);
8 | this.dropdown = document.getElementById(dropdownId);
9 | this.container = document.getElementById(containerId);
10 | this.activatorImage = document.getElementById(activatorId + "Image");
11 |
12 | // wire up show/hide events
13 | registerEventHandler(this.activator,'mouseover', getInstanceDelegate(this, "show"));
14 | registerEventHandler(this.activator,'mouseout', getInstanceDelegate(this, "requestHide"));
15 | registerEventHandler(this.dropdown,'mouseover', getInstanceDelegate(this, "show"));
16 | registerEventHandler(this.dropdown,'mouseout', getInstanceDelegate(this, "requestHide"));
17 |
18 | // fix visibility and position
19 | this.dropdown.style.visibility = 'hidden';
20 | this.dropdown.style.position = 'absolute';
21 | this.reposition(null);
22 |
23 | // wire up repositioning event
24 | registerEventHandler(window, 'resize', getInstanceDelegate(this, "reposition"));
25 |
26 |
27 | }
28 |
29 | Dropdown.prototype.show = function(e) {
30 | clearTimeout(this.timer);
31 | this.dropdown.style.visibility = 'visible';
32 | if (this.activatorImage != null)
33 | this.activatorImage.src = dropDownHoverImage.src;
34 | if (this.activator != null)
35 | this.activator.className = "filterOnHover";
36 | }
37 |
38 | Dropdown.prototype.hide = function(e) {
39 | this.dropdown.style.visibility = 'hidden';
40 | if (this.activatorImage != null)
41 | this.activatorImage.src = dropDownImage.src;
42 | if (this.activator != null)
43 | this.activator.className = "filter";
44 | }
45 |
46 | Dropdown.prototype.requestHide = function(e) {
47 | this.timer = setTimeout( getInstanceDelegate(this, "hide"), 250);
48 | }
49 |
50 | Dropdown.prototype.reposition = function(e) {
51 |
52 | // get position of activator
53 | var offsetLeft = 0;
54 | var offsetTop = 0;
55 | var offsetElement = this.activator;
56 |
57 | while (offsetElement && offsetElement != this.container) {
58 | offsetLeft += offsetElement.offsetLeft;
59 | offsetTop += offsetElement.offsetTop;
60 | offsetElement = offsetElement.offsetParent;
61 | }
62 |
63 | // set position of dropdown relative to it
64 | this.dropdown.style.left = offsetLeft;
65 | this.dropdown.style.top = offsetTop + this.activator.offsetHeight;
66 | }
67 |
68 | Dropdown.prototype.SetActivatorLabel = function(labelId)
69 | {
70 | // get the children of the activator node, which includes the label nodes
71 | var labelNodes = this.activator.childNodes;
72 |
73 |
74 | for(var labelCount=0; labelCount < labelNodes.length; labelCount++)
75 | {
76 | if(labelNodes[labelCount].tagName == 'LABEL')
77 | {
78 | var labelNodeId = labelNodes[labelCount].getAttribute('id');
79 | if (labelNodeId == labelId)
80 | {
81 | labelNodes[labelCount].style.display = "inline";
82 | }
83 | else
84 | {
85 | labelNodes[labelCount].style.display = "none";
86 | }
87 | }
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/Documentation/html/scripts/EventUtilities.js:
--------------------------------------------------------------------------------
1 |
2 | // attach a handler to a particular event on an element
3 | // in a browser-independent way
4 | function registerEventHandler (element, event, handler) {
5 | if (element.attachEvent) {
6 | // MS registration model
7 | element.attachEvent('on' + event, handler);
8 | } else if (element.addEventListener) {
9 | // NN (W4C) regisration model
10 | element.addEventListener(event, handler, false);
11 | } else {
12 | // old regisration model as fall-back
13 | element[event] = handler;
14 | }
15 | }
16 |
17 | // get a delegate that refers to an instance method
18 | function getInstanceDelegate (obj, methodName) {
19 | return( function(e) {
20 | e = e || window.event;
21 | return obj[methodName](e);
22 | } );
23 | }
24 |
--------------------------------------------------------------------------------
/Documentation/html/scripts/SplitScreen.js:
--------------------------------------------------------------------------------
1 |
2 | function SplitScreen (nonScrollingRegionId, scrollingRegionId) {
3 |
4 | // store references to the two regions
5 | this.nonScrollingRegion = document.getElementById(nonScrollingRegionId);
6 | this.scrollingRegion = document.getElementById(scrollingRegionId);
7 |
8 | // set the scrolling settings
9 | this.scrollingRegion.parentElement.style.margin = "0px";
10 | this.scrollingRegion.parentElement.style.overflow = "hidden";
11 | this.scrollingRegion.style.overflow = "auto";
12 |
13 | // fix the size of the scrolling region
14 | this.resize(null);
15 |
16 | // add an event handler to resize the scrolling region when the window is resized
17 | registerEventHandler(window, 'resize', getInstanceDelegate(this, "resize"));
18 |
19 | // Added by ComponentOne
20 | this.resize(null);
21 | }
22 |
23 | SplitScreen.prototype.resize = function(e) {
24 | var height = document.body.clientHeight - this.nonScrollingRegion.offsetHeight;
25 | if (height > 0) {
26 | this.scrollingRegion.style.height = height;
27 | } else {
28 | this.scrollingRegion.style.height = 0;
29 | }
30 | this.scrollingRegion.style.width = this.scrollingRegion.parentElement.clientWidth;
31 | }
32 |
--------------------------------------------------------------------------------
/Documentation/html/scripts/languageSelector.js:
--------------------------------------------------------------------------------
1 |
2 |
3 | function setActiveTab(baseClass,activeClassName,activeTab) {
4 |
5 | // set defalt for all tabs
6 | var classElements = getElementsByClass("CodeSnippetContainerTab", null, 'div');
7 | if(classElements != null) {
8 | for(i=0; i a.indexOf(".chm::"))
37 | {
38 | if (a.indexOf("\\")==-1)
39 | {
40 | break;
41 | }
42 | a = a.substring(a.indexOf("\\")+1,a.length);
43 | }
44 | return("ms-its:"+a)
45 | }
46 | else if (URL.indexOf("file:///")!=-1)
47 | {
48 | a = URL;
49 |
50 | b = a.substring(a.lastIndexOf("html")+5,a.length);
51 | return("file:///"+b);
52 | }
53 | else return(URL);
54 | }
55 |
56 | function GetLanguage()
57 | {
58 | var langauge;
59 | if(navigator.userAgent.indexOf("Firefox")!=-1)
60 | {
61 | var index = navigator.userAgent.indexOf('(');
62 | var string = navigator.userAgent.substring(navigator.userAgent.indexOf('('), navigator.userAgent.length);
63 | var splitString = string.split(';');
64 | language = splitString[3].substring(1, splitString[3].length);
65 | }
66 | else language = navigator.systemLanguage;
67 | return(language);
68 | }
69 |
70 |
71 | //---Gets topic rating.---
72 | function GetRating()
73 | {
74 |
75 | sRating = "0";
76 | for(var x = 0;x < 5;x++)
77 | {
78 | if(document.formRating) {
79 | if(document.formRating.fbRating[x].checked) {sRating = x + 1;}}
80 | else return sRating;
81 | }
82 | return sRating;
83 | }
84 |
85 | function SubmitFeedback(alias, product, deliverable, productVersion, documentationVersion, defaultBody, defaultSubject)
86 | {
87 | var subject = defaultSubject
88 | + " ("
89 | + "/1:"
90 | + product
91 | + "/2:"
92 | + productVersion
93 | + "/3:"
94 | + documentationVersion
95 | + "/4:"
96 | + DeliverableValue(deliverable)
97 | + "/5:"
98 | + URLValue()
99 | + "/6:"
100 | + GetRating()
101 | + "/7:"
102 | + DeliveryType()
103 | + "/8:"
104 | + GetLanguage()
105 | + "/9:"
106 | + version
107 | + ")";
108 |
109 | location.href = "mailto:" + alias + "?subject=" + subject
110 | + "&body=" + defaultBody;
111 | }
112 |
113 | function AltFeedback(src, title) {
114 | src.title=title;
115 | return;
116 | }
117 |
--------------------------------------------------------------------------------
/Documentation/html/styles/highlight.css:
--------------------------------------------------------------------------------
1 | .highlight-inline { color: #000066; font-size: 9pt; font-family: Consolas, "Courier New", Courier, monospace; }
2 | .highlight-pre { clear: both; width: 99.5%; background-color: #EFEFF7; padding: 0.4em; font-size: 9pt; font-family: Consolas, "Courier New", Courier, monospace; margin-top: 0px; margin-bottom: 1em; }
3 | .highlight-comment { color: #006633; }
4 | .highlight-literal { color: #CC0000; }
5 | .highlight-number { color: #009966; }
6 | .highlight-keyword { color: #0000FF; }
7 | .highlight-preprocessor { color: #996666; }
8 | .highlight-xml-tag { color: #AA4400 }
9 | .highlight-xml-bracket { color: #0000FF }
10 | .highlight-xml-comment { color: #008800 }
11 | .highlight-xml-cdata { color: #AA0088 }
12 | .highlight-xml-attribute-name { color: #0000FF }
13 | .highlight-xml-attribute-equal { color: #000000 }
14 | .highlight-xml-attribute-value {color: #CC0000 }
15 | .highlight-title { font-weight: bold; margin-top: 1em; margin-bottom: 2px; border-bottom: gray 1px solid; padding-bottom: 3px; }
16 | .highlight-copycode { float: right; padding-right: 10px; font-weight: normal; cursor: pointer; }
17 | .highlight-copycode_h { float: right; padding-right: 10px; font-weight: normal; cursor: pointer; text-decoration: underline}
18 | .highlight-lineno { font-size: 80%; color: black }
19 | .highlight-lnborder { border-right-style: solid; border-right-width: 1px; border-color: gray; padding-right: 4px; margin-right: 4px; width: 4px;}
20 | .highlight-spacer { padding-right: 20px; }
21 | .highlight-spacerShort { padding-right: 5px; }
22 | .highlight-collapsebox { cursor: pointer; color: black; text-align: center; border-style: solid; border-width: 1px; border-color: gray; margin-left: 2px; margin-right: 5px; }
23 | .highlight-collapsed { border-style: solid; border-width: 1px; border-color: gray; margin: 2px; color: gray; }
24 | .highlight-expanded { border-left-style: solid; border-left-width: 1px; border-color: gray; margin-left: 2px; margin-right: 10px; }
25 | .highlight-endblock { border-left-style: solid; border-left-width: 1px; border-bottom-style: solid; border-bottom-width: 1px; border-color: gray; margin-left: 2px; margin-right: 10px; }
26 | .highlight-pshell-cmdlet { color: #5A9EA5; font-weight: bold; }
27 | .highlight-namespace { color: #008284; }
28 |
--------------------------------------------------------------------------------
/Documentation/html/styles/highlight.js:
--------------------------------------------------------------------------------
1 | //=============================================================================
2 | // System : Color Syntax Highlighter
3 | // File : Highlight.js
4 | // Author : Eric Woodruff (Eric@EWoodruff.us)
5 | // Updated : 11/13/2007
6 | // Note : Copyright 2006, Eric Woodruff, All rights reserved
7 | //
8 | // This contains the script to expand and collapse the regions in the
9 | // syntax highlighted code.
10 | //
11 | //=============================================================================
12 |
13 | // Expand/collapse a region
14 | function HighlightExpandCollapse(showId, hideId)
15 | {
16 | var showSpan = document.getElementById(showId),
17 | hideSpan = document.getElementById(hideId);
18 |
19 | showSpan.style.display = "inline";
20 | hideSpan.style.display = "none";
21 | }
22 |
23 | // Copy the code if Enter or Space is hit with the image focused
24 | function CopyColorizedCodeCheckKey(titleDiv, eventObj)
25 | {
26 | if(eventObj != undefined && (eventObj.keyCode == 13 ||
27 | eventObj.keyCode == 32))
28 | CopyColorizedCode(titleDiv);
29 | }
30 |
31 | // Change the icon as the mouse moves in and out of the Copy Code link
32 | // There should be an image with the same name but an "_h" suffix just
33 | // before the extension.
34 | function CopyCodeChangeIcon(linkSpan)
35 | {
36 | var image = linkSpan.firstChild.src;
37 | var pos = image.lastIndexOf(".");
38 |
39 | if(linkSpan.className == "highlight-copycode")
40 | {
41 | linkSpan.className = "highlight-copycode_h";
42 | linkSpan.firstChild.src = image.substr(0, pos) + "_h" +
43 | image.substr(pos);
44 | }
45 | else
46 | {
47 | linkSpan.className = "highlight-copycode";
48 | linkSpan.firstChild.src = image.substr(0, pos - 2) + image.substr(pos);
49 | }
50 | }
51 |
52 | // Copy the code from a colorized code block to the clipboard.
53 | function CopyColorizedCode(titleDiv)
54 | {
55 | var preTag, idx, line, block, htmlLines, lines, codeText, hasLineNos,
56 | hasRegions, clip, trans, copyObject, clipID;
57 | var reLineNo = /^\s*\d{1,4}/;
58 | var reRegion = /^\s*\d{1,4}\+.*?\d{1,4}-/;
59 | var reRegionText = /^\+.*?\-/;
60 |
61 | // Find the tag containing the code. It should be in the next
62 | // element or one of its children.
63 | block = titleDiv.nextSibling;
64 |
65 | while(block.nodeName == "#text")
66 | block = block.nextSibling;
67 |
68 | while(block.tagName != "PRE")
69 | {
70 | block = block.firstChild;
71 |
72 | while(block.nodeName == "#text")
73 | block = block.nextSibling;
74 | }
75 |
76 | if(block.innerText != undefined)
77 | codeText = block.innerText;
78 | else
79 | codeText = block.textContent;
80 |
81 | hasLineNos = block.innerHTML.indexOf("highlight-lineno");
82 | hasRegions = block.innerHTML.indexOf("highlight-collapsebox");
83 | htmlLines = block.innerHTML.split("\n");
84 | lines = codeText.split("\n");
85 |
86 | // Remove the line numbering and collapsible regions if present
87 | if(hasLineNos != -1 || hasRegions != -1)
88 | {
89 | codeText = "";
90 |
91 | for(idx = 0; idx < lines.length; idx++)
92 | {
93 | line = lines[idx];
94 |
95 | if(hasRegions && reRegion.test(line))
96 | line = line.replace(reRegion, "");
97 | else
98 | {
99 | line = line.replace(reLineNo, "");
100 |
101 | // Lines in expanded blocks have an extra space
102 | if(htmlLines[idx].indexOf("highlight-expanded") != -1 ||
103 | htmlLines[idx].indexOf("highlight-endblock") != -1)
104 | line = line.substr(1);
105 | }
106 |
107 | if(hasRegions && reRegionText.test(line))
108 | line = line.replace(reRegionText, "");
109 |
110 | codeText += line;
111 |
112 | // Not all browsers keep the line feed when split
113 | if(line[line.length - 1] != "\n")
114 | codeText += "\n";
115 | }
116 | }
117 |
118 | // IE or FireFox/Netscape?
119 | if(window.clipboardData)
120 | window.clipboardData.setData("Text", codeText);
121 | else
122 | if(window.netscape)
123 | {
124 | // Give unrestricted access to browser APIs using XPConnect
125 | try
126 | {
127 | netscape.security.PrivilegeManager.enablePrivilege(
128 | "UniversalXPConnect");
129 | }
130 | catch(e)
131 | {
132 | alert("Universal Connect was refused, cannot copy to " +
133 | "clipboard. Go to about:config and set " +
134 | "signed.applets.codebase_principal_support to true to " +
135 | "enable clipboard support.");
136 | return;
137 | }
138 |
139 | // Creates an instance of nsIClipboard
140 | clip = Components.classes[
141 | "@mozilla.org/widget/clipboard;1"].createInstance(
142 | Components.interfaces.nsIClipboard);
143 |
144 | // Creates an instance of nsITransferable
145 | if(clip)
146 | trans = Components.classes[
147 | "@mozilla.org/widget/transferable;1"].createInstance(
148 | Components.interfaces.nsITransferable);
149 |
150 | if(!trans)
151 | {
152 | alert("Copy to Clipboard is not supported by this browser");
153 | return;
154 | }
155 |
156 | // Register the data flavor
157 | trans.addDataFlavor("text/unicode");
158 |
159 | // Create object to hold the data
160 | copyObject = new Object();
161 |
162 | // Creates an instance of nsISupportsString
163 | copyObject = Components.classes[
164 | "@mozilla.org/supports-string;1"].createInstance(
165 | Components.interfaces.nsISupportsString);
166 |
167 | // Assign the data to be copied
168 | copyObject.data = codeText;
169 |
170 | // Add data objects to transferable
171 | trans.setTransferData("text/unicode", copyObject,
172 | codeText.length * 2);
173 |
174 | clipID = Components.interfaces.nsIClipboard;
175 |
176 | if(!clipID)
177 | {
178 | alert("Copy to Clipboard is not supported by this browser");
179 | return;
180 | }
181 |
182 | // Transfer the data to the clipboard
183 | clip.setData(trans, null, clipID.kGlobalClipboard);
184 | }
185 | else
186 | alert("Copy to Clipboard is not supported by this browser");
187 | }
188 |
--------------------------------------------------------------------------------
/Documentation/html/styles/lw-code.css:
--------------------------------------------------------------------------------
1 | /*
2 | * VS 2010 Presentation Template for Sandcastle
3 | * (styles for the Syntax code section)
4 | *
5 | * Based on the MSDN Library Lightweight style.
6 | */
7 |
8 | /**
9 | * Hide othe code than .cs
10 | */
11 |
12 | .cpp, .vb, .nu, .fs {
13 | display: none
14 | }
15 |
16 | pre.libCScode {
17 | font-family: Consolas, "Courier New", monospace;
18 | white-space:-moz-pre-wrap;
19 | word-wrap:break-word;
20 | overflow:hidden;
21 | margin: 0;
22 | }
23 |
24 | .libCScode .keyword {
25 | color: Navy;
26 | }
27 |
28 |
29 | div.CodeSnippetContainerCode {
30 | display: none;
31 | }
32 |
33 | div.CodeSnippetContainerCode.CSharpCode,
34 | div.CodeSnippetContainerCode.JSharpCode {
35 | display: block;
36 | }
37 |
38 |
39 | div.CodeSnippetContainerTab.CSharpTab {
40 | background:white;
41 | border-bottom-color:White;
42 | }
43 |
44 | /**
45 | * Code snippet window
46 | */
47 |
48 | .CodeSnippetContainer {
49 | clear:both;
50 | width:100%;
51 | margin-top:20px
52 | }
53 |
54 | div.CodeSnippetContainerTabs {
55 | vertical-align:middle;
56 | font-family:'Segoe UI', Verdana, Arial;
57 | font-size:10pt!important;
58 | height:22px;
59 | position:relative;
60 | z-index:1
61 | }
62 | .CodeSnippetContainerTabLeft, .CodeSnippetContainerTabRight, .CodeSnippetContainerTabLeftActive, .CodeSnippetContainerTabRightActive, .CodeSnippetContainerTabRightActiveDisabled, .CodeSnippetContainerTabLeftUnrecognized, .CodeSnippetContainerTabRightUnrecognized, .CodeSnippetContainerTabLeftDisabled, .CodeSnippetContainerTabRightDisabled {
63 | width:6px;
64 | height:20px;
65 | float:left;
66 | border-bottom:solid 2px #d0d2d2
67 | }
68 | .CodeSnippetContainerTabLeft {
69 | background-image:url(../Images/LT_tab.gif)
70 | }
71 | .CodeSnippetContainerTabRight {
72 | background-image:url(../Images/RT_tab.gif)
73 | }
74 | .CodeSnippetContainerTabLeftActive {
75 | height:22px;
76 | border-bottom:none;
77 | background-image:url(../Images/LT_tab_Active.gif)
78 | }
79 | .CodeSnippetContainerTabRightActive, .CodeSnippetContainerTabRightActiveDisabled {
80 | height:22px;
81 | border-bottom:none;
82 | background-image:url(../Images/RT_tab_Active.gif)
83 | }
84 | .CodeSnippetContainerTabLeftUnrecognized {
85 | height:22px;
86 | border-bottom:none;
87 | background-image:url(../Images/LT_tab_Unrecognized.gif)
88 | }
89 | .CodeSnippetContainerTabRightUnrecognized {
90 | height:22px;
91 | border-bottom:none;
92 | background-image:url(../Images/RT_tab_Unrecognized.gif)
93 | }
94 | .CodeSnippetContainerTabLeftDisabled {
95 | background-image:url(../Images/LT_tab_Disabled.gif)
96 | }
97 | .CodeSnippetContainerTabRightDisabled {
98 | background-image:url(../Images/RT_tab_Disabled.gif)
99 | }
100 | .CodeSnippetContainerTabFirst, .CodeSnippetContainerTab, .CodeSnippetContainerTabUnrecognized, .CodeSnippetContainerTabUnrecognizedNotFirst, .CodeSnippetContainerTabActive, .CodeSnippetContainerTabActiveNotFirst, .CodeSnippetContainerTabDisabled, .CodeSnippetContainerTabDisabledNotFirst, .CodeSnippetContainerTabDisabledActive, .CodeSnippetContainerTabDisabledActiveNotFirst {
101 | height:19px;
102 | float:left;
103 | width:auto;
104 | border-top:solid 1px #bbb;
105 | border-bottom:solid 2px #d0d2d2;
106 | padding:0 12px 0 12px;
107 | background:#dfedfe
108 | }
109 | .CodeSnippetContainerTabDisabledActive A {
110 | FONT-WEIGHT:bold;
111 | COLOR:#e66a38;
112 | TEXT-DECORATION:none
113 | }
114 | .CodeSnippetContainerTabFirst {
115 | padding:0 12px 0 6px
116 | }
117 | .CodeSnippetContainerTabDisabled, .CodeSnippetContainerTabDisabledNotFirst {
118 | background:#dfedfe
119 | }
120 | .CodeSnippetContainerTabActive, .CodeSnippetContainerTabActiveNotFirst, .CodeSnippetContainerTabDisabledActive, .CodeSnippetContainerTabDisabledActiveNotFirst {
121 | background:#fff;
122 | border-bottom:solid 2px #fff
123 | }
124 | .CodeSnippetContainerTabUnrecognized {
125 | background:#dfedfe;
126 | border-bottom:solid 2px #fff
127 | }
128 | .CodeSnippetContainerTab, .CodeSnippetContainerTabUnrecognizedNotFirst, .CodeSnippetContainerTabActiveNotFirst, .CodeSnippetContainerTabDisabledNotFirst, .CodeSnippetContainerTabDisabledActiveNotFirst {
129 | border-left:solid 1px #929292
130 | }
131 | div.CodeSnippetContainerTabUnrecognized a, div.CodeSnippetContainerTabActive a, div.CodeSnippetContainerTabActiveNotFirst a, div.CodeSnippetContainerTabDisabledActiveNotFirst a {
132 | color:#e66a38;
133 | font-weight:bold;
134 | text-decoration:none
135 | }
136 | div.CodeSnippetContainerTab a, div.CodeSnippetContainerTab a:link, div.CodeSnippetContainerTab a:visited, div.CodeSnippetContainerTab a:active {
137 | color:#2178e0;
138 | font-weight:bold;
139 | text-decoration:none
140 | }
141 | div.CodeSnippetContainerTab a:hover {
142 | color:#e66a38
143 | }
144 | div.CodeSnippetContainerTabFirst a:link, div.CodeSnippetContainerTabFirst a:visited, div.CodeSnippetContainerTabFirst a:active {
145 | color:#2178e0;
146 | font-weight:bold;
147 | text-decoration:none
148 | }
149 | div.CodeSnippetContainerTabFirst a:hover {
150 | font-weight:bold;
151 | color:#e66a38
152 | }
153 | div.CodeSnippetContainerTabDisabled a, div.CodeSnippetContainerTabDisabledNotFirst a {
154 | color:#2178e0;
155 | text-decoration:none
156 | }
157 | div.CodeSnippetContainerTabDisabled a, div.CodeSnippetContainerTabDisabledNotFirst a {
158 | color:#2178e0;
159 | text-decoration:none
160 | }
161 | div.CodeSnippetContainerTabDisabledNotFirst a:hover {
162 | color:#e66a38
163 | }
164 | .CodeSnippetToolBar {
165 | width:auto;
166 | height:auto;
167 | border-top:solid 3px #e5e5e5;
168 | border-left:solid 1px #bbb;
169 | border-right:solid 3px #e5e5e5
170 | }
171 | .CodeSnippetToolBarText {
172 | float:right;
173 | top:-10px;
174 | position:relative;
175 | background-color:#fff;
176 | width:auto;
177 | margin-right:8px;
178 | padding-left:8px;
179 | padding-right:8px;
180 | height:0;
181 | z-index:20
182 | }
183 | div.CodeSnippetToolBarText a:link, div.CodeSnippetToolBarText a:visited, div.CodeSnippetToolBarText a:active {
184 | margin-left:5px;
185 | margin-right:5px;
186 | text-decoration:none;
187 | color:#2178e0;
188 | font-family:'Segoe UI', Verdana, Arial;
189 | font-size:10pt;
190 | background-color:White
191 | }
192 | div.CodeSnippetToolBarText a:hover {
193 | margin-left:5px;
194 | margin-right:5px;
195 | text-decoration:none;
196 | color:#e66a38;
197 | font-family:'Segoe UI', Verdana, Arial;
198 | font-size:10pt
199 | }
200 | .CodeSnippetContainerCodeCollection {
201 | border-left:solid 1px #bbb;
202 | border-bottom:solid 3px #e5e5e5;
203 | border-right:solid 3px #e5e5e5;
204 | clear:both;
205 | margin-bottom:12px;
206 | position:relative;
207 | top:-3px
208 | }
209 | .CodeSnippetContainerCode {
210 | font-size:1.1em;
211 | padding:0.8em;
212 | width:auto;
213 | margin:0
214 | }
215 |
--------------------------------------------------------------------------------
/Documentation/html/styles/lw-miranda.css:
--------------------------------------------------------------------------------
1 | div.imhistory
2 | {
3 | border: 1px solid #BBB;
4 | }
5 |
6 | .imhistory-title
7 | {
8 | border-bottom: 1px solid #BBB;
9 | padding: 3px;
10 | }
11 |
12 |
13 | .imhistory-content
14 | {
15 | margin: 3px;
16 | }
--------------------------------------------------------------------------------
/Documentation/html/styles/msdn10/Msdn10_vstudio-bn20091118.css:
--------------------------------------------------------------------------------
1 |
2 | #JelloWrapper {
3 | background:url('bg_vstudio.png') no-repeat 200px 0
4 | }
5 |
6 | * html .internav {
7 | background-color:#21244a
8 | }
9 |
10 | * html .internav a:hover {
11 | background-color:#181c39
12 | }
13 |
14 | .internav a.active, .internav a.active:hover {
15 | background-color:#735aaf
16 | }
17 |
18 | * html .internav a.active, * html .internav a.active:hover {
19 | background-color:#7359ad
20 | }
21 |
22 | .LocalNavigation {
23 | background:url('subnav_vstudio.png') repeat-y top right
24 | }
25 |
26 | * html .LocalNavigation {
27 | background-color:#7359ad;
28 | background-image:none
29 | }
30 |
31 | .LocalNavigation .TabOff a:hover {
32 | background-color:#634d9c
33 | }
34 |
35 | .LocalNavigation .TabOn {
36 | background-color:#4c3c79
37 | }
38 |
--------------------------------------------------------------------------------
/Documentation/html/styles/msdn10/adart_repository.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/styles/msdn10/adart_repository.png
--------------------------------------------------------------------------------
/Documentation/html/styles/msdn10/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/styles/msdn10/bg.png
--------------------------------------------------------------------------------
/Documentation/html/styles/msdn10/bg_vstudio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/styles/msdn10/bg_vstudio.png
--------------------------------------------------------------------------------
/Documentation/html/styles/msdn10/bullet.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/styles/msdn10/bullet.gif
--------------------------------------------------------------------------------
/Documentation/html/styles/msdn10/clear.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/styles/msdn10/clear.gif
--------------------------------------------------------------------------------
/Documentation/html/styles/msdn10/contentpane.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/styles/msdn10/contentpane.png
--------------------------------------------------------------------------------
/Documentation/html/styles/msdn10/contentpaneleft.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/styles/msdn10/contentpaneleft.png
--------------------------------------------------------------------------------
/Documentation/html/styles/msdn10/contentpaneright.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/styles/msdn10/contentpaneright.png
--------------------------------------------------------------------------------
/Documentation/html/styles/msdn10/internav.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/styles/msdn10/internav.png
--------------------------------------------------------------------------------
/Documentation/html/styles/msdn10/subnav_vstudio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rahvee/CBcrypt/83940b16ea794503f9966cbc3e04dfce7b4c1adf/Documentation/html/styles/msdn10/subnav_vstudio.png
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | CBCrypt (https://www.cbcrypt.org) is MIT licensed (see below) and is
2 | dependent on BouncyCastle (http://www.bouncycastle.org), which is also MIT
3 | licensed. (http://www.bouncycastle.org/csharp/licence.html). CBCrypt is
4 | also dependent on SCrypt (subset of CryptSharp)
5 | (http://www.zer7.com/software/cryptsharp) which is ISC licensed
6 | (http://www.zer7.com/files/oss/cryptsharp/License.txt)
7 |
8 | The MIT License (MIT)
9 |
10 | Copyright (c) 2014 Concept Blossom, Inc.
11 |
12 | Permission is hereby granted, free of charge, to any person obtaining a copy
13 | of this software and associated documentation files (the "Software"), to deal
14 | in the Software without restriction, including without limitation the rights
15 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16 | copies of the Software, and to permit persons to whom the Software is
17 | furnished to do so, subject to the following conditions:
18 |
19 | The above copyright notice and this permission notice shall be included in all
20 | copies or substantial portions of the Software.
21 |
22 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28 | SOFTWARE.
29 |
--------------------------------------------------------------------------------