]>
git.saurik.com Git - apple/security.git/blob - sec/SOSCircle/Regressions/sc-30-peerinfo.c
4 * Created by Mitch Adler on 1/25/121.
5 * Copyright 2012 Apple Inc. All rights reserved.
10 #include <Security/SecBase.h>
11 #include <Security/SecItem.h>
12 #include <Security/SecKey.h>
13 #include <Security/SecKeyPriv.h>
15 #include <SecureObjectSync/SOSCircle.h>
16 #include <SecureObjectSync/SOSPeerInfo.h>
17 #include <SecureObjectSync/SOSInternal.h>
18 #include <SecureObjectSync/SOSUserKeygen.h>
20 #include <utilities/SecCFWrappers.h>
22 #include <CoreFoundation/CoreFoundation.h>
27 #include "SOSCircle_regressions.h"
29 #include "SOSRegressionUtilities.h"
32 #include <MobileGestalt.h>
35 static int kTestTestCount
= 11;
36 static void tests(void)
38 SecKeyRef signingKey
= NULL
;
39 SOSFullPeerInfoRef fpi
= SOSCreateFullPeerInfoFromName(CFSTR("Test Peer"), &signingKey
, NULL
);
40 SOSPeerInfoRef pi
= SOSFullPeerInfoGetPeerInfo(fpi
);
43 ok(NULL
!= pi
, "info creation");
47 const uint8_t *buffer_p
= SOSPeerInfoEncodeToDER(pi
, NULL
, buffer
, buffer
+ sizeof(buffer
));
49 ok(buffer_p
!= NULL
, "encode");
51 SOSPeerInfoRef pi2
= SOSPeerInfoCreateFromDER(NULL
, NULL
, &buffer_p
, buffer
+ sizeof(buffer
));
55 skip("Decode failed", 1, ok(NULL
!= pi2
, "Decode"));
56 ok(CFEqual(pi
, pi2
), "Decode matches");
59 buffer_p
= SOSFullPeerInfoEncodeToDER(fpi
, NULL
, buffer
, buffer
+ sizeof(buffer
));
61 ok(buffer_p
!= NULL
, "Full peer encode");
63 SOSFullPeerInfoRef fpi2
= SOSFullPeerInfoCreateFromDER(kCFAllocatorDefault
, NULL
, &buffer_p
, buffer
+ sizeof(buffer
));
67 skip("Full Peer Decode failed", 1, ok(fpi2
, "Full peer inflated"));
69 ok(CFEqual(fpi
, fpi2
), "Full peer inflate matches");
73 // Application ticket time.
74 CFDataRef cfpassword
= CFDataCreate(NULL
, (uint8_t *) "FooFooFoo", 10);
75 CFErrorRef error
= NULL
;
77 CFDataRef parameters
= SOSUserKeyCreateGenerateParameters(&error
);
78 ok(parameters
, "No parameters!");
79 ok(error
== NULL
, "Error: (%@)", error
);
82 SecKeyRef user_privkey
= SOSUserKeygen(cfpassword
, parameters
, &error
);
83 CFReleaseSafe(cfpassword
);
84 CFReleaseNull(parameters
);
85 SecKeyRef user_pubkey
= SecKeyCreatePublicFromPrivate(user_privkey
);
87 ok(SOSFullPeerInfoPromoteToApplication(fpi
, user_privkey
, &error
), "Promote to Application");
88 ok(SOSPeerInfoApplicationVerify(SOSFullPeerInfoGetPeerInfo(fpi
), user_pubkey
, &error
), "Promote to Application");
91 CFReleaseNull(user_privkey
);
92 CFReleaseNull(user_pubkey
);
94 CFReleaseNull(signingKey
);
101 int sc_30_peerinfo(int argc
, char *const *argv
)
103 plan_tests(kTestTestCount
);