Как создать SeckeyRef из экспоненты и модуля открытого ключа и использовать в методе SecKeyEncrypt

Любой, пожалуйста, помощь в создании SecKeyRef от экспонент и Modulus быть моим Public exponent = <сильный> 010001 и Public Modulus = <сильный> 008903fb6d15f352ed3b45add3216f632f7139954a5631337aba7d645ed38482e3a810b4db26aab4d1df58c147230f0c75631a3dd0554b50de44e79f4fcf205c89fd3f80e0ff8d16c2e9f56ed3ab177953d54c9c30357d04e677cedd9912906ef8a046d7b0185b7f2022a8e435b0c6ecaef93f089fc3aa3f3677550b5d842046c7 и я хочу использовать этот SecKeyEncrypt в качестве открытого ключа


person 012346    schedule 17.07.2012    source источник
comment
Purnima, Не могли бы вы вставить полный код. Я вижу код, преобразующий экспоненту и модуль в NSData, но я не преобразовывал в SecRefKey (который является предпочтительным открытым ключом). Заранее спасибо. -Киран   -  person Kiran Nunna    schedule 01.10.2012


Ответы (1)


проблема NSData *publicTag=[self PublicKeyItems]; решена при создании пары ключей и вызове метода
попробуйте импортировать BasicEncodingRules.h и .m в свой файл

- (NSData *)PublicKeyItems
{
NSString *exp = @"010001";
NSLog(@"Publickeyexp -%@",exp);
NSData *publickeyexpdata= [self stringasdata:exp];
NSLog(@"publickeyexpdata = %@",publickeyexpdata);
NSString *mod = @"008903fb6d15f352ed3b45add3216f632f7139954a5631337aba7d645ed38482e3a810b4db26aab4d1df58c147230f0c75631a3dd0554b50de44e79f4fcf205c89fd3f80e0ff8d16c2e9f56ed3ab177953d54c9c30357d04e677cedd9912906ef8a046d7b0185b7f2022a8e435b0c6ecaef93f089fc3aa3f3677550b5d842046c7";
NSLog(@"Publickeymod -%@",mod);
NSData *publickeymoddata= [self stringasdata:mod];
NSLog(@"publickeymod = %@",publickeyexpdata);

NSMutableArray *publicarray = [[NSMutableArray alloc] init];
[publicarray addObject:publickeyexpdata];
[publicarray addObject:publickeymoddata];
NSData *testData = [publicarray berData];
NSLog(@"testdata = %@",testData);
NSMutableArray *testArray2 = [testData berDecode];
NSLog(@"testarray = %@",testArray2);
//STAssertEqualObjects(testArray, testArray2,
                    // @"Big items decode failed");

NSData *testData2 = [testArray2 berData];
 NSLog(@"PublicKeyData using Publickeyitems = %@",testData2);
return testData2;
}
-(NSData *)stringasdata:(NSString *)command {
command = [command stringByReplacingOccurrencesOfString:@" " withString:@""];
command = [command stringByReplacingOccurrencesOfString:@"<" withString:@""];
command = [command stringByReplacingOccurrencesOfString:@">" withString:@""];
NSLog(@"command= %@",command);
NSMutableData *commandToSend= [[NSMutableData alloc] init]; unsigned char whole_byte;
int len = [command length];
int n = len/2;
char byte_chars[3] = {'\0','\0','\0'}; int i;
for (i=0; i < n; i++) {
    byte_chars[0] = [command characterAtIndex:i*2]; byte_chars[1] = [command         characterAtIndex:i*2+1]; whole_byte = strtol(byte_chars, NULL, 16); [commandToSend appendBytes:&whole_byte length:1];
}
// [commandToSend setLength:[commandToSend length]-1];
return commandToSend; 

}
person 012346    schedule 17.07.2012
comment
Я вряд ли мастер Objective-C, но я понятия не имею, что вы делаете в этом фрагменте кода. Могли бы вы объяснить? - person Maarten Bodewes; 18.07.2012
comment
Я пытаюсь получить открытый ключ, используя показатель степени и модуль с помощью методов - person 012346; 18.07.2012
comment
Я не знаю, имеет ли это значение, возможно, вам следует добавить модуль, а затем показатель степени в массив. Это сработало для вас? - person LightMan; 11.12.2012
comment
как вы извлекаете модуль из SecKeyRef? - person Charan Giri; 09.09.2014
comment
Этот фрагмент кода ничего не делает с SecKey, как упомянутый исходный вопрос. Можете ли вы обновить, чтобы включить весь процесс, приводящий к действительному экземпляру SecKey? - person Jay Whitsitt; 08.06.2018