Skip to content

Commit

Permalink
update secure message examples — use more straightforward examples (#467
Browse files Browse the repository at this point in the history
)
  • Loading branch information
vixentael authored May 7, 2019
1 parent a5c57f9 commit 7fed185
Show file tree
Hide file tree
Showing 9 changed files with 187 additions and 236 deletions.
58 changes: 24 additions & 34 deletions docs/examples/objc/iOS-Carthage/ThemisTest/AppDelegate.m
Original file line number Diff line number Diff line change
Expand Up @@ -282,56 +282,46 @@ - (void)runExampleSecureMessageEncryptionDecryption {
- (void)runExampleSecureMessageSignVerify {
NSLog(@"----------------- %s -----------------", sel_getName(_cmd));

// ---------- signing

// base64 encoded keys:
// client private key
// server public key
NSString *serverPublicKeyString = @"VUVDMgAAAC2ELbj5Aue5xjiJWW3P2KNrBX+HkaeJAb+Z4MrK0cWZlAfpBUql";
NSString *clientPrivateKeyString = @"UkVDMgAAAC13PCVZAKOczZXUpvkhsC+xvwWnv3CLmlG0Wzy8ZBMnT+2yx/dg";

NSData *serverPublicKey = [[NSData alloc] initWithBase64EncodedString:serverPublicKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];
NSData *clientPrivateKey = [[NSData alloc] initWithBase64EncodedString:clientPrivateKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];

// initialize encrypter
TSMessage *encrypter = [[TSMessage alloc] initInSignVerifyModeWithPrivateKey:clientPrivateKey peerPublicKey:serverPublicKey];
// private key
// public key

NSString *publicKeyString = @"VUVDMgAAAC2ELbj5Aue5xjiJWW3P2KNrBX+HkaeJAb+Z4MrK0cWZlAfpBUql";
NSString *privateKeyString = @"UkVDMgAAAC1FsVa6AMGljYqtNWQ+7r4RjXTabLZxZ/14EXmi6ec2e1vrCmyR";

NSData *publicKey = [[NSData alloc] initWithBase64EncodedString:publicKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];
NSData *privateKey = [[NSData alloc] initWithBase64EncodedString:privateKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];


// ---------- signing

// initialize signer, use private key
TSMessage *signer = [[TSMessage alloc] initInSignVerifyModeWithPrivateKey:privateKey peerPublicKey:nil];

NSString *message = @"- Knock, knock.\n- Who’s there?\n*very long pause...*\n- Java.";

NSError *themisError;
NSData *encryptedMessage = [encrypter wrapData:[message dataUsingEncoding:NSUTF8StringEncoding]
error:&themisError];
NSData *signedMessage = [signer wrapData:[message dataUsingEncoding:NSUTF8StringEncoding]
error:&themisError];
if (themisError) {
NSLog(@"%s Error occurred while encrypting %@", sel_getName(_cmd), themisError);
NSLog(@"%s Error occurred while signing %@", sel_getName(_cmd), themisError);
return;
}
NSLog(@"%@", encryptedMessage);

// -------- verification

// base64 encoded keys:
// server private key
// client public key
NSString *serverPrivateKeyString = @"UkVDMgAAAC1FsVa6AMGljYqtNWQ+7r4RjXTabLZxZ/14EXmi6ec2e1vrCmyR";
NSString *clientPublicKeyString = @"VUVDMgAAAC1SsL32Axjosnf2XXUwm/4WxPlZauQ+v+0eOOjpwMN/EO+Huh5d";

NSData *serverPrivateKey = [[NSData alloc] initWithBase64EncodedString:serverPrivateKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];
NSData *clientPublicKey = [[NSData alloc] initWithBase64EncodedString:clientPublicKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];

// initialize decrypter
TSMessage *decrypter = [[TSMessage alloc] initInSignVerifyModeWithPrivateKey:serverPrivateKey peerPublicKey:clientPublicKey];
// initialize verifier, use public key
TSMessage *verifier = [[TSMessage alloc] initInSignVerifyModeWithPrivateKey:nil peerPublicKey:publicKey];

NSData *decryptedMessage = [decrypter unwrapData:encryptedMessage error:&themisError];
NSData *verifiedMessage = [verifier unwrapData:signedMessage error:&themisError];
if (themisError) {
NSLog(@"%s Error occurred while decrypting %@", sel_getName(_cmd), themisError);
NSLog(@"%s Error occurred while verifying %@", sel_getName(_cmd), themisError);
return;
}

NSString *resultString = [[NSString alloc] initWithData:decryptedMessage encoding:NSUTF8StringEncoding];
NSString *resultString = [[NSString alloc] initWithData:verifiedMessage encoding:NSUTF8StringEncoding];
NSLog(@"%@", resultString);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -278,60 +278,50 @@ - (void)runExampleSecureMessageEncryptionDecryption {
- (void)runExampleSecureMessageSignVerify {
NSLog(@"----------------- %s -----------------", sel_getName(_cmd));

// ---------- signing

// base64 encoded keys:
// client private key
// server public key
NSString * serverPublicKeyString = @"VUVDMgAAAC2ELbj5Aue5xjiJWW3P2KNrBX+HkaeJAb+Z4MrK0cWZlAfpBUql";
NSString * clientPrivateKeyString = @"UkVDMgAAAC13PCVZAKOczZXUpvkhsC+xvwWnv3CLmlG0Wzy8ZBMnT+2yx/dg";

NSData * serverPublicKey = [[NSData alloc] initWithBase64EncodedString:serverPublicKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];
NSData * clientPrivateKey = [[NSData alloc] initWithBase64EncodedString:clientPrivateKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];

// initialize encrypter
TSMessage * encrypter = [[TSMessage alloc] initInSignVerifyModeWithPrivateKey:clientPrivateKey peerPublicKey:serverPublicKey];

NSString * message = @"- Knock, knock.\n- Who’s there?\n*very long pause...*\n- Java.";

NSError * themisError;
NSData * encryptedMessage = [encrypter wrapData:[message dataUsingEncoding:NSUTF8StringEncoding]
error:&themisError];
// private key
// public key

NSString *publicKeyString = @"VUVDMgAAAC2ELbj5Aue5xjiJWW3P2KNrBX+HkaeJAb+Z4MrK0cWZlAfpBUql";
NSString *privateKeyString = @"UkVDMgAAAC1FsVa6AMGljYqtNWQ+7r4RjXTabLZxZ/14EXmi6ec2e1vrCmyR";

NSData *publicKey = [[NSData alloc] initWithBase64EncodedString:publicKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];
NSData *privateKey = [[NSData alloc] initWithBase64EncodedString:privateKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];


// ---------- signing

// initialize signer, use private key
TSMessage *signer = [[TSMessage alloc] initInSignVerifyModeWithPrivateKey:privateKey peerPublicKey:nil];

NSString *message = @"- Knock, knock.\n- Who’s there?\n*very long pause...*\n- Java.";

NSError *themisError;
NSData *signedMessage = [signer wrapData:[message dataUsingEncoding:NSUTF8StringEncoding]
error:&themisError];
if (themisError) {
NSLog(@"%s Error occurred while encrypting %@", sel_getName(_cmd), themisError);
NSLog(@"%s Error occurred while signing %@", sel_getName(_cmd), themisError);
return;
}
NSLog(@"%@", encryptedMessage);



// -------- verification

// base64 encoded keys:
// server private key
// client public key
NSString * serverPrivateKeyString = @"UkVDMgAAAC1FsVa6AMGljYqtNWQ+7r4RjXTabLZxZ/14EXmi6ec2e1vrCmyR";
NSString * clientPublicKeyString = @"VUVDMgAAAC1SsL32Axjosnf2XXUwm/4WxPlZauQ+v+0eOOjpwMN/EO+Huh5d";

NSData * serverPrivateKey = [[NSData alloc] initWithBase64EncodedString:serverPrivateKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];
NSData * clientPublicKey = [[NSData alloc] initWithBase64EncodedString:clientPublicKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];

// initialize decrypter
TSMessage * decrypter = [[TSMessage alloc] initInSignVerifyModeWithPrivateKey:serverPrivateKey peerPublicKey:clientPublicKey];

NSData * decryptedMessage = [decrypter unwrapData:encryptedMessage error:&themisError];

// initialize verifier, use public key
TSMessage *verifier = [[TSMessage alloc] initInSignVerifyModeWithPrivateKey:nil peerPublicKey:publicKey];

NSData *verifiedMessage = [verifier unwrapData:signedMessage error:&themisError];
if (themisError) {
NSLog(@"%s Error occurred while decrypting %@", sel_getName(_cmd), themisError);
NSLog(@"%s Error occurred while verifying %@", sel_getName(_cmd), themisError);
return;
}

NSString * resultString = [[NSString alloc] initWithData:decryptedMessage encoding:NSUTF8StringEncoding];
NSString *resultString = [[NSString alloc] initWithData:verifiedMessage encoding:NSUTF8StringEncoding];
NSLog(@"%@", resultString);
}


// Sometimes you will need to read keys from files
- (void)readingKeysFromFile {
NSLog(@"----------------- %s -----------------", sel_getName(_cmd));
Expand Down
72 changes: 31 additions & 41 deletions docs/examples/objc/macOS-Carthage/ThemisTest/AppDelegate.m
Original file line number Diff line number Diff line change
Expand Up @@ -275,57 +275,47 @@ - (void)runExampleSecureMessageEncryptionDecryption {

- (void)runExampleSecureMessageSignVerify {
NSLog(@"----------------- %s -----------------", sel_getName(_cmd));

// ---------- signing


// base64 encoded keys:
// client private key
// server public key
NSString *serverPublicKeyString = @"VUVDMgAAAC2ELbj5Aue5xjiJWW3P2KNrBX+HkaeJAb+Z4MrK0cWZlAfpBUql";
NSString *clientPrivateKeyString = @"UkVDMgAAAC13PCVZAKOczZXUpvkhsC+xvwWnv3CLmlG0Wzy8ZBMnT+2yx/dg";

NSData *serverPublicKey = [[NSData alloc] initWithBase64EncodedString:serverPublicKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];
NSData *clientPrivateKey = [[NSData alloc] initWithBase64EncodedString:clientPrivateKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];

// initialize encrypter
TSMessage *encrypter = [[TSMessage alloc] initInSignVerifyModeWithPrivateKey:clientPrivateKey peerPublicKey:serverPublicKey];

// private key
// public key

NSString *publicKeyString = @"VUVDMgAAAC2ELbj5Aue5xjiJWW3P2KNrBX+HkaeJAb+Z4MrK0cWZlAfpBUql";
NSString *privateKeyString = @"UkVDMgAAAC1FsVa6AMGljYqtNWQ+7r4RjXTabLZxZ/14EXmi6ec2e1vrCmyR";

NSData *publicKey = [[NSData alloc] initWithBase64EncodedString:publicKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];
NSData *privateKey = [[NSData alloc] initWithBase64EncodedString:privateKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];


// ---------- signing

// initialize signer, use private key
TSMessage *signer = [[TSMessage alloc] initInSignVerifyModeWithPrivateKey:privateKey peerPublicKey:nil];

NSString *message = @"- Knock, knock.\n- Who’s there?\n*very long pause...*\n- Java.";

NSError *themisError;
NSData *encryptedMessage = [encrypter wrapData:[message dataUsingEncoding:NSUTF8StringEncoding]
error:&themisError];
NSData *signedMessage = [signer wrapData:[message dataUsingEncoding:NSUTF8StringEncoding]
error:&themisError];
if (themisError) {
NSLog(@"%s Error occurred while encrypting %@", sel_getName(_cmd), themisError);
NSLog(@"%s Error occurred while signing %@", sel_getName(_cmd), themisError);
return;
}
NSLog(@"%@", encryptedMessage);


// -------- verification

// base64 encoded keys:
// server private key
// client public key
NSString *serverPrivateKeyString = @"UkVDMgAAAC1FsVa6AMGljYqtNWQ+7r4RjXTabLZxZ/14EXmi6ec2e1vrCmyR";
NSString *clientPublicKeyString = @"VUVDMgAAAC1SsL32Axjosnf2XXUwm/4WxPlZauQ+v+0eOOjpwMN/EO+Huh5d";

NSData *serverPrivateKey = [[NSData alloc] initWithBase64EncodedString:serverPrivateKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];
NSData *clientPublicKey = [[NSData alloc] initWithBase64EncodedString:clientPublicKeyString
options:NSDataBase64DecodingIgnoreUnknownCharacters];

// initialize decrypter
TSMessage *decrypter = [[TSMessage alloc] initInSignVerifyModeWithPrivateKey:serverPrivateKey peerPublicKey:clientPublicKey];

NSData *decryptedMessage = [decrypter unwrapData:encryptedMessage error:&themisError];

// initialize verifier, use public key
TSMessage *verifier = [[TSMessage alloc] initInSignVerifyModeWithPrivateKey:nil peerPublicKey:publicKey];

NSData *verifiedMessage = [verifier unwrapData:signedMessage error:&themisError];
if (themisError) {
NSLog(@"%s Error occurred while decrypting %@", sel_getName(_cmd), themisError);
NSLog(@"%s Error occurred while verifying %@", sel_getName(_cmd), themisError);
return;
}

NSString *resultString = [[NSString alloc] initWithData:decryptedMessage encoding:NSUTF8StringEncoding];
NSString *resultString = [[NSString alloc] initWithData:verifiedMessage encoding:NSUTF8StringEncoding];
NSLog(@"%@", resultString);
}

Expand Down
2 changes: 1 addition & 1 deletion docs/examples/swift/iOS-Carthage/Cartfile.resolved
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
github "cossacklabs/themis" "0.11.0"
github "cossacklabs/themis" "0.11.1"
github "krzyzanowskim/OpenSSL" "1.0.2.17"
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = com.cossacklabs.themis.ThemisTest;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 4.2;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
Expand All @@ -377,7 +377,7 @@
);
PRODUCT_BUNDLE_IDENTIFIER = com.cossacklabs.themis.ThemisTest;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 4.2;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
Expand Down
53 changes: 22 additions & 31 deletions docs/examples/swift/iOS-Carthage/ThemisTest/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -265,60 +265,51 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
func runExampleSecureMessageSignVerify() {
print("----------------------------------", #function)

// ---------- signing ----------------

// base64 encoded keys:
// client private key
// server public key
// private key
// public key

let serverPublicKeyString: String = "VUVDMgAAAC2ELbj5Aue5xjiJWW3P2KNrBX+HkaeJAb+Z4MrK0cWZlAfpBUql"
let clientPrivateKeyString: String = "UkVDMgAAAC13PCVZAKOczZXUpvkhsC+xvwWnv3CLmlG0Wzy8ZBMnT+2yx/dg"
let publicKeyString: String = "VUVDMgAAAC2ELbj5Aue5xjiJWW3P2KNrBX+HkaeJAb+Z4MrK0cWZlAfpBUql"
let privateKeyString: String = "UkVDMgAAAC1FsVa6AMGljYqtNWQ+7r4RjXTabLZxZ/14EXmi6ec2e1vrCmyR"

guard let serverPublicKey: Data = Data(base64Encoded: serverPublicKeyString,
guard let publicKey: Data = Data(base64Encoded: publicKeyString,
options: .ignoreUnknownCharacters),
let clientPrivateKey: Data = Data(base64Encoded: clientPrivateKeyString,
let privateKey: Data = Data(base64Encoded: privateKeyString,
options: .ignoreUnknownCharacters) else {
print("Error occurred during base64 encoding", #function)
return
}

let encrypter: TSMessage = TSMessage.init(inSignVerifyModeWithPrivateKey: clientPrivateKey,
peerPublicKey: serverPublicKey)!
// ---------- signing ----------------
// use private key

let signer: TSMessage = TSMessage.init(inSignVerifyModeWithPrivateKey: privateKey,
peerPublicKey: nil)!

let message: String = "I had a problem so I though to use Java. Now I have a ProblemFactory."

var encryptedMessage: Data = Data()
var signedMessage: Data = Data()
do {
encryptedMessage = try encrypter.wrap(message.data(using: .utf8))
print("encryptedMessage = \(encryptedMessage)")
signedMessage = try signer.wrap(message.data(using: .utf8))
print("signedMessage = \(signedMessage)")

} catch let error as NSError {
print("Error occurred while encrypting \(error)", #function)
print("Error occurred while signing \(error)", #function)
return
}

// ---------- verification ----------------
let serverPrivateKeyString: String = "UkVDMgAAAC1FsVa6AMGljYqtNWQ+7r4RjXTabLZxZ/14EXmi6ec2e1vrCmyR"
let clientPublicKeyString: String = "VUVDMgAAAC1SsL32Axjosnf2XXUwm/4WxPlZauQ+v+0eOOjpwMN/EO+Huh5d"

guard let serverPrivateKey: Data = Data(base64Encoded: serverPrivateKeyString,
options: .ignoreUnknownCharacters),
let clientPublicKey: Data = Data(base64Encoded: clientPublicKeyString,
options: .ignoreUnknownCharacters) else {
print("Error occurred during base64 encoding", #function)
return
}

let decrypter: TSMessage = TSMessage.init(inSignVerifyModeWithPrivateKey: serverPrivateKey,
peerPublicKey: clientPublicKey)!
// use public key
let verifier = TSMessage.init(inSignVerifyModeWithPrivateKey: nil,
peerPublicKey: publicKey)!

do {
let decryptedMessage: Data = try decrypter.unwrapData(encryptedMessage)
let resultString: String = String(data: decryptedMessage, encoding: .utf8)!
print("decryptedMessage->\n\(resultString)")
let verifiedMessage: Data = try verifier.unwrapData(signedMessage)
let resultString: String = String(data: verifiedMessage, encoding: .utf8)!
print("verifiedMessage ->\n\(resultString)")

} catch let error as NSError {
print("Error occurred while decrypting \(error)", #function)
print("Error occurred while verifing \(error)", #function)
return
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
Loading

0 comments on commit 7fed185

Please sign in to comment.