Closed

Extend iOS Xcode project to add funcitonality - repost

This project received 5 bids from talented freelancers with an average bid price of $345 USD.

Get free quotes for a project like this
Employer working
Skills Required
Project Budget
N/A
Total Bids
5
Project Description

Below is a link to a project that enables OpenSSL to be compiled for ARM7 ARM7s and used within a cocoa touch Application

[url removed, login to view]

I need a simple class adding to this project that can accomplish the following two openssl tasks:

1. Decrypt an RSA encrypted string with a public key and store the result in an NSString object:

E.g. Take the following string....

NSString *encrypted = @"UXPMk2jt7ppMNJ0TTGue1OOWgSq+NfX96Qgb7DpN6jPw+6ibSyAwEJlLlVz4UCM2tyBQ5Ui+S/vdxXDk86EymBOrngcwwP1d+ygNM2K94L0IXQSjlmePxD+daBK7RJbgF5P35Lib+/L6jfY+yLk1AYze4TIA7pEwbt4EWgn+0iU=";

... and decode with the following key using the RSA_Verify method from the openssl library:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+ynZ7EvJ0F+IoGmlme/j/MpH4
7BxrIuDTJCOS99j82IL3Ww9Ubm28yOMHYPdi23WPDhR80ugaBWAnmqUZWvYKjqd4
Z4D0sJ0NVW3DDgZ4gS57zFqlvGgdVhzaVimfs7qDxIJ1o8GMuXWseZV2ZpmIjdnF
ZBol5zZTqNfk89RNnQIDAQAB
-----END PUBLIC KEY-----

The openssl command line equivalent command of this would be:
- openssl rsautl -verify -in encrypted -out decrypted -inkey [url removed, login to view] -pubin
where encrypted is a file containing the base64decoded contents of the string.


2. Generate and verify ECDSA signatures.

E.g. using the following keys:

-----BEGIN EC PARAMETERS-----
BgUrgQQABg==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
MD4CAQEEDnX12/boHtk0uEctbBm6oAcGBSuBBAAGoSADHgAEmRk5gNdPlbzK2Jou
ZNlrma5zzJ5b65b6jLJPDQ==
-----END EC PRIVATE KEY-----

-----BEGIN PUBLIC KEY-----
MDIwEAYHKoZIzj0CAQYFK4EEAAYDHgAEmRk5gNdPlbzK2JouZNlrma5zzJ5b65b6
jLJPDQ==
-----END PUBLIC KEY-----

- add functionality to do the equivalent of:

echo -n 'Hello World' | openssl dgst -ecdsa-with-SHA1 -sign [url removed, login to view] | openssl enc -base64
(outputs MCACDi9BVg0y2C4IxtMmlgHiAg5xQj8w4VOioXLoBoF5qA==)

and then verify:

echo 'MCACDi9BVg0y2C4IxtMmlgHiAg5xQj8w4VOioXLoBoF5qA==' | openssl enc -d -a > [url removed, login to view] && \
echo -n 'Hello World' | openssl dgst -ecdsa-with-SHA1 -verify [url removed, login to view] -keyform PEM -signature [url removed, login to view]
(outputs Verified OK)

--------

The certificates cannot be generated on the device as they will be supplied by an external server in the live app. If this can be accomplished using the native crypto libraries then there is no need for openssl, however I believe that the new native libraries do not provide ECDSA functionality, hence the need for OpenSSL

This is quite a simple job for an experienced Objective-C / C programmer, the main complexity comes in the type casting required to interface to and from the OpenSSL which will do all of the heavy lifting.

There is no need to provide a functional UI - output to NSLog is sufficient, essentially the output should a class with the following 3 methods:

-(NSString)decryptBase64RSAEncryptedString:(NSString *)encryptedString withCertificate:(NSString *)certificate;

-(NSString)generateBase64EndcodedECDSASignatureForText:(NSString *)textToSign withCertificate:(NSString *)certificate;

-(bool)validateBase64EncodedECDSASignature:(NSString *)signature forString:(NSString *)stringToValidate withCertificate:(NSString *)certificate;

and if you like for good measure ;-) you can add a method to decode JSON result of the RSA description into an NSDictionary Object.

Looking to make some money?

  • Set your budget and the timeframe
  • Outline your proposal
  • Get paid for your work

Hire Freelancers who also bid on this project

    • Forbes
    • The New York Times
    • Time
    • Wall Street Journal
    • Times Online