ordo 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []