Guardtime KSI c SDK
signature.h
Go to the documentation of this file.
1 /*
2  * Copyright 2013-2015 Guardtime, Inc.
3  *
4  * This file is part of the Guardtime client SDK.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License").
7  * You may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  * http://www.apache.org/licenses/LICENSE-2.0
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES, CONDITIONS, OR OTHER LICENSES OF ANY KIND, either
13  * express or implied. See the License for the specific language governing
14  * permissions and limitations under the License.
15  * "Guardtime" and "KSI" are trademarks or registered trademarks of
16  * Guardtime, Inc., and no license to trademarks is granted; Guardtime
17  * reserves and retains all trademark rights.
18  */
19 
20 #ifndef KSI_SIGNATURE_H_
21 #define KSI_SIGNATURE_H_
22 
23 #include "types.h"
24 #include "verification.h"
25 #include "hashchain.h"
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
37 #include "signature_helper.h"
38 
43  void KSI_Signature_free(KSI_Signature *signature);
44 
52  int KSI_Signature_clone(const KSI_Signature *sig, KSI_Signature **clone);
53 
69  int KSI_Signature_parseWithPolicy(KSI_CTX *ctx, const unsigned char *raw, size_t raw_len, const KSI_Policy *policy, KSI_VerificationContext *context, KSI_Signature **sig);
70 
71 #define KSI_Signature_parse(ctx, raw, raw_len, sig) KSI_Signature_parseWithPolicy(ctx, raw, raw_len, KSI_VERIFICATION_POLICY_INTERNAL, NULL, sig)
72 
86  int KSI_Signature_serialize(const KSI_Signature *sig, unsigned char **raw, size_t *raw_len);
87 
102  int KSI_Signature_signAggregatedWithPolicy(KSI_CTX *ctx, KSI_DataHash *rootHash, KSI_uint64_t rootLevel, const KSI_Policy *policy, KSI_VerificationContext *context, KSI_Signature **signature);
103 
104 #define KSI_Signature_signAggregated(ctx, rootHash, rootLevel, signature) KSI_Signature_signAggregatedWithPolicy(ctx, rootHash, rootLevel, KSI_VERIFICATION_POLICY_INTERNAL, NULL, signature)
105 
117 
134  int KSI_Signature_extendWithPolicy(const KSI_Signature *signature, KSI_CTX *ctx, const KSI_PublicationRecord *pubRec, const KSI_Policy *policy, KSI_VerificationContext *context, KSI_Signature **extended);
135 
136 #define KSI_Signature_extend(signature, ctx, pubRec, extended) KSI_Signature_extendWithPolicy(signature, ctx, pubRec, KSI_VERIFICATION_POLICY_INTERNAL, NULL, extended)
137 
153  int KSI_Signature_extendToWithPolicy(const KSI_Signature *signature, KSI_CTX *ctx, KSI_Integer *to, const KSI_Policy *policy, KSI_VerificationContext *context, KSI_Signature **extended);
154 
155 #define KSI_Signature_extendTo(signature, ctx, to, extended) KSI_Signature_extendToWithPolicy(signature, ctx, to, KSI_VERIFICATION_POLICY_INTERNAL, NULL, extended)
156 
168 
178  int KSI_Signature_getSigningTime(const KSI_Signature *sig, KSI_Integer **signTime);
179 
191 
202 
211  int KSI_Signature_getCalendarAuthRec (const KSI_Signature *sig, KSI_CalendarAuthRec **calendarAuthRec);
212 
213  int KSI_createSignRequest(KSI_CTX *ctx, KSI_DataHash *hsh, int lvl, KSI_AggregationReq **request);
214  int KSI_createExtendRequest(KSI_CTX *ctx, KSI_Integer *start, KSI_Integer *end, KSI_ExtendReq **request);
215 
224 
238  int KSI_Signature_getPublicationInfo(const KSI_Signature *sig, KSI_DataHash **pubHsh, KSI_Utf8String **pubStr, time_t *pubDate, KSI_LIST(KSI_Utf8String) **pubRefs, KSI_LIST(KSI_Utf8String) **repUrls);
239 
241 
245 #ifdef __cplusplus
246 }
247 #endif
248 
249 #endif /* KSI_SIGNATURE_H_ */
#define KSI_uint64_t
Definition: types_base.h:105
int KSI_Signature_clone(const KSI_Signature *sig, KSI_Signature **clone)
struct KSI_Integer_st KSI_Integer
Definition: types_base.h:140
int KSI_Signature_getCalendarAuthRec(const KSI_Signature *sig, KSI_CalendarAuthRec **calendarAuthRec)
int KSI_createExtendRequest(KSI_CTX *ctx, KSI_Integer *start, KSI_Integer *end, KSI_ExtendReq **request)
int KSI_Signature_getDocumentHash(const KSI_Signature *sig, KSI_DataHash **hsh)
struct KSI_ExtendReq_st KSI_ExtendReq
Definition: types.h:54
void KSI_Signature_free(KSI_Signature *signature)
struct KSI_PublicationRecord_st KSI_PublicationRecord
Definition: types.h:60
#define KSI_DEFINE_REF(typ)
Definition: types_base.h:56
struct KSI_DataHash_st KSI_DataHash
Definition: hash.h:52
struct KSI_AggregationReq_st KSI_AggregationReq
Definition: types.h:51
struct KSI_CalendarAuthRec_st KSI_CalendarAuthRec
Definition: types.h:137
int KSI_Signature_extendWithPolicy(const KSI_Signature *signature, KSI_CTX *ctx, const KSI_PublicationRecord *pubRec, const KSI_Policy *policy, KSI_VerificationContext *context, KSI_Signature **extended)
int KSI_Signature_getPublicationRecord(const KSI_Signature *sig, KSI_PublicationRecord **pubRec)
struct KSI_Signature_st KSI_Signature
Definition: types.h:67
int KSI_Signature_getAggregationHashChainIdentity(const KSI_Signature *sig, KSI_HashChainLinkIdentityList **identity)
int KSI_Signature_serialize(const KSI_Signature *sig, unsigned char **raw, size_t *raw_len)
int KSI_createSignRequest(KSI_CTX *ctx, KSI_DataHash *hsh, int lvl, KSI_AggregationReq **request)
Definition: policy.h:31
int KSI_Signature_parseWithPolicy(KSI_CTX *ctx, const unsigned char *raw, size_t raw_len, const KSI_Policy *policy, KSI_VerificationContext *context, KSI_Signature **sig)
struct KSI_Policy_st KSI_Policy
Definition: types.h:70
struct KSI_CTX_st KSI_CTX
Definition: types_base.h:124
struct KSI_AggregationHashChain_st KSI_AggregationHashChain
Definition: types.h:132
int KSI_Signature_getSigningTime(const KSI_Signature *sig, KSI_Integer **signTime)
int KSI_Signature_extendToWithPolicy(const KSI_Signature *signature, KSI_CTX *ctx, KSI_Integer *to, const KSI_Policy *policy, KSI_VerificationContext *context, KSI_Signature **extended)
int KSI_Signature_getPublicationInfo(const KSI_Signature *sig, KSI_DataHash **pubHsh, KSI_Utf8String **pubStr, time_t *pubDate, KSI_LIST(KSI_Utf8String)**pubRefs, KSI_LIST(KSI_Utf8String)**repUrls)
struct KSI_Utf8String_st KSI_Utf8String
Definition: types_base.h:150
Definition: types.h:172
int KSI_Signature_signAggregatedWithPolicy(KSI_CTX *ctx, KSI_DataHash *rootHash, KSI_uint64_t rootLevel, const KSI_Policy *policy, KSI_VerificationContext *context, KSI_Signature **signature)
int KSI_Signature_signAggregationChain(KSI_CTX *ctx, int level, KSI_AggregationHashChain *chn, KSI_Signature **signature)
int KSI_Signature_replacePublicationRecord(KSI_Signature *sig, KSI_PublicationRecord *pubRec)
#define KSI_LIST(type)
Definition: list.h:44