summaryrefslogtreecommitdiffstats
path: root/crypto/openpgp_symmetric_encryption.h
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/openpgp_symmetric_encryption.h')
-rw-r--r--crypto/openpgp_symmetric_encryption.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/crypto/openpgp_symmetric_encryption.h b/crypto/openpgp_symmetric_encryption.h
new file mode 100644
index 0000000..d49d216
--- /dev/null
+++ b/crypto/openpgp_symmetric_encryption.h
@@ -0,0 +1,45 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CRYPTO_OPENPGP_SYMMETRIC_ENCRYPTION_H_
+#define CRYPTO_OPENPGP_SYMMETRIC_ENCRYPTION_H_
+#pragma once
+
+#include <string>
+
+#include "base/string_piece.h"
+
+namespace crypto {
+
+// OpenPGPSymmetricEncrytion implements enough of RFC 4880 to read and write
+// uncompressed, symmetrically encrypted data. You can create ciphertext
+// compatable with this code from the command line with:
+// gpg --compress-algo=NONE --cipher-algo=AES -c
+//
+// Likewise, the output of this can be decrypted on the command line with:
+// gpg < input
+class OpenPGPSymmetricEncrytion {
+ public:
+ enum Result {
+ OK,
+ UNKNOWN_CIPHER, // you forgot to pass --cipher-algo=AES to gpg
+ UNKNOWN_HASH,
+ NOT_SYMMETRICALLY_ENCRYPTED, // it's OpenPGP data, but not correct form
+ COMPRESSED, // you forgot to pass --compress-algo=NONE
+ PARSE_ERROR, // it's not OpenPGP data.
+ INTERNAL_ERROR,
+ };
+
+ static Result Decrypt(base::StringPiece encrypted,
+ base::StringPiece passphrase,
+ std::string *out);
+
+ static std::string Encrypt(base::StringPiece plaintext,
+ base::StringPiece passphrase);
+};
+
+} // namespace crypto
+
+#endif // CRYPTO_OPENPGP_SYMMETRIC_ENCRYPTION_H_
+