VirtualBox

source: vbox/trunk/include/iprt/crypto/rsa.h@ 63687

Last change on this file since 63687 was 62474, checked in by vboxsync, 8 years ago

(C) 2016

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.2 KB
Line 
1/** @file
2 * IPRT - Crypto - RSA Public Key Cryptosystem .
3 */
4
5/*
6 * Copyright (C) 2006-2016 Oracle Corporation
7 *
8 * This file is part of VirtualBox Open Source Edition (OSE), as
9 * available from http://www.virtualbox.org. This file is free software;
10 * you can redistribute it and/or modify it under the terms of the GNU
11 * General Public License (GPL) as published by the Free Software
12 * Foundation, in version 2 as it comes in the "COPYING" file of the
13 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
15 *
16 * The contents of this file may alternatively be used under the terms
17 * of the Common Development and Distribution License Version 1.0
18 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
19 * VirtualBox OSE distribution, in which case the provisions of the
20 * CDDL are applicable instead of those of the GPL.
21 *
22 * You may elect to license modified versions of this file under the
23 * terms and conditions of either the GPL or the CDDL or both.
24 */
25
26#ifndef ___iprt_crypto_spc_h
27#define ___iprt_crypto_spc_h
28
29#include <iprt/asn1.h>
30#include <iprt/crypto/x509.h>
31#include <iprt/crypto/pkcs7.h>
32#include <iprt/md5.h>
33#include <iprt/sha.h>
34
35
36RT_C_DECLS_BEGIN
37
38/** @defgroup grp_rt_cr_rsa RTCrRsa - RSA Public Key Cryptosystem
39 * @ingroup grp_rt_crypto
40 * @{
41 */
42
43/**
44 * RSA public key - ASN.1 IPRT representation.
45 */
46typedef struct RTCRRSAPUBLICKEY
47{
48 /** Sequence core for the structure. */
49 RTASN1SEQUENCECORE SeqCore;
50 /** The modulus (n). */
51 RTASN1INTEGER Modulus;
52 /** The public exponent (e). */
53 RTASN1INTEGER PublicExponent;
54} RTCRRSAPUBLICKEY;
55/** Pointer to the ASN.1 IPRT representation of an RSA public key. */
56typedef RTCRRSAPUBLICKEY *PRTCRRSAPUBLICKEY;
57/** Pointer to the const ASN.1 IPRT representation of an RSA public key. */
58typedef RTCRRSAPUBLICKEY const *PCRTCRRSAPUBLICKEY;
59RTASN1TYPE_STANDARD_PROTOTYPES(RTCRRSAPUBLICKEY, RTDECL, RTCrRsaPublicKey, SeqCore.Asn1Core);
60
61
62/**
63 * RSA other prime info (ASN.1 IPRT representation).
64 */
65typedef struct RTCRRSAOTHERPRIMEINFO
66{
67 /** Sequence core for the structure. */
68 RTASN1SEQUENCECORE SeqCore;
69 /** The prime (ri). */
70 RTASN1INTEGER Prime;
71 /** The exponent (di). */
72 RTASN1INTEGER Exponent;
73 /** The coefficient (ti). */
74 RTASN1INTEGER Coefficient;
75} RTCRRSAOTHERPRIMEINFO;
76/** Pointer to the ASN.1 IPRT representation of RSA other prime info. */
77typedef RTCRRSAOTHERPRIMEINFO *PRTCRRSAOTHERPRIMEINFO;
78/** Pointer to the const ASN.1 IPRT representation of RSA other prime info. */
79typedef RTCRRSAOTHERPRIMEINFO const *PCRTCRRSAOTHERPRIMEINFO;
80RTASN1TYPE_STANDARD_PROTOTYPES(RTCRRSAOTHERPRIMEINFO, RTDECL, RTCrRsaOtherPrimeInfo, SeqCore.Asn1Core);
81RTASN1_IMPL_GEN_SEQ_OF_TYPEDEFS_AND_PROTOS(RTCRRSAOTHERPRIMEINFOS, RTCRRSAOTHERPRIMEINFO, RTDECL, RTCrRsaOtherPrimeInfos);
82
83/**
84 * RSA private key - ASN.1 IPRT representation.
85 */
86typedef struct RTCRRSAPRIVATEKEY
87{
88 /** Sequence core for the structure. */
89 RTASN1SEQUENCECORE SeqCore;
90 /** Key version number. */
91 RTASN1INTEGER Version;
92 /** The modulus (n). */
93 RTASN1INTEGER Modulus;
94 /** The public exponent (e). */
95 RTASN1INTEGER PublicExponent;
96 /** The private exponent (d). */
97 RTASN1INTEGER PrivateExponent;
98 /** The first prime factor (p) of the modulus (n). */
99 RTASN1INTEGER Prime1;
100 /** The second prime factor (q) of the modulus (n). */
101 RTASN1INTEGER Prime2;
102 /** The first exponent (d mod (p-1)). */
103 RTASN1INTEGER Exponent1;
104 /** The second exponent (d mod (q-1)). */
105 RTASN1INTEGER Exponent2;
106 /** The coefficient ((inverse of q) mod p). */
107 RTASN1INTEGER Coefficient;
108 /** Optional other prime information (version must be 'multi' if present). */
109 RTCRRSAOTHERPRIMEINFOS OtherPrimeInfos;
110} RTCRRSAPRIVATEKEY;
111/** Pointer to the ASN.1 IPRT representation of an RSA private key. */
112typedef RTCRRSAPRIVATEKEY *PRTCRRSAPRIVATEKEY;
113/** Pointer to the const ASN.1 IPRT representation of an RSA private key. */
114typedef RTCRRSAPRIVATEKEY const *PCRTCRRSAPRIVATEKEY;
115RTASN1TYPE_STANDARD_PROTOTYPES(RTCRRSAPRIVATEKEY, RTDECL, RTCrRsaPrivateKey, SeqCore.Asn1Core);
116
117/** @name RSA Private Key Versions
118 * @{ */
119#define RTCRRSAPRIVATEKEY_VERSION_TWO_PRIME 0
120#define RTCRRSAPRIVATEKEY_VERSION_MULTI 1
121/** @} */
122
123
124/**
125 * RSA DigestInfo used by the EMSA-PKCS1-v1_5 encoding method.
126 */
127typedef struct RTCRRSADIGESTINFO
128{
129 /** Sequence core for the structure. */
130 RTASN1SEQUENCECORE SeqCore;
131 /** The digest algorithm. */
132 RTCRX509ALGORITHMIDENTIFIER DigestAlgorithm;
133 /** The digest. */
134 RTASN1OCTETSTRING Digest;
135} RTCRRSADIGESTINFO;
136/** Pointer to the ASN.1 IPRT representation of RSA digest info. */
137typedef RTCRRSADIGESTINFO *PRTCRRSADIGESTINFO;
138/** Pointer to the const ASN.1 IPRT representation of RSA digest info. */
139typedef RTCRRSADIGESTINFO const *PCRTCRRSADIGESTINFO;
140RTASN1TYPE_STANDARD_PROTOTYPES(RTCRRSADIGESTINFO, RTDECL, RTCrRsaDigestInfo, SeqCore.Asn1Core);
141
142/** @} */
143
144RT_C_DECLS_END
145
146#endif
147
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette