iPXE
privkey.h
Go to the documentation of this file.
1 #ifndef _IPXE_PRIVKEY_H
2 #define _IPXE_PRIVKEY_H
3 
4 /** @file
5  *
6  * Private key
7  *
8  */
9 
10 FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
11 FILE_SECBOOT ( PERMITTED );
12 
13 #include <ipxe/asn1.h>
14 #include <ipxe/refcnt.h>
15 
16 /** A private key */
17 struct private_key {
18  /** Reference counter */
19  struct refcnt refcnt;
20  /** ASN.1 object builder */
22 };
23 
24 /**
25  * Get reference to private key
26  *
27  * @v key Private key
28  * @ret key Private key
29  */
30 static inline __attribute__ (( always_inline )) struct private_key *
32  ref_get ( &key->refcnt );
33  return key;
34 }
35 
36 /**
37  * Drop reference to private key
38  *
39  * @v key Private key
40  */
41 static inline __attribute__ (( always_inline )) void
43  ref_put ( &key->refcnt );
44 }
45 
46 /**
47  * Get private key ASN.1 cursor
48  *
49  * @v key Private key
50  * @ret cursor ASN.1 cursor
51  */
52 static inline __attribute__ (( always_inline )) struct asn1_cursor *
54  return asn1_built ( &key->builder );
55 }
56 
57 extern void privkey_free ( struct refcnt *refcnt );
58 
59 /**
60  * Initialise empty private key
61  *
62  */
63 static inline __attribute__ (( always_inline )) void
65  ref_init ( &key->refcnt, privkey_free );
66 }
67 
68 extern struct private_key private_key;
69 
70 #endif /* _IPXE_PRIVKEY_H */
#define __attribute__(x)
Definition: compiler.h:10
static void privkey_put(struct private_key *key)
Drop reference to private key.
Definition: privkey.h:42
#define ref_init(refcnt, free)
Initialise a reference counter.
Definition: refcnt.h:65
static struct private_key * privkey_get(struct private_key *key)
Get reference to private key.
Definition: privkey.h:31
A reference counter.
Definition: refcnt.h:27
static struct asn1_cursor * privkey_cursor(struct private_key *key)
Get private key ASN.1 cursor.
Definition: privkey.h:53
struct asn1_builder builder
ASN.1 object builder.
Definition: privkey.h:21
ASN.1 encoding.
void privkey_free(struct refcnt *refcnt)
Free private key.
Definition: privkey.c:95
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
#define ref_get(refcnt)
Get additional reference to object.
Definition: refcnt.h:93
An ASN.1 object builder.
Definition: asn1.h:29
Reference counting.
A private key.
Definition: privkey.h:17
static struct asn1_cursor * asn1_built(struct asn1_builder *builder)
Get cursor for built object.
Definition: asn1.h:492
static void privkey_init(struct private_key *key)
Initialise empty private key.
Definition: privkey.h:64
FILE_SECBOOT(PERMITTED)
An ASN.1 object cursor.
Definition: asn1.h:21
union @391 key
Sense key.
Definition: scsi.h:18
#define ref_put(refcnt)
Drop reference to object.
Definition: refcnt.h:107