os/security/cryptomgmtlibs/cryptotokenfw/source/ctframework/KeyUsage.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
/*
sl@0
     2
* Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     3
* All rights reserved.
sl@0
     4
* This component and the accompanying materials are made available
sl@0
     5
* under the terms of the License "Eclipse Public License v1.0"
sl@0
     6
* which accompanies this distribution, and is available
sl@0
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     8
*
sl@0
     9
* Initial Contributors:
sl@0
    10
* Nokia Corporation - initial contribution.
sl@0
    11
*
sl@0
    12
* Contributors:
sl@0
    13
*
sl@0
    14
* Description: 
sl@0
    15
*
sl@0
    16
*/
sl@0
    17
sl@0
    18
sl@0
    19
#include "securitydefs.h"
sl@0
    20
sl@0
    21
////////////////////////////////////////////////////////////////////////////////
sl@0
    22
// TKeyUsagePKCS15 & TKeyUsageX509
sl@0
    23
////////////////////////////////////////////////////////////////////////////////
sl@0
    24
sl@0
    25
//	x509									PKCS15 Public	PKCS15 Private
sl@0
    26
sl@0
    27
//	DataEncipherment						Encrypt			Decrypt
sl@0
    28
//	DigitalSignature, keyCertSign, cRLSign	Verify			Sign
sl@0
    29
//	DigitalSignature, keyCertSign, cRLSign	VerifyRecover	SignRecover
sl@0
    30
//	KeyAgreement							Derive			Derive
sl@0
    31
//	KeyEncipherment							Wrap			Unwrap
sl@0
    32
//	NonRepudiation							NonRepudiation	NonRepudiation
sl@0
    33
sl@0
    34
EXPORT_C TKeyUsagePKCS15 KeyUsageX509ToPKCS15Private(TKeyUsageX509 aUsage)
sl@0
    35
	{
sl@0
    36
	TKeyUsagePKCS15 result = EPKCS15UsageNone;
sl@0
    37
sl@0
    38
	if (EX509UsageAll == aUsage)
sl@0
    39
		{
sl@0
    40
		result = EPKCS15UsageAll;
sl@0
    41
		}
sl@0
    42
	else
sl@0
    43
		{
sl@0
    44
		if (aUsage & EX509UsageDataEncipherment)
sl@0
    45
			{
sl@0
    46
			result |= EPKCS15UsageDecrypt;
sl@0
    47
			}
sl@0
    48
		if (aUsage & (EX509UsageDigitalSignature | EX509UsageKeyCertSign | EX509UsageCRLSign))
sl@0
    49
			{
sl@0
    50
			result |= EPKCS15UsageSign | EPKCS15UsageSignRecover;
sl@0
    51
			}
sl@0
    52
		if (aUsage & EX509UsageKeyAgreement)
sl@0
    53
			{
sl@0
    54
			result |= EPKCS15UsageDerive;
sl@0
    55
			}
sl@0
    56
		if (aUsage & EX509UsageKeyEncipherment)
sl@0
    57
			{
sl@0
    58
			result |= EPKCS15UsageUnwrap;
sl@0
    59
			}
sl@0
    60
		if (aUsage & EX509UsageNonRepudiation)
sl@0
    61
			{//	This shouldn't really happen, ENonRepudiation should be sole usage
sl@0
    62
			result |= EPKCS15UsageNonRepudiation;
sl@0
    63
			}
sl@0
    64
		}
sl@0
    65
	
sl@0
    66
	return result;
sl@0
    67
	}
sl@0
    68
sl@0
    69
EXPORT_C TKeyUsagePKCS15 KeyUsageX509ToPKCS15Public(TKeyUsageX509 aUsage)
sl@0
    70
	{
sl@0
    71
	TKeyUsagePKCS15 result = EPKCS15UsageNone;
sl@0
    72
sl@0
    73
	if (EX509UsageAll == aUsage)
sl@0
    74
		{
sl@0
    75
		result = EPKCS15UsageAll;
sl@0
    76
		}
sl@0
    77
	else
sl@0
    78
		{
sl@0
    79
		if (aUsage & EX509UsageDataEncipherment)
sl@0
    80
			{
sl@0
    81
			result |= EPKCS15UsageEncrypt;
sl@0
    82
			}
sl@0
    83
		if (aUsage & (EX509UsageDigitalSignature | EX509UsageKeyCertSign | EX509UsageCRLSign))
sl@0
    84
			{
sl@0
    85
			result |= EPKCS15UsageVerify | EPKCS15UsageVerifyRecover;
sl@0
    86
			}
sl@0
    87
		if (aUsage & EX509UsageKeyAgreement)
sl@0
    88
			{
sl@0
    89
			result |= EPKCS15UsageDerive;
sl@0
    90
			}
sl@0
    91
		if (aUsage & EX509UsageKeyEncipherment)
sl@0
    92
			{
sl@0
    93
			result |= EPKCS15UsageWrap;
sl@0
    94
			}
sl@0
    95
		if (aUsage & EX509UsageNonRepudiation)
sl@0
    96
			{//	This shouldn't really happen, ENonRepudiation should be sole usage
sl@0
    97
			result |= EPKCS15UsageNonRepudiation;
sl@0
    98
			}
sl@0
    99
		}
sl@0
   100
	
sl@0
   101
	return result;
sl@0
   102
	}
sl@0
   103
sl@0
   104
EXPORT_C TKeyUsageX509 KeyUsagePKCS15ToX509(TKeyUsagePKCS15 aUsage)
sl@0
   105
	{
sl@0
   106
	TKeyUsageX509 result = EX509UsageNone;
sl@0
   107
sl@0
   108
	if (EPKCS15UsageAll == aUsage)
sl@0
   109
		{
sl@0
   110
		result = EX509UsageAll;
sl@0
   111
		}
sl@0
   112
	else
sl@0
   113
		{
sl@0
   114
		if (aUsage & (EPKCS15UsageEncrypt | EPKCS15UsageDecrypt))
sl@0
   115
			{
sl@0
   116
			result |= EX509UsageDataEncipherment;
sl@0
   117
			}
sl@0
   118
		if (aUsage & (EPKCS15UsageVerify | EPKCS15UsageSign | EPKCS15UsageVerifyRecover | EPKCS15UsageSignRecover))
sl@0
   119
			{
sl@0
   120
			result |= EX509UsageDigitalSignature | EX509UsageKeyCertSign | EX509UsageCRLSign;
sl@0
   121
			}
sl@0
   122
		if (aUsage & EPKCS15UsageDerive)
sl@0
   123
			{
sl@0
   124
			result |= EX509UsageKeyAgreement;
sl@0
   125
			}
sl@0
   126
		if (aUsage & (EPKCS15UsageWrap | EPKCS15UsageUnwrap))
sl@0
   127
			{
sl@0
   128
			result |= EX509UsageKeyEncipherment;
sl@0
   129
			}
sl@0
   130
		if (aUsage & EPKCS15UsageNonRepudiation)
sl@0
   131
			{
sl@0
   132
			result |= EX509UsageNonRepudiation;
sl@0
   133
			}
sl@0
   134
		}
sl@0
   135
	
sl@0
   136
	return result;
sl@0
   137
	}