blob: 0d2824dd60f1b91e62cb9c63be53f515a61966ca [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/*
* XSEC
*
* DSIGConstants := Definitions of various DSIG constants (mainly strings)
*
* Author(s): Berin Lautenbach
*
* $Id$
*
*/
#ifndef DSIGCONSTANTS_HEADER
#define DSIGCONSTANTS_HEADER
#include <xsec/enc/XSECCryptoHash.hpp>
#include <xsec/utils/XSECSafeBuffer.hpp>
// Xerces
#include <xercesc/util/XMLString.hpp>
XSEC_USING_XERCES(XMLString);
// Name Spaces
#define URI_ID_DSIG "http://www.w3.org/2000/09/xmldsig#"
#define URI_ID_DSIG11 "http://www.w3.org/2009/xmldsig11#"
#define URI_ID_EC "http://www.w3.org/2001/10/xml-exc-c14n#"
// Also used as algorithm ID for XPATH_FILTER
#define URI_ID_XPF "http://www.w3.org/2002/06/xmldsig-filter2"
#define URI_ID_XENC "http://www.w3.org/2001/04/xmlenc#"
#define URI_ID_XENC11 "http://www.w3.org/2009/xmlenc11#"
// Hashing Algorithms
#define URI_ID_SHA1 "http://www.w3.org/2000/09/xmldsig#sha1"
#define URI_ID_MD5 "http://www.w3.org/2001/04/xmldsig-more#md5"
#define URI_ID_SHA224 "http://www.w3.org/2001/04/xmldsig-more#sha224"
#define URI_ID_SHA256 "http://www.w3.org/2001/04/xmlenc#sha256"
#define URI_ID_SHA384 "http://www.w3.org/2001/04/xmldsig-more#sha384"
#define URI_ID_SHA512 "http://www.w3.org/2001/04/xmlenc#sha512"
// Encryption Algorithms
#define URI_ID_3DES_CBC "http://www.w3.org/2001/04/xmlenc#tripledes-cbc"
#define URI_ID_AES128_CBC "http://www.w3.org/2001/04/xmlenc#aes128-cbc"
#define URI_ID_AES192_CBC "http://www.w3.org/2001/04/xmlenc#aes192-cbc"
#define URI_ID_AES256_CBC "http://www.w3.org/2001/04/xmlenc#aes256-cbc"
#define URI_ID_AES128_GCM "http://www.w3.org/2009/xmlenc11#aes128-gcm"
#define URI_ID_AES192_GCM "http://www.w3.org/2009/xmlenc11#aes192-gcm"
#define URI_ID_AES256_GCM "http://www.w3.org/2009/xmlenc11#aes256-gcm"
// Key Wrap Algorithm
#define URI_ID_KW_3DES "http://www.w3.org/2001/04/xmlenc#kw-tripledes"
#define URI_ID_KW_AES128 "http://www.w3.org/2001/04/xmlenc#kw-aes128"
#define URI_ID_KW_AES192 "http://www.w3.org/2001/04/xmlenc#kw-aes192"
#define URI_ID_KW_AES256 "http://www.w3.org/2001/04/xmlenc#kw-aes256"
#define URI_ID_KW_AES128_PAD "http://www.w3.org/2009/xmlenc11#kw-aes-128-pad"
#define URI_ID_KW_AES192_PAD "http://www.w3.org/2009/xmlenc11#kw-aes-192-pad"
#define URI_ID_KW_AES256_PAD "http://www.w3.org/2009/xmlenc11#kw-aes-256-pad"
// Key Transport algorithms
#define URI_ID_RSA_1_5 "http://www.w3.org/2001/04/xmlenc#rsa-1_5"
#define URI_ID_RSA_OAEP_MGFP1 "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"
#define URI_ID_RSA_OAEP "http://www.w3.org/2009/xmlenc11#rsa-oaep"
// OAEP MGFs
#define URI_ID_MGF1_BASE "http://www.w3.org/2009/xmlenc11#mgf1"
#define URI_ID_MGF1_SHA1 "http://www.w3.org/2009/xmlenc11#mgf1sha1"
#define URI_ID_MGF1_SHA224 "http://www.w3.org/2009/xmlenc11#mgf1sha224"
#define URI_ID_MGF1_SHA256 "http://www.w3.org/2009/xmlenc11#mgf1sha256"
#define URI_ID_MGF1_SHA384 "http://www.w3.org/2009/xmlenc11#mgf1sha384"
#define URI_ID_MGF1_SHA512 "http://www.w3.org/2009/xmlenc11#mgf1sha512"
// Transforms
#define URI_ID_BASE64 "http://www.w3.org/2000/09/xmldsig#base64"
#define URI_ID_XPATH "http://www.w3.org/TR/1999/REC-xpath-19991116"
#define URI_ID_XSLT "http://www.w3.org/TR/1999/REC-xslt-19991116"
#define URI_ID_ENVELOPE "http://www.w3.org/2000/09/xmldsig#enveloped-signature"
#define URI_ID_C14N_NOC "http://www.w3.org/TR/2001/REC-xml-c14n-20010315"
#define URI_ID_C14N_COM "http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"
#define URI_ID_C14N11_NOC "http://www.w3.org/2006/12/xml-c14n11"
#define URI_ID_C14N11_COM "http://www.w3.org/2006/12/xml-c14n11#WithComments"
#define URI_ID_EXC_C14N_NOC "http://www.w3.org/2001/10/xml-exc-c14n#"
#define URI_ID_EXC_C14N_COM "http://www.w3.org/2001/10/xml-exc-c14n#WithComments"
#define XPATH_EXPR_ENVELOPE "count(ancestor-or-self::dsig:Signature | \
here()/ancestor::dsig:Signature[1]) > \
count(ancestor-or-self::dsig:Signature)"
// Signature Algorithms
#define URI_ID_SIG_BASE "http://www.w3.org/2000/09/xmldsig#"
#define URI_ID_SIG_BASEMORE "http://www.w3.org/2001/04/xmldsig-more#"
#define URI_ID_SIG_BASE11 "http://www.w3.org/2009/xmldsig11#"
#define URI_ID_SIG_DSA "dsa"
#define URI_ID_SIG_ECDSA "ecdsa"
#define URI_ID_SIG_HMAC "hmac"
#define URI_ID_SIG_SHA1 "sha1"
#define URI_ID_SIG_SHA224 "sha224"
#define URI_ID_SIG_SHA256 "sha256"
#define URI_ID_SIG_SHA384 "sha384"
#define URI_ID_SIG_SHA512 "sha512"
#define URI_ID_SIG_RSA "rsa"
#define URI_ID_SIG_MD5 "md5"
#define URI_ID_DSA_SHA1 "http://www.w3.org/2000/09/xmldsig#dsa-sha1"
#define URI_ID_DSA_SHA256 "http://www.w3.org/2009/xmldsig11#dsa-sha256"
#define URI_ID_HMAC_SHA1 "http://www.w3.org/2000/09/xmldsig#hmac-sha1"
#define URI_ID_HMAC_SHA224 "http://www.w3.org/2001/04/xmldsig-more#hmac-sha224"
#define URI_ID_HMAC_SHA256 "http://www.w3.org/2001/04/xmldsig-more#hmac-sha256"
#define URI_ID_HMAC_SHA384 "http://www.w3.org/2001/04/xmldsig-more#hmac-sha384"
#define URI_ID_HMAC_SHA512 "http://www.w3.org/2001/04/xmldsig-more#hmac-sha512"
#define URI_ID_RSA_SHA1 "http://www.w3.org/2000/09/xmldsig#rsa-sha1"
#define URI_ID_RSA_SHA224 "http://www.w3.org/2001/04/xmldsig-more#rsa-sha224"
#define URI_ID_RSA_SHA256 "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"
#define URI_ID_RSA_SHA384 "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"
#define URI_ID_RSA_SHA512 "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"
#define URI_ID_RSA_MD5 "http://www.w3.org/2001/04/xmldsig-more#rsa-md5"
#define URI_ID_ECDSA_SHA1 "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"
#define URI_ID_ECDSA_SHA224 "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha224"
#define URI_ID_ECDSA_SHA256 "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256"
#define URI_ID_ECDSA_SHA384 "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha384"
#define URI_ID_ECDSA_SHA512 "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha512"
// Encryption defines
#define URI_ID_XENC_ELEMENT "http://www.w3.org/2001/04/xmlenc#Element"
#define URI_ID_XENC_CONTENT "http://www.w3.org/2001/04/xmlenc#Content"
// General
#define URI_ID_XMLNS "http://www.w3.org/2000/xmlns/"
#define URI_ID_MANIFEST "http://www.w3.org/2000/09/xmldsig#Manifest"
#define URI_ID_RAWX509 "http://www.w3.org/2000/09/xmldsig#rawX509Certificate"
// Internal Crypto Providers
#define PROV_OPENSSL "OpenSSL Provider"
#define PROV_WINCAPI "WinCAPI Provider"
#define PROV_NSS "NSS Provider"
// --------------------------------------------------------------------------------
// Constant Strings Class
// --------------------------------------------------------------------------------
class XSEC_EXPORT DSIGConstants {
public:
// General strings
static const XMLCh * s_unicodeStrEmpty; // ""
static const XMLCh * s_unicodeStrNL; // "\n"
static const XMLCh * s_unicodeStrXmlns; // "xmlns"
static const XMLCh * s_unicodeStrURI; // "URI"
// DSIG Element Strings
static const XMLCh * s_unicodeStrAlgorithm;
// URI_IDs
static const XMLCh * s_unicodeStrURIDSIG;
static const XMLCh * s_unicodeStrURIDSIG11;
static const XMLCh * s_unicodeStrURIEC;
static const XMLCh * s_unicodeStrURIXPF;
static const XMLCh * s_unicodeStrURIXENC;
static const XMLCh * s_unicodeStrURIXENC11;
static const XMLCh * s_unicodeStrURISIGBASE;
static const XMLCh * s_unicodeStrURISIGBASEMORE;
static const XMLCh * s_unicodeStrURISIGBASE11;
static const XMLCh * s_unicodeStrURIRawX509;
static const XMLCh * s_unicodeStrURISHA1;
static const XMLCh * s_unicodeStrURISHA224;
static const XMLCh * s_unicodeStrURISHA256;
static const XMLCh * s_unicodeStrURISHA384;
static const XMLCh * s_unicodeStrURISHA512;
static const XMLCh * s_unicodeStrURIMD5; // Not recommended
static const XMLCh * s_unicodeStrURIBASE64;
static const XMLCh * s_unicodeStrURIXPATH;
static const XMLCh * s_unicodeStrURIXSLT;
static const XMLCh * s_unicodeStrURIENVELOPE;
static const XMLCh * s_unicodeStrURIC14N_NOC;
static const XMLCh * s_unicodeStrURIC14N_COM;
static const XMLCh * s_unicodeStrURIC14N11_NOC;
static const XMLCh * s_unicodeStrURIC14N11_COM;
static const XMLCh * s_unicodeStrURIEXC_C14N_NOC;
static const XMLCh * s_unicodeStrURIEXC_C14N_COM;
static const XMLCh * s_unicodeStrURIDSA_SHA1;
static const XMLCh * s_unicodeStrURIDSA_SHA256;
static const XMLCh * s_unicodeStrURIRSA_MD5;
static const XMLCh * s_unicodeStrURIRSA_SHA1;
static const XMLCh * s_unicodeStrURIRSA_SHA224;
static const XMLCh * s_unicodeStrURIRSA_SHA256;
static const XMLCh * s_unicodeStrURIRSA_SHA384;
static const XMLCh * s_unicodeStrURIRSA_SHA512;
static const XMLCh * s_unicodeStrURIECDSA_SHA1;
static const XMLCh * s_unicodeStrURIECDSA_SHA224;
static const XMLCh * s_unicodeStrURIECDSA_SHA256;
static const XMLCh * s_unicodeStrURIECDSA_SHA384;
static const XMLCh * s_unicodeStrURIECDSA_SHA512;
static const XMLCh * s_unicodeStrURIHMAC_SHA1;
static const XMLCh * s_unicodeStrURIHMAC_SHA224;
static const XMLCh * s_unicodeStrURIHMAC_SHA256;
static const XMLCh * s_unicodeStrURIHMAC_SHA384;
static const XMLCh * s_unicodeStrURIHMAC_SHA512;
static const XMLCh * s_unicodeStrURIXMLNS;
static const XMLCh * s_unicodeStrURIMANIFEST;
// URIs for Encryption
static const XMLCh * s_unicodeStrURI3DES_CBC;
static const XMLCh * s_unicodeStrURIAES128_CBC;
static const XMLCh * s_unicodeStrURIAES192_CBC;
static const XMLCh * s_unicodeStrURIAES256_CBC;
static const XMLCh * s_unicodeStrURIAES128_GCM;
static const XMLCh * s_unicodeStrURIAES192_GCM;
static const XMLCh * s_unicodeStrURIAES256_GCM;
static const XMLCh * s_unicodeStrURIKW_3DES;
static const XMLCh * s_unicodeStrURIKW_AES128;
static const XMLCh * s_unicodeStrURIKW_AES192;
static const XMLCh * s_unicodeStrURIKW_AES256;
static const XMLCh * s_unicodeStrURIKW_AES128_PAD;
static const XMLCh * s_unicodeStrURIKW_AES192_PAD;
static const XMLCh * s_unicodeStrURIKW_AES256_PAD;
static const XMLCh * s_unicodeStrURIRSA_1_5;
static const XMLCh * s_unicodeStrURIRSA_OAEP_MGFP1;
static const XMLCh * s_unicodeStrURIRSA_OAEP;
static const XMLCh * s_unicodeStrURIMGF1_BASE;
static const XMLCh * s_unicodeStrURIMGF1_SHA1;
static const XMLCh * s_unicodeStrURIMGF1_SHA224;
static const XMLCh * s_unicodeStrURIMGF1_SHA256;
static const XMLCh * s_unicodeStrURIMGF1_SHA384;
static const XMLCh * s_unicodeStrURIMGF1_SHA512;
static const XMLCh * s_unicodeStrURIXENC_ELEMENT;
static const XMLCh * s_unicodeStrURIXENC_CONTENT;
// Internal Crypto Providers
static const XMLCh * s_unicodeStrPROVOpenSSL;
static const XMLCh * s_unicodeStrPROVWinCAPI;
static const XMLCh * s_unicodeStrPROVNSS;
DSIGConstants();
static void create();
static void destroy();
};
#endif /* DSIGCONSTANTS_HEADER */