• Stars
    star
    987
  • Rank 46,382 (Top 1.0 %)
  • Language
    Go
  • License
    BSD 3-Clause "New...
  • Created over 8 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

a modern crypto messaging format

saltpack

a modern crypto messaging format

https://saltpack.org/

Build Status GoDoc

saltpack is a streamlined, modern solution, designed with simplicity in mind. It is easy to implement & integrate. We've made few crypto decisions and instead leave almost all of the heavy lifting to the NaCl library.

saltpack is a binary message format, encoded using the MessagePack format. Messages are broken up into reasonable (1MB) chunks, over which regular NaCl operations are performed. We have taken pains to address many of the shortcomings of current message formats: (1) only authenticated data is output; (2) repudiable authentication is used wherever possible; (3) chunks cannot be reordered or combined with other transmissions; (4) the public keys of senders and recipients can be hidden; and (5) message truncation is detectable.

Visually speaking, a saltpack ASCII output looks a lot like PGP's.

saltpack

BEGIN SALTPACK SIGNED MESSAGE. kXR7VktZdyH7rvq v5wcIkHbs7XwHpb
nPtLcF6vE5yY63t aHF62jiEC1zHGqD inx5YqK0nf5W9Lp TvUmM2zBwxgd3Nw
kvzZ96W7ZfDdTVg F5Y99c2l5EsCy1I xVNl0nY1TP25vsX 2cRXXPUrM2UKtWq
UK2HG2ifBSOED4w xArcORHfFeiEZxF CqestMqLSCCE6lT HFcdvt1QX9JjmWL
o5AAqPiECnoHiSA bPHhz2JnSCyDIOz ZET1BWzttbMDL4N pcyQLmsGqYpxhG6
uvdBxdt55w9xQvQ hDPuOsKF05Hsml6 z7h9TS2msJcNwtz vxGIQR7sbB19UOt
boM1hlolmMB3loP 0KexlROFBTDC6MR nBvd9sZUxA8Z7i5 a6Dk5yFU3WEYQAo
DqqjXcp0yBoHO5O KEMqkZlyMf1PKiB 2n9wE6jwxAN1xws ccthT6X3iRYk0Br
gHW6QRXzAHLy6Ib LgY6b3UcQAoDo8b XyaExxinVuM5Ftk 75BJOWoyLGFhZS7
EfKR8jQQexvyjDM rJLxYtjvaLX7joS 2q1VcUlqGfZDhAa 4vxJQAyu57beOux
oobLhI47iZf9bxK PmYrVQ5PsC6pY1J KTQQexvlvp2yicx K4su2AFCjihbzNI
yZgKM4NHN1KZapS O3iB9SlhVfTfFcR FoQoSViTkbtDtTt 6I0jrTRHkv9XVQQ
eeeuzR7qYu1Grm3 zDPyj7JgK2mDidw HchOZnfOn59QLnM nH7ErnPRXgHuWHG
DBidjQPakJHuWsk 2ftpIyZd2NLYEFS Mqcbo6QeCdk7LA1 uobl4NXzpvi8amO
Pe8xAl1OzUCoD34 MbCwtTAe1JNymvs okufV8lHU0jVnbj u4no9QB9aP2Wkjx
PfeqIH2fEtOjmFP gPMhGWslkU0M7FL QP77gPHbgjPLSD8 yIRTrbgzpAPut5R
QhIdqVlHbUOa9sI v7gSqOi0GbUlhSM 183LxZI8pIlvgn9 Ms1WNzt5Xkv0W1Q
Qf419ZmuQVPQDOk 0hffDmUk71TlfVx XZCF3voC2ysgl3g YdLz4rDRzMJgd2m
01HIbfdsoZpAMty O27WtUNRLV1iyC9 tK5ApCyekI4nWcf 2OvTHnC8ma7bloW
XAG. END SALTPACK SIGNED MESSAGE.

PGP

-----BEGIN PGP MESSAGE-----
Comment: GPGTools - https://gpgtools.org

owEBUAKv/ZANAwAKAdIkQTsc+mSQAcsgYgBWZ0C0SSBhbSBzbyBzaWNrIG9mIHRo
aXMgc2hpdAqJAhwEAAEKAAYFAlZnQLQACgkQ0iRBOxz6ZJBS9Q/+MSfWiOz5OvRt
lHTncX8Ifo7+wSKYH039vEQAUvj+rnEdlBzcJPoHDE1yZxAZT5ek5S+cxQ5bx55K
WRLvw/sAz+OU0OPHSDsqI2LjU6D+s1EvwCISkXoWlMVx5vJsEz2XGlQ8DzgBC2Jy
wPanQf1lUz0c7k0ySdCTdZ0qG1YuaYnCXsS6g/E8E7TIO++2v5EbkgYZl3Io2LcI
C9TqTHdrIc7WGTSFjwq9JIgvwfuShpccNSFQ262gSJh8rUOzzY37q81pKxDnBvEV
TMrQYY0e/JK7KMMcHDSQSeWnMxf4/v5Qex7WI55CW4++qbNvDylDi9fTpkYfXl3B
L8pbBAxMUjcJX4qVVzWcxTwSXYO29Bi4osn2klNyZHnO35kuI9XGziWCGqhVx1MW
ptNHoVjk7/Uo7k39hY0Vjltnl/SqXHq/H7YTRSgLebuhn6zqMbmFXtyHYSHGgAQ4
rcdSBta+I9tmYCnp1GmfeXff2wzsFYPUune2Hve4VghjmeU0x7OWMEl93gpznSwu
NvzyOCqFCyfEmt/R2QCXAkxwPU/Mdsd5vzEHSMkcZgW4CTr+j5YG/C3kMy7UJAGZ
ZzFAh3/Z8fCtfREF3zH48XbNh3dQXNl40bUF/AgPvLqPf35L7TCchcUAC7oiASa/
Ph/Hao4ZzCQDM76Jr/aCUJIbxyc2zco=
=eyef
-----END PGP MESSAGE-----

The changes here are small: we've reduced our characters to base62 plus some period markers, and only at the ends of words. PGP messages often get mangled by different apps, websites, and smart text processors.

Of course, saltpack can output binary, too. Either way, it's what's inside the format that matters. You can read the spec for the details.

More Repositories

1

client

Keybase Go Library, Client, Service, OS X, iOS, Android, Electron
Go
8,579
star
2

kbfs

Keybase Filesystem (KBFS)
Go
1,210
star
3

keybase-issues

A single repo for managing publicly recognized issues with the keybase client, installer, and website.
902
star
4

go-keychain

Golang keychain package for iOS and macOS
Go
561
star
5

kbpgp

OpenPGP (RFC4880) Implementation in IcedCoffeeScript
JavaScript
530
star
6

triplesec

Triple Security for the browser and Node.js
JavaScript
398
star
7

node-client

CLI for keybase.io written in/for Node.js
CoffeeScript
299
star
8

keybase-bot

exploration with the keybase chat API
TypeScript
264
star
9

bot-sshca

A chat bot that can manage your team's SSH accounts
Go
222
star
10

warpwallet

A brain wallet generator that uses scrypt.
HTML
186
star
11

book-content

Jinja
173
star
12

managed-bots

Keybase managed bots
Go
130
star
13

node-installer

An installer/updater for the node client.
CoffeeScript
117
star
14

pykeybasebot

Python Keybase Bot Library
Python
115
star
15

go-keybase-chat-bot

Official Go Keybase chat bot SDK
Go
110
star
16

proofs

Public Keybase Proof System
CoffeeScript
108
star
17

saltpack-python

A Python implementation of saltpack, mainly for testing. Only partial support for V2.
Python
103
star
18

go-merkle-tree

Go language to build and check keybase's sitewide merkle tree.
Go
101
star
19

go-updater

Update framework (golang)
Go
85
star
20

python-triplesec

A Python port of the triplesec library.
Python
80
star
21

slackbot

Slackbot for Keybase
Go
62
star
22

go-notifier

go-notifier: Cross platform system notifications in go (golang)
Go
57
star
23

go-triplesec

A fork of Fillipo's TripleSec
Go
49
star
24

more-entropy

entropy collection in JavaScript for your node and/or browser apps
CoffeeScript
42
star
25

node-merkle-tree

A JS Merkle Tree implementation
CoffeeScript
40
star
26

python-salsa20

Bindings for the NaCL implementation of Salsa20 and XSalsa20 by D. J. Bernstein
C
31
star
27

pgp-utils

Various crypto utilities for dealing with MACs, Signatures, and PGP message formats.
CoffeeScript
30
star
28

gpg-wrapper

A wrapper around the GPG CLI.
CoffeeScript
23
star
29

python-twofish

Bindings for the Twofish implementation by Niels Ferguson
C
22
star
30

node-nacl

NaCl wrapper; uses `sodium` for the server-side and `tweetnacl-js` for the client
JavaScript
22
star
31

node-saltpack

our standard saltpack implementation in JS
JavaScript
21
star
32

dokan-go

Go
19
star
33

pipeliner

A simplified pipline library, for parallel requests with bounded parallelism
Go
19
star
34

django-keybase-proofs

Reference implementation and drop in library for keybase proof integration
Python
19
star
35

go-kext

A library for accessing kernel extensions on OS X.
Go
18
star
36

libweb

A library for building Web clients for keybase, either in the browser or for testing in node.
CoffeeScript
15
star
37

kbfs-beta

Go
14
star
38

messenger

Description and code for a keybase-powered messenger
CoffeeScript
13
star
39

merkle-stellar

Library to read the Keybase Merkle root out of the Stellar blockchain
TypeScript
12
star
40

release

Release tool
Go
11
star
41

hubot-keybase

A Hubot adapter for Keybase bot development
JavaScript
11
star
42

search

Encrypted search of Keybase data (WIP)
Go
10
star
43

libkeybase-js

An library for processing keybase's signature tree.
CoffeeScript
9
star
44

prove_keybase

ruby on rails gemified plugin for implementing our open proof protocol
Ruby
9
star
45

stellarnet

Go
9
star
46

keybase-bot-serverless

JavaScript
9
star
47

node-lru

Simple JS LRU
TypeScript
8
star
48

node-login

A demo login system
CoffeeScript
8
star
49

node-bitcoyne

Bitcoin library built atop kbpgp
CoffeeScript
8
star
50

blockchain

Read a user's Keybase sigchain out of the Bitcoin Blockchain
JavaScript
7
star
51

node-forge-sigchain

A node library to sync and process user sigchains
CoffeeScript
7
star
52

keybase.github.io

Blog and announcements
HTML
7
star
53

blockchain-tools

A tool to insert our Merkle root into the bitcoin blockchain.
CoffeeScript
6
star
54

jenkins-helpers

Helpers for running Jenkins pipeline scripts
Groovy
6
star
55

ruby-client

CLI for keybase.io written for/in Ruby
Ruby
6
star
56

node-bitcoin

A bitcoin library that's browserify-able, forked from bitcoinaddress.org
JavaScript
6
star
57

go-flip

A way to flip coins with your friends
Go
6
star
58

codesign

directory contents summarizer - will be used for code signing feature
CoffeeScript
6
star
59

loopback

A loopback filesystem using bazil.org/fuse
Go
6
star
60

KBShellExt

Windows explorer extension for overlaying sync status icons
C++
6
star
61

colorbase

Example proof service in Clojure - colors for everyone!
Clojure
6
star
62

node-avdl-compiler

AVDL to Go compiler written in IcedCoffeeScript (node)
CoffeeScript
6
star
63

msgpackzip

A compressed for msgpack data that you can configure to not leak secrets
Go
6
star
64

messenger-inbox-server

Inbox Server for the new messaging protocol
CoffeeScript
5
star
65

node-spotty

Get the TTY device (e.g., /dev/pts/3) of the current node process
CoffeeScript
4
star
66

github-ci-status

Check the current CI status of a repo using GitHub's Statuses API
JavaScript
4
star
67

node-armor-x

A base-X-encoding library suitable for stream processing
CoffeeScript
4
star
68

homebrew-beta

Ruby
3
star
69

keybase-test-vectors

Go
3
star
70

go-libcmdline

A small library for handing command line flags
Go
3
star
71

nullFunctionModule

A module that exports a function that returns an empty object
JavaScript
3
star
72

messenger-core

Shared libraries between the client and servers; constants, etc.
CoffeeScript
3
star
73

node-acache

CoffeeScript
2
star
74

kbfs-binary-windows

Binaries required for building kbfs on windows
2
star
75

bot-jira

TypeScript
2
star
76

node-chunk-stream

base class for chunked node streams
JavaScript
2
star
77

node-base64-finder

Find and match base64 blobs
Makefile
2
star
78

logmux

A simple log muxing service
Go
2
star
79

badnode

Report if the node version we're using is bad.
CoffeeScript
2
star
80

player

Standalone sigchain player in TypeScript
TypeScript
2
star
81

clj-keybase-proofs

Helper Clojure library for integrating Keybase proofs
Clojure
2
star
82

vcr

Go
2
star
83

rsp2json

A small command-line utility to convert a NIST-issued RSP file to JSON.
2
star
84

signencrypt.rs

a Rust test implementation of the Go sign+encrypt attachment format
Rust
2
star
85

react-native-v8

Holder for react-native-v8 aars
2
star
86

debatebot

a bot that hooks people up for interesting discussions
TypeScript
2
star
87

nullModule

A null node module
JavaScript
2
star
88

node-http-server

HTTP Server Base classes for servers, build on express and Node.js
CoffeeScript
2
star
89

node-avdl2json

A nodeJS AVDL-to-JSON compiler
CoffeeScript
2
star
90

p2es

A P2ES implementation over Curve25519 using TweetNaCl
C
2
star
91

js-vendor-desktop

Vendored dependencies for Keybase desktop client
1
star
92

bn

JS Bigint Import
JavaScript
1
star
93

kb-styles

colors and styles for keybase
SCSS
1
star
94

node-bjson-express

Express body parsers for BJSON support
CoffeeScript
1
star
95

node-bzip-deflate

A simple bzip deflator
JavaScript
1
star
96

webpack-example

webpack example
JavaScript
1
star
97

proofs-test

Proofs for testing and development.
CoffeeScript
1
star
98

keybase-git

AUR keybase-git PKGBUILD
Shell
1
star
99

node-path

Getting home can be hard sometimes.
CoffeeScript
1
star
100

go-vendor-test

Go
1
star