ordo 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e890f80f24a48de13e03ddb187dddfc55f43b72e
4
+ data.tar.gz: cc31473804b28bd97c56322e10c38601b77fb68b
5
+ SHA512:
6
+ metadata.gz: b52f17efb54461bdf5b3ff16f7e7f8915e8c3609d2501869862324a19f0712f3e9e2e2505c1a7502aa7bff25ff6c21f5527f55b38d7e6fc8a2833484e28387f6
7
+ data.tar.gz: 47eb0af405a792ffe5858f82086995845dfc5e40171181df477ac715110210b136d90fb7119ca31ea3b4b624668d99b75a99cb773c446c1c07f6a610f4df14ac
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ordo.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Tony Arcieri
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,100 @@
1
+ # Ordo (Ordered Representation for Disinguished Objects)
2
+
3
+ Ordo is a data interchange format with the main intended use case of
4
+ representing certificates and cryptographic keys.
5
+
6
+ ## Why?
7
+
8
+ X.509 has a number of shortcomings, both in terms of usability and formal
9
+ language theory. Ordo seeks to address these.
10
+
11
+ We realize that reinventing the wheel can be unhelpful (cue [obligatory XKCD
12
+ comic][standards-comic]) but we also feel like the wheels we're rolling on now
13
+ may be somewhat misshapen.
14
+
15
+ Ordo has been designed with the following goals in mind:
16
+
17
+ * **Human-readable**: Documents can be read and written by humans without
18
+ the need for special tools, so long as the grammar is adhered to. They should
19
+ also be pleasant to read!
20
+ * **Unambiguous**: Ordo seeks to actively identify any possible ambiguities in
21
+ the format and aggressively specify answers for what must and should be done
22
+ depending on the context. The goal is a format which is strict and rigorous
23
+ where all conforming implementations agree on all details of the format.
24
+ * **Distinguished**: The structure of an Ordo document is exactingly described
25
+ in such a way that there is one and only one possible representation of
26
+ a given set of data, such that tools given the same inputs to generate a
27
+ certificate will always produce the same document every time in a fully
28
+ deterministic manner.
29
+ * **User friendly**: As much as possible, special tools should not be needed
30
+ (but might be appreciated) to accomplish most work involving certificates.
31
+ This includes assembling certificate chains, signing certificates, and
32
+ combining certificates with private keys.
33
+ * **LANGSEC friendly**: the most popular existing certificate format, X.509,
34
+ was designed without a proper understanding of the [security applications
35
+ of formal language theory][langsec]. Ordo solves these concerns by describing
36
+ the format in terms of a [context free grammar][cfg] which is unambiguous and
37
+ should be possible to implement consistently everywhere from the description.
38
+ This project implements the Ordo format using a [Parsing Expression
39
+ Grammar][peg], specifically [kpeg][kpeg] by Evan Phoenix.
40
+
41
+ For more information on LANGSEC, please check out [Occupy Babel][occupy]:
42
+
43
+ ![Context Free Or Regular](http://www.cs.dartmouth.edu/~sergey/langsec/occupy/WeirdMachines.jpg)
44
+
45
+ [standards-comic]: http://xkcd.com/927/
46
+ [langsec]: http://www.cs.dartmouth.edu/~sergey/langsec/
47
+ [cfg]: https://en.wikipedia.org/wiki/Context-free_grammar
48
+ [peg]: https://en.wikipedia.org/wiki/Parsing_expression_grammar
49
+ [kpeg]: https://github.com/evanphx/kpeg
50
+ [occupy]: http://www.cs.dartmouth.edu/~sergey/langsec/occupy/
51
+
52
+ ## Inspirations
53
+
54
+ Ordo is inspired by a number of sources:
55
+
56
+ * X.509
57
+ * HTTP
58
+ * JSON
59
+ * YAML
60
+ * TOML/"INI"
61
+ * Cryptonomicon
62
+
63
+ ## Example
64
+
65
+ The following certificate represents a user with a Curve25519 public key:
66
+
67
+ ```
68
+ -----BEGIN ORDO CERTIFICATE BLOCK-----
69
+ email: bascule@gmail.com
70
+ id-scheme: ordo.id+blake2b
71
+ public-key: ordo.public-key+curve25519:4uj6lwvvsx3bfl6novr36wdzl
72
+ r6uuovkkfrovmckd5uakwdlwiva
73
+ subject: ordo.dn://c=US/ST=California/L=San+Francisco/O=Cryptosp
74
+ here+Foundation/OU=Certificate+Department/cn=Ordo
75
+ -----END ORDO CERTIFICATE BLOCK-----
76
+ ```
77
+
78
+ Some quick things to note:
79
+ * We continue to use the familiar block delimiters for the beginning
80
+ and end of the certificate
81
+ * We linewrap at 64 characters, and indent to the column matching
82
+ the length of the key name plus 2 characters (the ': ' delimiter)
83
+ * Key names are lower case, may contain the "-" character, and are
84
+ sorted in alphabetical order
85
+ * Public keys and subjects are provided as URIs
86
+ * Binary data is encoded using Base32
87
+ * Spaces, not tabs. Trailing whitespace is not allowed.
88
+
89
+ The `id-scheme` field allows us to compute a content hash which
90
+ uniquely identifies this certificate. This particular cert has chosen
91
+ to identify itself by its Blake2b hash. So its public ID is the
92
+ following URI:
93
+
94
+ ```
95
+ ordo.id+blake2b:lwxgjvaph2mode3zhrogwdhobuuaej4buc5nl6kbqiubshozocda
96
+ ```
97
+
98
+ This URI acts as a sort of universally unique identifier, and also
99
+ specifies a content hash that can be used to digitally sign this
100
+ particular certificate.
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/lib/ordo.rb ADDED
@@ -0,0 +1,5 @@
1
+ require "ordo/version"
2
+
3
+ module Ordo
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,3 @@
1
+ module Ordo
2
+ VERSION = "0.0.0"
3
+ end
data/ordo.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ordo/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "ordo"
8
+ spec.version = Ordo::VERSION
9
+ spec.authors = ["Tony Arcieri"]
10
+ spec.email = ["tony.arcieri@gmail.com"]
11
+ spec.description = "Tools for working with the Ordo certificate format"
12
+ spec.summary = "Ordo is a data interchange format for cryptographic identities, keys, and signatures"
13
+ spec.homepage = "https://github.com/cryptosphere/ordo"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency "kpeg"
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.3"
24
+ spec.add_development_dependency "rake"
25
+ end
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ordo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Tony Arcieri
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-10-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: kpeg
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Tools for working with the Ordo certificate format
56
+ email:
57
+ - tony.arcieri@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - .gitignore
63
+ - Gemfile
64
+ - LICENSE.txt
65
+ - README.md
66
+ - Rakefile
67
+ - lib/ordo.rb
68
+ - lib/ordo/version.rb
69
+ - ordo.gemspec
70
+ homepage: https://github.com/cryptosphere/ordo
71
+ licenses:
72
+ - MIT
73
+ metadata: {}
74
+ post_install_message:
75
+ rdoc_options: []
76
+ require_paths:
77
+ - lib
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ requirements: []
89
+ rubyforge_project:
90
+ rubygems_version: 2.0.3
91
+ signing_key:
92
+ specification_version: 4
93
+ summary: Ordo is a data interchange format for cryptographic identities, keys, and
94
+ signatures
95
+ test_files: []