| 251 | } |
| 252 | |
| 253 | static bool GetBinaryDataAsPEM( char *pchPEMData, uint32_t cubPEMData, uint32_t *pcubPEMData, const void *pBinaryData, uint32 cbBinaryData, const char *pchPrefix, const char *pchSuffix ) |
| 254 | { |
| 255 | uint32_t uRequiredBytes = V_strlen( pchPrefix ) + 2 + V_strlen( pchSuffix ) + 2 + CCrypto::Base64EncodeMaxOutput( cbBinaryData, "\r\n" ); |
| 256 | if ( pcubPEMData ) |
| 257 | *pcubPEMData = uRequiredBytes; |
| 258 | |
| 259 | if ( pchPEMData ) |
| 260 | { |
| 261 | if ( cubPEMData < uRequiredBytes ) |
| 262 | return false; |
| 263 | |
| 264 | V_strncpy( pchPEMData, pchPrefix, cubPEMData ); |
| 265 | V_strncat( pchPEMData, "\r\n", cubPEMData ); |
| 266 | uint32_t uRemainingBytes = cubPEMData - V_strlen( pchPEMData ); |
| 267 | |
| 268 | if ( !CCrypto::Base64Encode( pBinaryData, cbBinaryData, pchPEMData + V_strlen( pchPEMData ), &uRemainingBytes, "\r\n" ) ) |
| 269 | return false; |
| 270 | |
| 271 | V_strncat( pchPEMData, pchSuffix, cubPEMData ); |
| 272 | V_strncat( pchPEMData, "\r\n", cubPEMData ); |
| 273 | if ( pcubPEMData ) |
| 274 | *pcubPEMData = V_strlen( pchPEMData ) + 1; |
| 275 | } |
| 276 | |
| 277 | return true; |
| 278 | } |
| 279 | |
| 280 | CCryptoKeyBase::~CCryptoKeyBase() {} |
| 281 | |