1 /* 2 * Copyright (c) 2016 Thomas Pornin <pornin@bolet.org> 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining 5 * a copy of this software and associated documentation files (the 6 * "Software"), to deal in the Software without restriction, including 7 * without limitation the rights to use, copy, modify, merge, publish, 8 * distribute, sublicense, and/or sell copies of the Software, and to 9 * permit persons to whom the Software is furnished to do so, subject to 10 * the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be 13 * included in all copies or substantial portions of the Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 19 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 20 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 * SOFTWARE. 23 */ 24 25 #include "inner.h" 26 27 /* 28 * This file contains the encoded OID for the standard hash functions. 29 * Such OID appear in, for instance, the PKCS#1 v1.5 padding for RSA 30 * signatures. 31 */ 32 33 static const unsigned char md5_OID[] = { 34 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05 35 }; 36 37 static const unsigned char sha1_OID[] = { 38 0x2B, 0x0E, 0x03, 0x02, 0x1A 39 }; 40 41 static const unsigned char sha224_OID[] = { 42 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x04 43 }; 44 45 static const unsigned char sha256_OID[] = { 46 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01 47 }; 48 49 static const unsigned char sha384_OID[] = { 50 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02 51 }; 52 53 static const unsigned char sha512_OID[] = { 54 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03 55 }; 56 57 /* see inner.h */ 58 const unsigned char * 59 br_digest_OID(int digest_id, size_t *len) 60 { 61 switch (digest_id) { 62 case br_md5_ID: 63 *len = sizeof md5_OID; 64 return md5_OID; 65 case br_sha1_ID: 66 *len = sizeof sha1_OID; 67 return sha1_OID; 68 case br_sha224_ID: 69 *len = sizeof sha224_OID; 70 return sha224_OID; 71 case br_sha256_ID: 72 *len = sizeof sha256_OID; 73 return sha256_OID; 74 case br_sha384_ID: 75 *len = sizeof sha384_OID; 76 return sha384_OID; 77 case br_sha512_ID: 78 *len = sizeof sha512_OID; 79 return sha512_OID; 80 default: 81 *len = 0; 82 return NULL; 83 } 84 } 85